Les Allergies
Alimentaires
Posez votre question Signaler

[PhP]Boucle infinie ??? [Résolu]

ZIG1 1137Messages postés 7 juillet 2000Date d'inscription - Dernière réponse le 23 janv. 2006 à 11:16
Bonjour,

J'ai écris un code mais j'ai le droit a une fatal error ...
J'ai peur d'avoir écrit une boucle infinie ... je voudrais votre avis
$SR='';
				for($serviceRecept;strlen($serviceRecept)>=3;substr($serviceRecept, 0, -2)){
$s=substr($serviceRecept,-2,1);
$QueryService = faire_requete("SELECT * FROM folder WHERE id=$s");
$ResultService = mysql_num_rows($QueryService);
   for($qf=0;$qf!=$ResultService;$qf++){
      $SR .= mysql_result($QueryService, $qf,"folder");
  }
   if(strlen($serviceRecept)>=3){ 
      $SR .=",";
   }
}


$SR est une variable que je veux remplir
$serviceRecept est une chaine de caractéres de type -1-1-1- où chaque numérique est séparé par un -

Donc l'objectif de ce code est de sortir les "1" un par un pour trouver leur correspondance dans une autre table et de construire une variable SR du type Nom1, Nom2, Nom3, ...

Je ne suis pas trés doué avec les for et je crains qu'il ne génére de boucle infinie
for($serviceRecept;strlen($serviceRecept)>=3;substr($serviceRecept, 0, -2)){

Donc j'utilise une variable existante ($serviceRecept)
Tant que sa longueur est supérieur ou égale à 3 la boucle doit continuer
J'enléve les deux dernières caractéres à ma variable $serviceRecept ...

Est ce que j'ai écrit ??
Qu'en pensez vous ??
Merci d'avance pour votre aide
Lire la suite 

[PhP]Boucle infinie »

2 réponses
Réponse
+0
moins plus
Non ça ne va pas parce que substr() renvoie une chaîne mais ne modifie pas du tout la chaine passée en paramètre, donc ta chaine reste intacte après l'execution de substr, donc sa longueur aussi, d'où la boucle infinie.

Si tu veux une solution rapide, prend explode qui transforme une chaine en tableau (en séparant les différents éléments à partir d'une sous-chaine séparatrice).

$id_liste=explode('-', $serviceRecept);
$SR=array();
foreach ($id_liste as $id)
{
        /*Avec explode, si la chaine commence ou fini avec le séparateur, alors
        la premiere et dernière case du tableau seront vide. Si c'est le cas on
        passe ces cases */
        if (!$id){
              continue;
        }
        $req=mysql_query("SELECT * FROM folder WHERE id='$id'");
        $result=mysql_fetch_assoc($req);
      
       /*Bidule est le nom du champs que tu veux récupérer dans ta table
       D'ailleurs si tu n'as qu'un champs à récuperer, tu n'as pas besoin de
       tout prendre dans ta table... */
        $SR[] = $result['bidule'] ;
}
/*On assemble tous les résultats dans une chaine avec la virgule qui lie les éléments */
$SR=implode(',', $SR);
Ajouter un commentaire
Réponse
+0
moins plus
Merci ...
Ajouter un commentaire
Ce document intitulé « [PhP]Boucle infinie ??? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?