Rechercher : dans
Par :

[PhP]Boucle infinie ???

Dernière réponse le 23 jan 2006 à 11:16:09 ZIG1, le 20 jan 2006 à 16:08:11 
 Signaler ce message aux modérateurs

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 ..:::ZIG1:::..

Meilleures réponses pour « [PhP]Boucle infinie ??? » dans :
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...
VBScript - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (VBScript associe le mot clé true à...

1

kilian, le 20 jan 2006 à 23:56:39

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);

Répondre à kilian

2

 ZIG1, le 23 jan 2006 à 11:16:09

Merci ... ..:::ZIG1:::..

Répondre à ZIG1
Collection CommentÇaMarche.net