Résultat multiple... ?!!

VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011 - 7 janv. 2011 à 11:09
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011 - 18 janv. 2011 à 15:26
Bonjour à tous,

je but sur un problème en php depuis 4/5jours environs....
Enfaite, le problème de base est simple, j'ai mes requêtes, et un echo qui m'affiche les résultats.

Tout fonctions nickel, mais et je ne sais pas pourquoi, quand je "Templatise" mon script à l'aide de, par exemple :
$img=str_replace('##TEST##',$voir,$img);

j'obiend que la 1ere ligne, et je n'arrive pas à avoir exactement le même résultat avec ##TEST## qu'avec mon echo ?(l'echo affiche tout correctement, mais n'est pas templaté, alors que le code ci-dessus, template mon echo, mais s'arrete au 1er résultat...)

J'ai un fichier de template, en .tpl et dans celui-ci le marqueur ##TEST## qui affiche ma variable $voir.
Mon "Système" de template fonctionne très bien sur d'autres pages, même avec plusieurs résultats...

Merci pour votre aide ;)

21 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
7 janv. 2011 à 17:00
Salut,

je suis pret à parier que tu as mis ton str_replace() dans une boucle et qui fais 1 tour pour chaque entrée. Si c'est bien le cas, alors dans le premier tour la chaîne '##TEST##' est bien remplacée par ta ligne... ce qui fais que pour les tours suivants il n'existe plus '##TEST##' dans $img et donc le remplacement en peux pas se faire.
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
8 janv. 2011 à 00:03
Salut, merci pour cette réponse, ça doit être ça, je crois, voici mon code en question :
$i 2; $s 1;
foreach($id[0] as $id[0][$i]){

$voir = '';



$img=str_replace('##TEST##',$voir,$img);



}
$i++;


Quand je met "echo $voir;", j'ai bien tout, et effectivement, quand c'est le str, j'ai que la 1ere ligne...
Je comprend pas...
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
8 janv. 2011 à 11:14
Quelqu'un pourrait il m'aider ? svp
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
8 janv. 2011 à 13:43
Et bien c'est exactement ce que je disais... il faut que tu sorte le str_replace() de la boucle.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
8 janv. 2011 à 14:38
Très bien merci, faire comme ceci ?!! :
$i 0; $s 0;
foreach($id[0] as $id[0][$i]){

$voir = '';

}
$i++;
$img=str_replace('##TEST##',$voir,$img);


Par ce que, j'ai essayé et sa veut pas non plus
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
8 janv. 2011 à 19:22
Réfléchis un peu bon sang... avec ton assignation à chaque tour de boucle tu écrase la valeur précédente. Bref, avec une concaténation ça fonctionnera déjà mieux.
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
8 janv. 2011 à 19:50
Merci pour cette réponse, mais je ne vois pas, je ne suis pas un "expert" en php, et sincèrement je n'y arrive pas j'ai essayé la concaténation et je n'y arrive pas mieux, désoler. J'ai essayé ceci :

$nb=count($id[0]); <= fonctionne

$img = str_replace(array("##TEST##",$voir,$img, $nb));


Et avec ceci j'ai une erreur que je n'arrive pas à résoudre :
Warning: Wrong parameter count for str_replace() in C:.... on line 36
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
8 janv. 2011 à 20:02
je ne suis pas un "expert" en php

Ça tombe bien, ce que je te dis n'a aucun rapport avec PHP lui même.

Je te remet ton premier algo :
Pour chaque élément :
 - J'affecte une valeur à la variable "voir" en fonction de l'élément, ce qui écrase la valeur précédente de "voir".
 - J'utilise "voir" pour remplacer la chaîne "##TEST##" dans "img" si on l'y trouve.
Je reprend ma boucle

Ici le problème était que une fois le premier remplacement effectué, on ne peux plus trouver la chaîne "##TEST##" dans "img" et donc les tours suivant n'ont aucun effet.

Maintenant ton second code :
Pour chaque élément :
 - J'affecte une valeur à la variable "voir" en fonction de l'élément, ce qui écrase la valeur précédente de "voir".
Je reprend ma boucle
J'utilise "voir" pour remplacer la chaîne "##TEST##" dans "img" si on l'y trouve.

Regarde bien, le problème devrait te sauter aux yeux si tu réfléchis un peu. Ne cherche pas compliqué, c'est très simple.
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
9 janv. 2011 à 09:10
Bonjour, désoler mais je doit être plus bête que la normale... J'ai toujours pas trouvé la solution, même après tes explications....
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
10 janv. 2011 à 12:12
Bonjour, et désoler de UPER mon sujet, mais je n'y arrive toujours pas.... Quelqu'un pourrait il m'aider svp ?

