SQL + PHP : LEFT JOIN dans un tableau PHP
Résolu
le_joker_fou
Messages postés
765
Date d'inscription
Statut
Membre
Dernière intervention
-
le_joker_fou Messages postés 765 Date d'inscription Statut Membre Dernière intervention -
le_joker_fou Messages postés 765 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'exécute la requête suivante
Je cherche à obtenir le résultat dans un tableau PHP de ce type
Seulement je ne trouve aucune fonction SQL qui le fait ou aucune fonction PHP. Si quelqu'un peut me venir en aide.
Merci.
J'exécute la requête suivante
SELECT table1.id, table1.nom, table2.id_table1, table2.nom FROM table1 LEFT JOIN table2 ON (table2.id_table1=table1.id);
Je cherche à obtenir le résultat dans un tableau PHP de ce type
0 => Table 1 => id => nom => Table 2 => id_table1 => nom 1 => Table 1 => id => nom => Table 2 => id_table1 => nom 2 => ...
Seulement je ne trouve aucune fonction SQL qui le fait ou aucune fonction PHP. Si quelqu'un peut me venir en aide.
Merci.
A voir également:
- SQL + PHP : LEFT JOIN dans un tableau PHP
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Logiciel sql - Télécharger - Bases de données
- Jointure sql ✓ - Forum MySQL
- Requete sql pix - Forum PHP
5 réponses
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);
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
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.
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