Requete SQL sous la forme d'un tableau bidimensionnel
Résolu/Fermé
victorberson
Messages postés
139
Date d'inscription
samedi 19 juillet 2014
Statut
Membre
Dernière intervention
14 août 2019
-
12 août 2019 à 12:37
victorberson Messages postés 139 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 14 août 2019 - 14 août 2019 à 09:40
victorberson Messages postés 139 Date d'inscription samedi 19 juillet 2014 Statut Membre Dernière intervention 14 août 2019 - 14 août 2019 à 09:40
A voir également:
- Requete SQL sous la forme d'un tableau bidimensionnel
- Tableau croisé dynamique - Guide
- Mise en forme conditionnelle excel - Guide
- Tableau ascii - Guide
- Un agent immobilier a préparé un diaporama pour présenter une maison à vendre. appliquez la mise en forme de la première diapositive à toutes les autres. quel est le code du portail ? ✓ - Forum Powerpoint
- Tableau word - Guide
1 réponse
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
12 août 2019 à 14:15
12 août 2019 à 14:15
Bonjour,
Pour commencer une petite astuce, si tu écris
Deuxième astuce, en PHP les noms de variables sont variabilisables. À savoir, tu peux écrire
Ces deux éléments combinés font que tout ton switch peut se réduire à :
Ceci dit, l'utilisation de ces multiples variables n'a pas beaucoup d'intérêt, surtout que tu les places déjà dans le tableau $tab. Donc tu peux écrire simplement :
Bon, voilà pour la cosmétique.
Passons maintenant au cœur du problème. Je ne comprends pas bien pourquoi tu effectues ta requête en deux étapes alors que toutes les infos sont dans la même table. Tu peux simplement exécuter
Je te propose donc tout simplement :
Xavier
Pour commencer une petite astuce, si tu écris
$tableau[] = $valeur, PHP va comprendre tout seul qu'il faut mettre $valeur dans la prochaine « case » disponible du tableau. Tu n'as donc pas besoin de t'embêter à gérer les $i.
Deuxième astuce, en PHP les noms de variables sont variabilisables. À savoir, tu peux écrire
$variable1 = 'truc'aussi bien que
$i = 1; $variable$i = 'truc'.
Ces deux éléments combinés font que tout ton switch peut se réduire à :
$i = promoActuelle($row["promo"]); $IE$i[] = $row2["nom_matiere"];
Ceci dit, l'utilisation de ces multiples variables n'a pas beaucoup d'intérêt, surtout que tu les places déjà dans le tableau $tab. Donc tu peux écrire simplement :
$i = promoActuelle($row["promo"]); $tab[$i][] = $row2["nom_matiere"];et supprimer les appellations $IEx de ton code.
Bon, voilà pour la cosmétique.
Passons maintenant au cœur du problème. Je ne comprends pas bien pourquoi tu effectues ta requête en deux étapes alors que toutes les infos sont dans la même table. Tu peux simplement exécuter
SELECT promo, nom_matiere FROM promo_matiere;, cela te donnera toutes les matières et la promo qui va avec. Comme ça on peut parcourir le résultat en une seule boucle, ce qui évite de se faire des nœuds au cerveau.
Je te propose donc tout simplement :
$tab = array(); $sql2 = "SELECT promo, nom_matiere FROM promo_matiere"; if($result2 = mysqli_query($link, $sql2)) { if(mysqli_num_rows($result2) > 0) { while($row2 = mysqli_fetch_assoc($result2)) { // On récupère les valeurs $promo = promoActuelle($row2["promo"]); $matiere = $row2["nom_matiere"]; // On crée le sous tableau la première fois qu'on rencontre cette promo if (!isset($tab[$promo])) $tab[$promo] = array(); // On insère la matière dans le tableau voulu. $tab[$promo][] = $matiere; } } } foreach ($tab as $promo => $matieres) { echo "<b>Promo $promo</b><br />"; foreach ($matieres as $matiere) { echo $matiere . "<br/>"; } }
Xavier
12 août 2019 à 20:19
J'ai rarement eu une aussi belle réponse. Ca répond parfaitement a mon besoin et j'ai appris pleins de truc !
Merci encore
13 août 2019 à 12:09
J'ai essayé ce code mais ca ne fonctionne pas comme je le voudrais...
Une idée?
13 août 2019 à 13:09
13 août 2019 à 14:45
14 août 2019 à 09:38
En effet, c'est à cause de ces lignes :
Tu testes sur $tab mais tu modifies $tab2.
Xavier