tri en php - PHP - Programmation
Marsh Posté le 10-08-2010 à 16:59:41
Nan nan nan c'est pas le foreach qui courcircuite ta requête, ton SGBD ne sait même pas d'où vient la requête. Si le order by ne trie pas tes données c'est inquiétant.
Que donne la même requête mais lancée directement sur la BD (sans passer par php)? Comment récupères-tu le résultat de la requête?
Marsh Posté le 10-08-2010 à 17:03:27
Merci de la réponse,
Je n'ai pas lancé la requête directement sur la BD (faut que je cherche comment faire).
Quant à la récupération du résultat, je passe "simplement" par un "while"
$result8=odbc_exec($conn, $query8);
while (odbc_fetch_row($result8)) {
echo "<tr>";
echo "<td bgcolor=$color><div align=center><font face=Arial size=1><strong>";
print odbc_result($result8,6);echo"</td>";
echo "<td bgcolor=$color><div align=center><font face=Arial size=1><strong>";
print odbc_result($result8,43);echo"</td>";
Marsh Posté le 10-08-2010 à 17:09:01
Il me parait plus plausible que odbc_fetch_row ne lise pas les résultats triés dans le bon ordre.
Essaie d'utiliser ceci à la place (t'es sous php5)?:
odbc_fetch_row($stringsql, 0);
while (odbc_fetch_row($stringsql)) { ...
Marsh Posté le 11-08-2010 à 16:06:46
Je ne suis pas en PHP5
Je pense que le problème vient de "foreach" et du "select" qui est inclus à l'intèrieur.
Je pense me diriger vers une solution qui consisterait à placer le résultat du "select" dans un tableau et à le trier.
Auriez-vous un exemple de code pour faire ça ?
Merci
Marsh Posté le 12-08-2010 à 12:58:17
Je ne sais pas ce qu'il y a dans ton array, mais tes requêtes vont être exécutées selon l'ordre de ce dernier, que tu es un order by ou non. L'order by va trier les données de chaque requête, pas les données de toutes les requêtes. Mais comme on ne sait pas ce qui n'est pas trié...
Marsh Posté le 12-08-2010 à 15:23:45
Je vais essayer d'être plus clair.
Avant d'afficher toutes les lignes issues du "select", je souhaitais les trier sur un champ de la base qui ne fait pas parti des éléments qui se trouvent dans le "select"
Voilà une partie du code :
Code :
|
Je pensais mettre tous les éléments récupérés du "select" dans un tableau, le trier et ensuite les faire afficher.
Merci
Marsh Posté le 12-08-2010 à 15:28:11
Mais mais... comment tu veux le trier en php puisque le champ ne sera pas dans les données retournées?
Marsh Posté le 13-08-2010 à 09:58:44
Ben, je pensais, puisque le select se fait sur tous les champs de la base (dont le champ "Nom_Usuel), je pouvais mettre toutes mes données dans un tableau, le trier et n'afficher ensuite que certains champs.
Marsh Posté le 13-08-2010 à 11:13:30
A la place de
Code :
|
tu fais
Code :
|
et le tri se fait par le sgbd (sans compter que tu ne fais qu'une requête ce qui est énormément mieux)
Marsh Posté le 24-08-2010 à 16:04:25
Il a fallu que je laisse un peu de coté l'application, mais je vais partir dans ta direction.
Merci
Marsh Posté le 10-08-2010 à 16:48:17
Bonjour,
je récupère des données dans une base avec un "select" suivi d'un 'order by', mais cette instruction ne me trie pas mes données.
Avant le "select", j'utilise une instruction "foreach" et j'ai l'impression que celle-ci courcircuite le 'order by'.
Voilà un extrait du code.
Merci
.....