Vous devez être connecté et donner une réaction ( Like ) au sujet pour débloquer les liens de téléchargements...
Sign in to follow this  
Nyx

Sujet à réécrire : HTML RIP [PHP] Les boucles imbriquées.

Recommended Posts

Bonjour à tous,

 

Nous allons étudier les boucles imbriquées en PHP.Je suis actuellement en train de coder un ItemShop en PHP, et voici un petit tuto qui pourra peut-être vous aider.On va essayer de comprendre le fonctionnement d'une boucle imbriquée (ma foi simple), pour lister les catégories de l'ItemShop et les objets de chaque catégorie, avec une mise en page minime.Le but:Faire une liste de type :

CATEGORIE1

  • ITEM 1
  • ITEM 2

 

Par rapport à un ItemShop stocké dans une base de donnée.Attention, les codes qui vont suivre ne seront pas codés en PDO, mais je vous proposerai plus-tard une version alternative avec PDO. Donc, premièrement, on ouvre un document PHP, et à l'endroit où vous voulez afficher votre ItemShop on va commencer par se connecter à la base de donnée.

<?php// Configurez les variables de connexion ci dessous.$host = ""; // Plus souvent lolcalhost.$user = ""; // Plus souvent root.$pwd = ""; // Si vous êtes en local laissez vide.$dbname="nombasededonnée";   $connexion = mysql_connect($host, $user, $pwd); // La on teste la connexion if ( ! $connexion )   die ("Erreur: Connexion Impossible!");   // Si c'est bon, on se connecte  mysql_select_db($dbname) or die ("Erreur SQL");   
 

Jusque là, rien de bien compliqué.On va maintenant lancer une requête qui va lister toutes les catégories d'items.

$sql = 'SELECT * FROM cat_is ORDER BY id ';$req = mysql_query($sql) or die('Erreur SQL :'.$sql.'
'.mysql_error());
Toujours vivant ? J'espère car c'est loin d'être finit. On va ensuite assigner un tableau avec les résultats de la requête SQL. Ensuite on lance une boucle qui va afficher les catégories comme on l'avait souhaité dit plus haut, c'est à dire dans les balises. Voilà ce que ça donne :
while($data = mysql_fetch_assoc($req)) {$catid = $data['id'];$catname = $data['nom'];    echo ''.$catname.'
';}
Jusque là c'est plutôt facile à comprendre, et c'est ici que ça se complique car la boucle est bien jolie, mais c'est pas ce qu'on veut.Voici la base de notre départ :
>while($data = mysql_fetch_assoc($req)) {$catid = $data['id'];$catname = $data['nom'];    echo ''.$catname.'';    echo '</pre>
<ul>';// C'est ici qu'on va insérer la deuxième boucle    echo '</
Vous commencez à comprendre comment on va procéder ?C'est partit pour écrire la deuxième requête SQL et la deuxième boucle qui vont lister les items !
$sql2 = 'SELECT * FROM itemshop WHERE cat='.$catid.' AND actif=1 ';//On choisit les objets de la catégorie listée dans la premiere boucle// Et on prend que les actifs.$req2 = mysql_query($sql2) or die('Erreur SQL :'.$sql2.'
'.mysql_error());// Puis on refait une boucle qui liste les objets triés.    while($data2 = mysql_fetch_assoc($req2)) {$itemname = $data2['name_item'];$itemid = $data2['id'];	     echo ''.$itemname.''; // La on les met aussi sous forme de liens.    }
Voilà, c'est quasiment finit! Reste plus qu'à imbriquer la boucle qui liste les objets dans celle qui lise les catégories. Pas compliqué !
>$sql = 'SELECT * FROM cat_is ORDER BY id ';$req = mysql_query($sql) or die('Erreur SQL :'.$sql.'
'.mysql_error());[b]while($data = mysql_fetch_assoc($req)) { // Première boucle$catid = $data['id'];$catname = $data['nom'];    echo ''.$catname.'';    echo '</pre>
<ul>';$sql2 = 'SELECT * FROM itemshop WHERE cat='.$catid.' AND actif=1 ';$req2 = mysql_query($sql2) or die('Erreur SQL :'.$sql2.'
'.mysql_error());    while($data2 = mysql_fetch_assoc($req2)) { //Deuxième boucle$itemname = $data2['name_item'];$itemid = $data2['id'];	     echo ''.$itemname.'';	    } // On referme la deuxième boucle  echo '</ul>'; } // On referme la première 
Mais il manque encore un truc: A la fin il faut fermer la connexion à la base de donnée :
mysql_close($connexion);
Voici un récapitulatif :
<?php// Configurez les variables de connexion ci dessous.$host = ""; // Plus souvent lolcalhost.$user = ""; // Plus souvent root.$pwd = ""; // Si vous êtes en local laissez vide.$dbname="nombasededonnée";   $connexion = mysql_connect($host, $user, $pwd); // La on teste la connexion if ( ! $connexion )   die ("Erreur: Connexion Impossible!");   // Si c'est bon, on se connecte  mysql_select_db($dbname) or die ("Erreur SQL");$sql = 'SELECT * FROM cat_is ORDER BY id ';$req = mysql_query($sql) or die('Erreur SQL :'.$sql.'
'.mysql_error());while($data = mysql_fetch_assoc($req)) { // Première boucle$catid = $data['id'];$catname = $data['nom'];    echo ''.$catname.'';    echo '</pre>
<ul>';$sql2 = 'SELECT * FROM itemshop WHERE cat='.$catid.' AND actif=1 ';$req2 = mysql_query($sql2) or die('Erreur SQL :'.$sql2.'
'.mysql_error());    while($data2 = mysql_fetch_assoc($req2)) { //Deuxième boucle$itemname = $data2['name_item'];$itemid = $data2['id'];	     echo ''.$itemname.'';	    } // On referme la deuxième boucle  echo '</ul>'; } // On referme la première bouclemysql_close($connexion); // On se déco de MySQL.
Et oui, c'est finit ! J'espère que vous copie/collerez pas bêtement ces petites portions de codes et que vous ferez un effort pour le comprendre et l'améliorer de votre coté.Bien entendu, je tiens à préciser que c'est mon premier tutoriel, alors soyez indulgent. Et, respectez mon travail, ne vous amusez pas à copier/coller ceci sur d'autres forums.En espérant que ça vous ait été utile.

Share this post


Link to post
Share on other sites

Bonjour,

 

Le partage / tutoriel ici présent doit être réécrit. Le lien de téléchargement est probablement mort... Message automatique de masse...

 

Cordialement,

ASIKOO

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this