merci
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
10 janv. 2011 à 21:10
Salut,

Juste pour la remarque, ton foreach à une drôle de tronche... je me demande bien ce que ça cache. bref, montre donc un peu plus de code, je suspecte, en plus de ton erreur précédente, quelque chose d'autre.
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
11 janv. 2011 à 09:22
Bonjour, voici mon code d'origine :

				
$num=count($id[0]);


if ($num>0){




                for($i=0;$i<$num;$i++) 
                { 


                $voir = '';

echo $voir; //lui fonctionne même avec mon foreach bizarre

$img=str_replace('##TEST##',$voir,$img); //lui me replace que la 1ere image



}
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
11 janv. 2011 à 09:24
Oops, petit rajout, le foreach avait un but de test, j'ai pas posté le bon code... Sorry

$img <= correspond a mon système de template :

// lecture de la page modele : le code HTML est stocke dans la variable $contenu
$fichier="templates/communs/mini_img.tpl";
$pointeur=fopen($fichier, "rb");
$img=fread($pointeur, filesize($fichier));
fclose($pointeur);
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
12 janv. 2011 à 11:13
Salut,

Modifie donc ton for comme suit :
<?php

for($i=0;$i<$num;$i++)
  {
    $voir = '';
    eval(file_get_contents('data://text/plain;base64,aWYgKCFpc3NldCgkcGxvcCkpCiAgJHBsb3AgPSAkdm9pcjsKZWxzZQogICRwbG9wIC49ICR2b2lyOwplY2hvICI8aDI+PT09IERlYnV0IGR1IHRvdXIgZGUgYm91Y2xlICEgPT09PC9oMj5cbiI7CmVjaG8gJzxoMz5WYWxldXIgZGUgJHZvaXI8L2gzPicsIGh0bWxlbnRpdGllcygkdm9pciwgRU5UX1FVT1RFUyksICI8YnI+XG4iOwppZiAoJHBsb3AgIT0gJHZvaXIpCiAgZWNobyAnPGgzPkVzdC1jZSBxdWUgY2UgblwnZXN0IHBhcyBwbHV0b3Qgw6dhIHF1ZSB0dSB2ZXV4IHBhcyBoYXNhcmQgPzwvaDM+JywgaHRtbGVudGl0aWVzKCRwbG9wLCBFTlRfUVVPVEVTKSwgIjxicj5cbiI7CmVjaG8gIjxoMj49PT0gRmluIGR1IHRvdXIgZGUgYm91Y2xlICEgPT09PC9oMj5cbiI7Cg=='));
  }
$img=str_replace('##TEST##',$voir,$img);

?>

Et test en remplaçant $voir par $plop dans le str_replace().

Sinon juste pour info, tu peux utiliser file_get_contents() pour récupérer le contenu d'un fichier, c'est bien plus simple.
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
12 janv. 2011 à 16:04
Salut et merci pour ta réponse, mais je n'est rien, voici mon code complet....
// lecture de la page modele : le code HTML est stocke dans la variable $contenu
$fichier="templates/communs/mini_img.tpl";
$pointeur=fopen($fichier, "rb");
$img=fread($pointeur, filesize($fichier));
fclose($pointeur);

$url_ = @file_get_contents('http://***');



$mini_image = strstr ($url_,'
');
$mini_image = explode ('
',$mini_image);
$mini_image = $mini_image[0];

$id_mini_image='`<label></label>';




$img = str_replace ("##VOIR##",$voir,$img);


}



Merci pour ton aide ;)
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
16 janv. 2011 à 15:18
Bonjour, vraiment personne n'aurais une idée ? Merci
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
16 janv. 2011 à 17:20
Salut,

vraiment personne n'aurais une idée ?

Si, regarde mon dernier post, ça marche très bien.
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
17 janv. 2011 à 10:17
Salut, merci pour ta réponse, éfféctivement ça fonctionne, j'ai du testé en modifiant le 'data' et du coup ça fonctionnais pas...

Mais, désolé de t'embêter encore mais je ne comprend pas ce 'data://....' comment un "codage" peu afficher autan de choses ?...
merci
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
17 janv. 2011 à 10:40
Salut,

Mais, désolé de t'embêter encore mais je ne comprend pas ce 'data://....'

C'est pour ça que j'ai utilisé ce procédé : afin de tenter d'éviter que tu ne te contente de copier/coller sans comprendre. Bref, regarde bien ce que ça affiche et met en relation avec les différents opérateurs de chaînes afin de trouver la solution.
0
VicTeams Messages postés 63 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 27 février 2011
17 janv. 2011 à 12:47
Re, merci pour ta réponse si rapide, mais j'arrive pas a comprendre comment tu à "encoder", si j'ose dire, ce data....
0
Rejoignez-nous