Problème boucle foreach - Forum PHP

A voir également:Problème boucle foreachBoucle foreach java - Forum - Java Problème boucle foreach et concaténation ✓ - Forum - PHP Comment mettre des id sur une boucle foreach en php ? ✓ - Forum - Webmaster Boucle foreach sur un type Object ✓ - Forum - Programmation [PhP] Test avant de faire une boucle foreach ✓ - Forum - PHP

Bonjour,


J'ai un soucis avec deux boucles foreach imbriquées.

J'essaie de construire un menu dynamique, avec des services et des sous services.
Dans la base de donnée, chaque sous services est lié à un service

J'ai 7 sous services au total.
Le service 1 possède 5 sous-services
Le service 2 possède 2 sous-services.

Or, dans le services 2, un seul sous services s'affiche. Je ne comprend pas où j'ai fait la faute.

<li>Services</li>     <li>         <?php             foreach ( $services as $s ) : ?>                 <ul>                     <li>                         <?php // nom du service                         echo $s['nom']; ?>                    </li>                      <li>                         <ul>                             <?php                                 foreach ( $ss_services as $ss ) :                                     if ( $s['id'] == $ss['idServices'] ) :?>                                         <li><?php echo $ss['nom']; ?></li>                                     <?php else :                                         break;                                     endif;                                 endforeach; ?>                         </ul>                     </li>                 </ul>             <?php endforeach; ?>     </li> </ul>

Forum

A voir également:Problème boucle foreachBoucle foreach java - Forum - Java Problème boucle foreach et concaténation ✓ - Forum - PHP Comment mettre des id sur une boucle foreach en php ? ✓ - Forum - Webmaster Boucle foreach sur un type Object ✓ - Forum - Programmation [PhP] Test avant de faire une boucle foreach ✓ - Forum - PHP

Web: www.shapebootstrap.net

2 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour
Comment récupères tu les données ?
Via des requêtes sql?
Peux tu nous montrer..

Reply
réponses:
  • auteur

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bon, déjà... ta structure de bdd n'est pas évolutive.
Tu ne pourras toujours n'avoir que deux niveaux ( service / sous-service ). Si jamais tu voulais ajouter des niveaux supplémentaires, ta structure actuelle ne le permet pas.

Admettons que ça soit donc voulu et toujours comme ça.
Tu pourrais retravailler un peu le résutat de tes requêtes pour ensuite les manipuler plus facilement.
par exemple :

 /** * Fonction qui génère un array associatif par "service" pour les sous-services */ public function getAll_sous_services_array () // sous-services { 	$result = $this->getAll_sous_services(); 	$res = array(); 	foreach($result as $R){ 		$res[$R['idServices'][] = $R; 	} 	return $res; } 

et dans ta page
 <ul> <li>Services</li>     <li>         <?php 			$ss_services = $tonObjet->getAll_sous_services_array(); //ligne à adapter à ton code 			             foreach ( $services as $s ){  				$serviceID = $s['id']; 			?>                 <ul>                     <li>                         <?php // nom du service                         echo $s['nom']; ?>                    </li>                      <li>                         <ul>                             <?php 							if(!empty($ss_services[$serviceID])){                                 foreach ( $ss_services[$serviceID] as $ss ){                                    echo "<li>" . $ss['nom'] ."</li>"; 							    } //endforeach;  							} 							?>                         </ul>                     </li>                 </ul>             <?php } ?>     </li> </ul> 

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed