Tri qui se fait bien avec requête sql, mais plus dans localhost
Résolu
Sebas22
Messages postés
110
Date d'inscription
Statut
Membre
Dernière intervention
-
Sebas22 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
Sebas22 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Cela me dépasse.
Voilà j’ai un code dont la requête SQL non seulement marche dans PhpMyAdmin de wamperver, mais en plus affiche le bon tri.
Quand je copie la requête dans mon code php et que je teste le fichier dans localhost, le tableau s’affiche MAIS le tri ne se fait plus.
En réalité il trie sur la 1ère colonne du tableau php, et pas comme avec la requête sql sur substr(Corr_Date, 25, 11) DESC.
Comme le tableau est lui-même triable avec un javascript appelé et par la classe class="sortable" id="you", j’ai essayé de désactiver le js et de changer la classe en classe normale, mais cela ne change rien (le tri reste sur la 1ère colonne du tableau php et le tableau est fixe)
Pouvez-vous me dire où se trouve mon erreur ?
Le code :
Merci d’avance
Seb
Cela me dépasse.
Voilà j’ai un code dont la requête SQL non seulement marche dans PhpMyAdmin de wamperver, mais en plus affiche le bon tri.
Quand je copie la requête dans mon code php et que je teste le fichier dans localhost, le tableau s’affiche MAIS le tri ne se fait plus.
En réalité il trie sur la 1ère colonne du tableau php, et pas comme avec la requête sql sur substr(Corr_Date, 25, 11) DESC.
Comme le tableau est lui-même triable avec un javascript appelé et par la classe class="sortable" id="you", j’ai essayé de désactiver le js et de changer la classe en classe normale, mais cela ne change rien (le tri reste sur la 1ère colonne du tableau php et le tableau est fixe)
Pouvez-vous me dire où se trouve mon erreur ?
Le code :
echo '<table class="sortable" id="you"><tr><th title="(current trinominal name)">CURRENT TRINOMINAL NAME</th><th title="(included or corrected on )">LATEST CHANGE</th><th title="(date of major syatematic or nomenclatural update)">LAST MAJOR UPDATE</th><th title="(year of description)">YEAR DESCRIPTION</th></tr>'; $requete = $connexion->prepare("SELECT Year_description, Corr_Date, Current_trinom_name, Major_edition_update, substr(Corr_Date, 25, 5), substr(Corr_Date, 25, 11) FROM taxabase1 left outer join taxabase2 on (taxabase1.Rk_Hist = taxabase2.Rk_Hist) left outer join taxabase3 on (taxabase2.Rk_Hist = taxabase3.Rk_Hist) WHERE taxabase1.Rk_Hist and substr(Corr_Date, 25, 5)>= 2016 ORDER BY substr(Corr_Date, 25, 11) DESC"); $requete->execute(); $result[1] = $requete->fetchAll(); $plan16 = ''; $tabCurrent_update_by_name = array(); foreach ($result[1] as $row) { $plan16 = explode("|", $row["Current_trinom_name"]); foreach ($plan16 as $cellplan16) { $tabCurrent_update_by_name[$cellplan16][] = array(substr($row["Corr_Date"], 25, 10), $row["Major_edition_update"], $row["Year_description"]); } } ksort($tabCurrent_update_by_name); foreach($tabCurrent_update_by_name as $currentname => $tabCurrent_update) { foreach($tabCurrent_update as $Original_array) { echo '<tr><td><i>' . $currentname . '</i></td><td>'. $Original_array[0] . '</td><td>'. substr($Original_array[1], -4) . ' ['. $Original_array[1] . ']</td><td>'. $Original_array[2] . '</td></tr>'; } } echo '</table>';
Merci d’avance
Seb
A voir également:
- Tri qui se fait bien avec requête sql, mais plus dans localhost
- Comment faire un tri personnalisé sur excel - Guide
- Logiciel tri photo - Guide
- Je suis content que tu vas bien ou que tu ailles bien - Forum Musique / Radio / Clip
- Requete sql pix - Forum PHP
- Comment je peut bien parlais anglais? - Forum Réseaux sociaux
3 réponses
Bonjour Jordane45,
Merci de la piste précise.
J’ai simplement désactivé la ligne
et le problème a été résolu!
Bon ce n’était pas une erreur stupide d’inattention et là tu peux peut-être me dire ce que tu en penses.
Mon code est un code valise que j’adapte à chaque page (la requête est, elle, différente à chaque fois, et pour la présente requête j’ai chauffé mes neurones !).
Il marche pour la ligne
Sauf que dans le cas présent il n’y a pas de caractère ‘|’ et donc le explode n’est pas indispensable (donc si j’avais maintenu le ksort c’était pour cette raison qui concerne la même variable, pas par étourderie… je reste encore débutant).
Donc maintenant si je remplace cette ligne par
J’ai une grosse erreur (répétée x fois) qui apparaît :
Warning: Invalid argument supplied for foreach() in D:\_xxx.php on line 84 qui est
Pourquoi ?
Comment la solutionner ?
Une piste ? (note : c’est pas indispensable, puisque çà marche et que c’est résolu, mais c’est pour ma compréhension… et mon apprentissage).
Merci encore !
A+
Seb
Merci de la piste précise.
J’ai simplement désactivé la ligne
ksort($tabCurrent_update_by_name);
et le problème a été résolu!
Bon ce n’était pas une erreur stupide d’inattention et là tu peux peut-être me dire ce que tu en penses.
Mon code est un code valise que j’adapte à chaque page (la requête est, elle, différente à chaque fois, et pour la présente requête j’ai chauffé mes neurones !).
Il marche pour la ligne
$plan16 = explode("|", $row["Current_trinom_name"]);
Sauf que dans le cas présent il n’y a pas de caractère ‘|’ et donc le explode n’est pas indispensable (donc si j’avais maintenu le ksort c’était pour cette raison qui concerne la même variable, pas par étourderie… je reste encore débutant).
Donc maintenant si je remplace cette ligne par
$plan16 = $row["Current_trinom_name"];
J’ai une grosse erreur (répétée x fois) qui apparaît :
Warning: Invalid argument supplied for foreach() in D:\_xxx.php on line 84 qui est
foreach ($plan16 as $cellplan16)
Pourquoi ?
Comment la solutionner ?
Une piste ? (note : c’est pas indispensable, puisque çà marche et que c’est résolu, mais c’est pour ma compréhension… et mon apprentissage).
Merci encore !
A+
Seb
Simplement ... avant de faire ton foreach tu peux
- Verifier que la variable est de type "array
- Vérifier que la variable existe et n'est pas vide
En gros :
NB : A l'avenir, lorsque tu as un NOUVELLE question, merci d'ouvrir une NOUVELLE discussion.
La question précédente portant sur ton tri .... et étant traitée ... merci de mettre ce sujet en RESOLU.
- Verifier que la variable est de type "array
- Vérifier que la variable existe et n'est pas vide
En gros :
if(!empty($plan16)){ if(is_array($plan16)){ foreach ($plan16 as $cellplan16){ $tabCurrent_update_by_name[$cellplan16][] = array(substr($row["Corr_Date"], 25, 10), $row["Major_edition_update"], $row["Year_description"]); } }else{ $tabCurrent_update_by_name[$cellplan16][] = array(substr($row["Corr_Date"], 25, 10), $row["Major_edition_update"], $row["Year_description"]); } }
NB : A l'avenir, lorsque tu as un NOUVELLE question, merci d'ouvrir une NOUVELLE discussion.
La question précédente portant sur ton tri .... et étant traitée ... merci de mettre ce sujet en RESOLU.