Comment ajouter des colonnes dans un tableau mysql trié
Résolu/Fermé
Sebas22
Messages postés
110
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
24 juillet 2018
-
24 janv. 2017 à 14:49
Sebas22 Messages postés 110 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 24 juillet 2018 - 26 janv. 2017 à 15:46
Sebas22 Messages postés 110 Date d'inscription jeudi 13 mai 2010 Statut Membre Dernière intervention 24 juillet 2018 - 26 janv. 2017 à 15:46
A voir également:
- Comment ajouter des colonnes dans un tableau mysql trié
- Tableau croisé dynamique - Guide
- Comment faire un tableau - Guide
- Trier un tableau excel - Guide
- Tableau ascii - Guide
- Comment faire des colonnes sur word - Guide
3 réponses
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
Ambassadeur
1 557
Modifié par yg_be le 24/01/2017 à 19:42
Modifié par yg_be le 24/01/2017 à 19:42
bonsoir, Je propose ceci:
$requete = $connexion->prepare("SELECT Original_name, Describer_initials, Year, Validity, Trinominal_name FROM taxabase1 left outer join taxabase3 on (taxabase1.Rk_Hist = taxabase3.Rk_Hist) WHERE taxabase1.Rk_Hist and Describer_initials is not null and trim(Describer_initials) != '' ORDER BY Describer_initials, Original_name"); $requete->bindParam(':Rk_Hist', $Rk_Hist, PDO::PARAM_INT); $requete->execute(); $result[1] = $requete->fetchAll(); $plan3 = ''; $tabCurrent_name_by_describer = array(); foreach ($result[1] as $row) { $plan3 = explode("|", $row["Describer_initials"]); foreach ($plan3 as $cellplan3) { tabCurrent_name_by_describer[$cellplan3][] = array($row["Original_name"], $row["Year"], $row["Validity"], $row["Trinominal_name"]); } } ksort($tabCurrent_name_by_describer); foreach($tabCurrent_name_by_describer as $describer => $tabOriginal_name) { foreach($tabOriginal_name as $Original_array) { echo '<tr><td><b>' . $describer . '</b></td><td><i>'. $Original_array[1] . '</i></td><td>'. $Original_array[2] . '</td>><td>'. $Original_array[3] . '</td>><td>'. $Original_array[4] . '</td></tr>'; } }
Sebas22
Messages postés
110
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
24 juillet 2018
5
26 janv. 2017 à 12:08
26 janv. 2017 à 12:08
Bonjour,
Merci beaucoup.
Et en plus c’est très clair et organisé si bien que je vois bien comment le code précédent faisait sens.
Cependant j’ai travaillé hier dessus car il y a un petit souci (en plus d’une broutille : $tabCurrent_name_by_describer[$cellplan3][] le $ manquait et je l’ai vite vu).
J’ai essayé plein de trucs, mais cela n’a pas marché (peut-être le nez dans le guidon) et pourtant la construction du code est limpide… juste une hypothèse, entre le vieux et le nouveau code la différence est à array($row["Original_name"], $row["Year_description"], $row["Current_status"], $row["Current_trinom_name"]);.
L’erreur dans localhost à chaque ligne est
Notice: Undefined offset: 4 in D:\_etc.php on line 105
Ligne 105:
'</td>><td>'. $Original_array[4] .
Il semblerait que le code tel quel ne prenne pas le champ Original_name (2ème colonne), prend bien la variable describer dérivée du champ Describer_initials, puis les champs Year_description, Current_status, Current_trinom_name, ce qui entraîne un décalage car ce n’est pas le champ Original_name qui est en italique (il manque) mais le champ suivant Year_description
Ainsi après le message d’erreur, il y a (pour la première occurrence)
Able K.W.(en gras, OK)Z1988(en italique, faux)valid sp.>Fundulus relictus>
J’ai ajouté les commentaires et le Z pour signaler l’absence du champ Original_name
Pour faciliter je cite le code après que j’y ai mis les noms de champs et la jointure exacts
Voilà je pense qu’on est tout près du but, merci encore.
A+
Seb
Merci beaucoup.
Et en plus c’est très clair et organisé si bien que je vois bien comment le code précédent faisait sens.
Cependant j’ai travaillé hier dessus car il y a un petit souci (en plus d’une broutille : $tabCurrent_name_by_describer[$cellplan3][] le $ manquait et je l’ai vite vu).
J’ai essayé plein de trucs, mais cela n’a pas marché (peut-être le nez dans le guidon) et pourtant la construction du code est limpide… juste une hypothèse, entre le vieux et le nouveau code la différence est à array($row["Original_name"], $row["Year_description"], $row["Current_status"], $row["Current_trinom_name"]);.
L’erreur dans localhost à chaque ligne est
Notice: Undefined offset: 4 in D:\_etc.php on line 105
Ligne 105:
'</td>><td>'. $Original_array[4] .
Il semblerait que le code tel quel ne prenne pas le champ Original_name (2ème colonne), prend bien la variable describer dérivée du champ Describer_initials, puis les champs Year_description, Current_status, Current_trinom_name, ce qui entraîne un décalage car ce n’est pas le champ Original_name qui est en italique (il manque) mais le champ suivant Year_description
Ainsi après le message d’erreur, il y a (pour la première occurrence)
Able K.W.(en gras, OK)Z1988(en italique, faux)valid sp.>Fundulus relictus>
J’ai ajouté les commentaires et le Z pour signaler l’absence du champ Original_name
Pour faciliter je cite le code après que j’y ai mis les noms de champs et la jointure exacts
$requete = $connexion->prepare("SELECT Original_name, Year_description, Current_status, Current_trinom_name, Describer_initials FROM taxabase1 left outer join taxabase2 on (taxabase1.Rk_Hist = taxabase2.Rk_Hist) left outer join taxabase3 on (taxabase3.Rk_Hist = taxabase2.Rk_Hist) WHERE taxabase1.Rk_Hist and Describer_initials is not null and trim(Describer_initials) != '' ORDER BY Describer_initials, Original_name"); $requete->bindParam(':Rk_Hist', $Rk_Hist, PDO::PARAM_INT); $requete->execute(); $result[1] = $requete->fetchAll(); $plan3 = ''; $tabCurrent_name_by_describer = array(); foreach ($result[1] as $row) { $plan3 = explode("|", $row["Describer_initials"]); foreach ($plan3 as $cellplan3) { $tabCurrent_name_by_describer[$cellplan3][] = array($row["Original_name"], $row["Year_description"], $row["Current_status"], $row["Current_trinom_name"]); } } ksort($tabCurrent_name_by_describer); foreach($tabCurrent_name_by_describer as $describer => $tabOriginal_name) { foreach($tabOriginal_name as $Original_array) { echo '<tr><td><b>' . $describer . '</b></td><td><i>'. $Original_array[1] . '</i></td><td>'. $Original_array[2] . '</td>><td>'. $Original_array[3] . '</td>><td>'. $Original_array[4] . '</td></tr>'; } }
Voilà je pense qu’on est tout près du but, merci encore.
A+
Seb
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
26 janv. 2017 à 12:49
26 janv. 2017 à 12:49
Je ne comprends toujours pas ceci : "WHERE taxabase1.Rk_Hist and" : que veux-tu faire?
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
1 557
26 janv. 2017 à 12:54
26 janv. 2017 à 12:54
L'erreur est dans l'utilisation de l'index pour $Original_array: cela doit être de 0 à 3, pas de 1 à 4. Essaye après avoir corrigé cela.
Sebas22
Messages postés
110
Date d'inscription
jeudi 13 mai 2010
Statut
Membre
Dernière intervention
24 juillet 2018
5
26 janv. 2017 à 15:46
26 janv. 2017 à 15:46
Re-bonjour,
Super!
L'erreur était bien dans l'utilisation de l'index pour $Original_array: plutôt de 0 à 3.
Mercis!!!
J'ai pu dans la foulée réaliser 6 autres pages similaires avec 3 et 4 colonnes.
On va rentrer en prod finale et mettre le site en ligne très bientôt.
Je marque comme résolu (avec un chapeau bas à toi, yg_be)
Seb
Super!
L'erreur était bien dans l'utilisation de l'index pour $Original_array: plutôt de 0 à 3.
Mercis!!!
J'ai pu dans la foulée réaliser 6 autres pages similaires avec 3 et 4 colonnes.
On va rentrer en prod finale et mettre le site en ligne très bientôt.
Je marque comme résolu (avec un chapeau bas à toi, yg_be)
Seb