Requete Mysql et tableaux multidimentionnels

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requete Mysql et tableaux multidimentionnels

Re: Requete Mysql et tableaux multidimentionnels

par realisateur » 16 avr. 2010, 12:41

Bon voila comment j'ai fait. Ce n'est peut-etre pas la meilleure méthode mais ça fait le job.

Code : Tout sélectionner

$sql = "SELECT constructeur.id_constructeur, constructeur.constructeur stock.categorie,stock.modele FROM stock JOIN constructeur ON constructeur.id_constructeur = stock.id_constructeur $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); while ($data = mysql_fetch_array($req) ) { $tableau[$data['constructeur']][$data['categorie']][] = $data['modele']; } if (isset($tableau)) { $i = 1; foreach ($tableau as $cle1=>$valeur1) { if ($i === 1) { $str .= $cle1 . ": "; } else { $str .= "* ".$cle1 . ": "; } $i++; $j = 1; foreach ($valeur1 as $cle2=>$valeur2) { if ($j === 1) { $str .= "Cat: ".$cle2 . ": "; } else { $str .= " - Cat: ".$cle2 . ": "; } $j++; foreach ($valeur2 as $cle3=>$valeur3) { $str .= $valeur3. " "; } } } } else { echo "Pas de données a afficher"; } echo "<br>"; echo $str;

Re: Requete Mysql et tableaux multidimentionnels

par Patriboom » 06 avr. 2010, 19:21

Puisque tu parles de bases et de tables, je crois que tu devrais trier tes données directement dans ta requête MySQL. Ensuite, il ne te resterait donc qu'à afficher.
Tu pourrais avoir une requête comme ceci:
SELECT CONS.Constructeur, STOK.Categorie, STOK.Modele FROM Constructeur AS CONS LEFT JOIN stock AS STOK ON STOK.id_constructeur = CONS.id_constructeur ORDER BY Categorie ASC, Modele ASC
ou encore tu peux le faire avec GROUP:
SELECT CONS.Constructeur, STOK.Categorie, STOK.Modele FROM Constructeur AS CONS LEFT JOIN stock AS STOK ON STOK.id_constructeur = CONS.id_constructeur GROUP BY Categorie ORDER BY Modele ASC

Ensuite du récupère tes données par une commande mysql_fetch

Re: Requete Mysql et tableaux multidimentionnels

par realisateur » 05 avr. 2010, 23:15

Merci pour ta réponse,
Je n'ai pas encore trouvé ce que je cherche mais j'avance et je commence à mieux comprendre les tableaux

Re: Requete Mysql et tableaux multidimentionnels

par MaximusCMS » 02 avr. 2010, 14:52

Salut, en fait ton code est incomplet

tu désires afficher tes données selon un ordre précis, il te faut donc les trier au préalable

regarde du coté de la fonction usort( ) qui te permettra d'effectuer un tri de manière précise comme toi tu le désires
http://php.net/manual/fr/function.usort.php

Nota: ce n'est pas une chose très facile à faire quand on débute, mais les tableaux sont un très bon apprentissage à faire

Requete Mysql et tableaux multidimentionnels

par realisateur » 02 avr. 2010, 14:45

Bonjour à tous,

Grand débutant en PHP et MySQL, je vous lis depuis quelques semaines et j'ai trouvé pas mal de réponses à mes interrogations.
Aujourd'hui je trouve des réponses ici : http://jmolline.free.fr/tutos/comprendre_tableaux.html et http://www.phpdebutant.org/article11.php mais je ne comprends pas.
Voici mon problême :

A partir de mes tables çi-dessous je cherche la requete ainsi que la déclaration d'array qui va permettre d'avoir le résultat suivant :

Renault
Citadine : 1) Clio, 2) Twingo
Berlines : 1) Megane 2) Laguna

Citroen
Citadine : 1) Saxo
Monospace : 1) Picasso

Mes tables :

Constructeur
+---------------------+---------------------+
| id_constructeur | Constructeur |
+---------------------+---------------------+
| 1 | Renault |
+---------------------+---------------------+
| 2 | Citroen |
+---------------------+---------------------+

stock
+---------------------+---------------------+---------------------+
| id_constructeur | Categorie | Modele |
+---------------------+---------------------+---------------------+
| 1 | Citadine | Clio |
+---------------------+---------------------+---------------------+
| 1 | Citadine | Twingo |
+---------------------+---------------------+---------------------+
| 1 | Berline | Megane |
+---------------------+---------------------+---------------------+
| 2 | Citadine | Saxo |
+---------------------+---------------------+---------------------+
| 2 | Monospace | Picasso |
+---------------------+---------------------+---------------------+
| 1 | Berline | Laguna |
+---------------------+---------------------+---------------------+

sur ce site http://www.phpdebutant.org/article11.php j'ai trouvé ce code :

Code : Tout sélectionner

// $constructeur contient la gamme Renault et Citroen // on se contentera de deux constructeurs : ça suffira pour l'exemple :) $constructeur = array(); $constructeur['Renault']['Citadines'] = array('Twingo','Clio'); $constructeur['Renault']['Berlines'] = array('Megane','Laguna'); $constructeur['Renault']['Monospaces'] = array('Scenic','Espace'); $constructeur['Citroen']['Citadines'] = 'Saxo'; $constructeur['Citroen']['Berlines'] = array('Xsara','Xantia'); $constructeur['Citroen']['Monospaces'] = array('Picasso','Evasion'); function afficher_tableau($tableau) { // on fait une boucle qui lit les éléments du tableau foreach ($tableau as $cle=>$valeur) { // si l'un des éléments est lui même un tableau // alors on applique la fonction à ce tableau if(is_array($valeur)) { // on affiche le nom de la clé et // le début d'une liste pour // décaler le contenu vers la droite echo $cle.' : <ul>'; // ici se réalise la récursivité // c'est à dire qu'on applique la fonction // à l'élément en cours car c'est lui aussi un tableau afficher_tableau($valeur); // on ferme la liste echo '</ul>'; } // si ce n'est pas un tableau // alors on affiche le contenu de l'élément else { echo $cle.' = '.$valeur.' <br>'; } } } afficher_tableau($constructeur);
Mais les variables sont déclarées "en dur" dans le code et malgré plusieurs heures de recherche je n'arrive pas à trouver et à creer le tableau qui correspond.

J'espère que vous pourez m'aider
Je vous remercie