SQL + PHP : LEFT JOIN dans un tableau PHP
Résolu/Fermé
le_joker_fou
Messages postés
764
Date d'inscription
mercredi 5 août 2009
Statut
Membre
Dernière intervention
7 août 2014
-
30 nov. 2012 à 10:59
le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 - 3 déc. 2012 à 10:37
le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 - 3 déc. 2012 à 10:37
A voir également:
- SQL + PHP : LEFT JOIN dans un tableau PHP
- Easy php - Télécharger - Divers Web & Internet
- Sql server recovery - Télécharger - Gestion de données
- Get_magic_quotes_gpc php 8 ✓ - Forum PHP
- Logiciel sql - Télécharger - Bases de données
- Requête sql date supérieure à ✓ - Forum Programmation
5 réponses
Utilisateur anonyme
30 nov. 2012 à 17:24
30 nov. 2012 à 17:24
Beaucoup plus compliqué que je ne l'imaginais, car mysql ne crée pas des noms de colonnes en table.champ... Il a fallu faire autrement.
Je suppose que les noms de tables sont sans caractères spéciaux, et en particulier sans espaces.
Je l'ai fait avec PDO
Je suppose que les noms de tables sont sans caractères spéciaux, et en particulier sans espaces.
Je l'ai fait avec PDO
$table1="table1"; $table2="table2"; // on va créer une table avec les noms des champs dans l'ordre où ils seront récupérés par le fetch : il faut donc respecter l'ordre des tables du SELECT $listechamps=array(); // récupère noms des champs de la 1ère table $res = $pdo->query("SHOW COLUMNS FROM $table1"); while ($ligne=$res->fetch() ) { $listechamps[]=array($table1,$ligne['Field']); } // ajoute noms des champs de la 2ème table $res = $pdo->query("SHOW COLUMNS FROM $table2"); while ($ligne=$res->fetch() ) { $listechamps[]=array($table2,$ligne['Field']); } $req= "SELECT $table1.*,$table2.* FROM $table1 LEFT JOIN $table2 ON $table2.id_table1=$table1.id"; $res=$pdo->query($req); $tbl=array(); // la table à créer $nligne=0; while ($ligne=$res->fetch(PDO::FETCH_NUM)) { for ($k=0;$k<count($ligne);$k++) $tbl[$nligne][$listechamps[$k][0]][$listechamps[$k][1]]=$ligne[$k]; $nligne++; } var_dump($tbl);
Utilisateur anonyme
Modifié par le père. le 30/11/2012 à 11:15
Modifié par le père. le 30/11/2012 à 11:15
Bonjour
Sauf faute de frappe...
J'ai supposé, comme il n'y avait rien à gauche des => dans => id, que tu ne voulaias pas des tableaux associatifs à ce niveau là, sinon, il suffit d'ajouter les "id =>' et autres 'nom=>' aux bons endroits
Sauf faute de frappe...
$req= "SELECT table1.id, table1.nom, table2.id_table1, table2.nom FROM table1 LEFT JOIN table2 ON (table2.id_table1=table1.id)"; $tbl=array(); $res=mysql($req) or die(mysql_error()) ; // ou équivalent PDO while ($ligne=mysql_fetch_array($res) { $tbl[]=array( "Table 1"=> array($ligne['table1.id'],$ligne['table1.nom']), "Table 2"=> array($ligne['table2.id_table1'],$ligne['table2.nom'])); } // while
J'ai supposé, comme il n'y avait rien à gauche des => dans => id, que tu ne voulaias pas des tableaux associatifs à ce niveau là, sinon, il suffit d'ajouter les "id =>' et autres 'nom=>' aux bons endroits
le_joker_fou
Messages postés
764
Date d'inscription
mercredi 5 août 2009
Statut
Membre
Dernière intervention
7 août 2014
239
30 nov. 2012 à 12:00
30 nov. 2012 à 12:00
Merci pour la réponse, mais n'y a-t-il aucune méthode pour le faire de manière automatique?
Car là j'ai fais un select de certains champs, mais comment faire si on remplace
Merci de ton aide.
Car là j'ai fais un select de certains champs, mais comment faire si on remplace
table1.id, table1.nom par table1.*???
Merci de ton aide.
Utilisateur anonyme
30 nov. 2012 à 12:18
30 nov. 2012 à 12:18
C'est sûrement possible, mais ça demande un peu plus de réflexion.
En balayant les noms des champs récupérés par un mysql_fetch_assoc et en dissociant au niveau du point.
Je te propose quelque chose dans l'après-midi.
En balayant les noms des champs récupérés par un mysql_fetch_assoc et en dissociant au niveau du point.
Je te propose quelque chose dans l'après-midi.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
le_joker_fou
Messages postés
764
Date d'inscription
mercredi 5 août 2009
Statut
Membre
Dernière intervention
7 août 2014
239
3 déc. 2012 à 10:37
3 déc. 2012 à 10:37
Bonjour,
Merci à toi pour ce script, je sens qu'il va en aidé plus d'un.
Encore merci de ton aide.
Merci à toi pour ce script, je sens qu'il va en aidé plus d'un.
Encore merci de ton aide.