Faire une boucle en PHP
JB_A
Messages postés
301
Date d'inscription
Statut
Membre
Dernière intervention
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis sur Joomla et je voudrais modifier un template de menu.
je voudrais que PHP affiche le contenu d'une table en sachant que :
$numerodelelementparent = $mitem->parent;
$element = $mitem->name;
$txt = '<table border="1" cellpadding="0" cellspacing="0"><tr>';
quel est la syntaxe à utiliser afin de dire : tant que $numerodelelementparent est identique, créer une nouvelle ligne ($txt = $txt.'<td>'. $element.'</td>';)
Merci par avance de vos réponses
Je suis sur Joomla et je voudrais modifier un template de menu.
je voudrais que PHP affiche le contenu d'une table en sachant que :
$numerodelelementparent = $mitem->parent;
$element = $mitem->name;
$txt = '<table border="1" cellpadding="0" cellspacing="0"><tr>';
quel est la syntaxe à utiliser afin de dire : tant que $numerodelelementparent est identique, créer une nouvelle ligne ($txt = $txt.'<td>'. $element.'</td>';)
Merci par avance de vos réponses
A voir également:
- Faire une boucle en PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Pc qui s'allume et s'éteint en boucle - Forum Virus
10 réponses
$identique = $numerodelelementparent; $txt = ""; while($numerodelelementparent == $identique) { $txt .= "$txt<td>$element</td>"; // lire le suivant élément et faire bouger $numerodelelement à la fin }
$txt = '<table border="1" cellpadding="0" cellspacing="0"><tr>'; while($numerodelelementparent==$numerodelelementparent_old){ $numerodelelementparent_old=$numerodelelementparent; //memorisation ancienne valeur $numerodelelementparent = $mitem->parent; $element = $mitem->name; $txt .= '<td>'. $element.'</td>'; } $txt .='</tr>';
Merci pour vos réponses, néanmoins, cela ne fonctionne pas comme prévu.
Cas 1 : c'est long puis il y a un message d'erreur
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 75497464 bytes) in D:\wamp\www\actionpositive\modules\mod_mainmenu\legacy.php on line 186
Cas 2 : c'est rapide mais n'affiche rien
Cas 3 : Cas 2 mais avec les variables à l'extérieures
Fatal error: Maximum execution time of 30 seconds exceeded in D:\wamp\www\site1\modules\mod_mainmenu\legacy.php on line 179
Merci de vos réponses
Cas 1 : c'est long puis il y a un message d'erreur
$identique = $mitem->parent; $txt = ""; while($mitem->parent == $identique) { $txt .= "$txt<td>$element</td>"; // lire le suivant élément et faire bouger $numerodelelement à la fin }
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 75497464 bytes) in D:\wamp\www\actionpositive\modules\mod_mainmenu\legacy.php on line 186
Cas 2 : c'est rapide mais n'affiche rien
while($parent==$identique){ $parent=$mitem->parent; $identique = $parent; $element = $mitem->name; $txt .= '<td>'. $element .'</td>'; }
Cas 3 : Cas 2 mais avec les variables à l'extérieures
$parent=$mitem->parent; $identique = $parent; $element = $mitem->name; while($parent==$identique){ $txt .= '<td>'. $element .'</td>'; }
Fatal error: Maximum execution time of 30 seconds exceeded in D:\wamp\www\site1\modules\mod_mainmenu\legacy.php on line 179
Merci de vos réponses
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En fait, je ne l'avais pas précisé mais dans les 3 cas, après "}", j'ai :
@ +
echo $txt= $txt.'</tr></table></td>';
@ +
while($parent==$identique){ $identique = $parent; //il faut mémoriser le contenu de la variable $parent avant de la modifier $parent=$mitem->parent; //cette ligne va modifier la variable $parent $element = $mitem->name; $txt .= '<td>'. $element .'</td>'; }
Je viens d'essayer mais rien ne s'affiche.
Alors que si je remplace le code des précédents messages par :
Il n'y a pas de problème, les éléments s'affiche bien et $parent affiche bien un "0" pour les parents et le numéro des parents, pour les enfants.
Les éléments s'affiche sauf que les enfants ne sont pas regroupées par parent d'appartenance mais affichés les un en dessous des autres.
Mon but est de regrouper tous les enfants appartenant à un même parent, dans un même tableau.
Et surtout de pouvoir les afficher.
Alors que si je remplace le code des précédents messages par :
$txt = $txt.'<tr><td><a href="' . $mitem->url . '" IDParent="'.$parent.'" class="' . $menuclass . '"'>' . $mitem->name . ' (ID enfant='.$mitem->id.')</a></td></tr>';
Il n'y a pas de problème, les éléments s'affiche bien et $parent affiche bien un "0" pour les parents et le numéro des parents, pour les enfants.
Les éléments s'affiche sauf que les enfants ne sont pas regroupées par parent d'appartenance mais affichés les un en dessous des autres.
Mon but est de regrouper tous les enfants appartenant à un même parent, dans un même tableau.
Et surtout de pouvoir les afficher.
//initialisation qui va permettre de rentrer la première fois dans la boucle et de donner une valeur de départ à $parent $parent=$mitem->parent; $identique = $parent; //compteur pour eviter de tomber dans une boucle infinie et la fatal error $i=0; while($parent==$identique){ $i++; if ($i>50) exit; //sortie de boucle si infinie $identique = $parent; //il faut mémoriser le contenu de la variable $parent avant de la modifier //mais il faut qu'a chaque boucle il y ait une instruction qui vienne changer qq chose à l'objet $item //$item-> ? = ??? $parent=$mitem->parent; //cette ligne va modifier la variable $parent $element = $mitem->name; $txt .= '<td>'. $element .'</td>'; }
c'est normal, as tu tenu compte des commentaires que je t'ai mis ?
il faut qu'a chaque passage de la boucle quelque chose change sinon boucle infinie
il faut qu'a chaque passage de la boucle quelque chose change sinon boucle infinie
//initialisation qui va permettre de rentrer la première fois dans la boucle et de donner une valeur de départ à $parent $parent=$mitem->parent; $identique = $parent; //compteur pour eviter de tomber dans une boucle infinie et la fatal error $i=0; while($parent==$identique){ $i++; if ($i>50){ echo "Boucle infine compteur de boucle = ".$i; exit; //sortie de boucle si infinie } $identique = $parent; //il faut mémoriser le contenu de la variable $parent avant de la modifier /////// mais ici, il faut qu'a chaque boucle il y ait une instruction qui vienne changer qq chose à l'objet $item //$item-> ? = ??? $parent=$mitem->parent; //cette ligne va modifier la variable $parent $element = $mitem->name; $txt .= '<td>'. $element .'</td>'; }