Accueil > Forum > > > > Problème de tri de résultat
Problème de tri de résultat
dimanche 24 octobre 2010 à 14:26:11 |
Problème de tri de résultat

nagrom13
|
Bonjour,
Je vais essayer d'expliquer clairement mon problème.
Je fais une requete sur une table pour récupérer des infos et je veux afficher le résultat sous forme de tableau. Jusque la pas de problème.
Il se trouve que dans la table différentes données sont stockées sous forme d'une concaténation séparée par des guillemets. En gros j'aurais aimé faire un tri des résultats sur un des éléments de cette concaténation.
Exemple :
while($row = mysql_fetch_row($result)){
$userid = $row[0];
$username = $row[1];
$time = $row[2];
$sdata = $row[3];
$arr_data = explode('"', $sdata);
}
en fait sdata est de la forme a:5:{i:55;s:5:"Paris";i:62;s:7:"Toronto";i:57;s:15:"6 February 2011"}
Ensuite dans mon while je fais :
echo '<tr class="resultat">
<th class="id">'.$row[0].'</th>
<th class="pseudo">'.$row[1].'</th>
<th class="provenance">'.$arr_data[1].'</th>
<th class="destination">'.$arr_data[3].'</th>
<th class="date_depart">'.$arr_data[5].'</th>
</tr>';
Mais j'aimerai que le tableau soit trier en fonction de date_depart. Si date_depart avait été une colonne de ma table j'aurai fait un simple order by date_depart dans ma requete mais la je ne peux pas.
Quelqu'un pourrait il éclairé ma lanterne ?
Merci
|
|
dimanche 24 octobre 2010 à 14:59:40 |
Re : Problème de tri de résultat

TychoBrahe
|
Salut,
Avant d'aller plus loin tu devrais revoir la structure de ta base de donnée, stocker ses donnés dans un varchar (ou autre) dans un format spécial pour ensuite interpréter ce format est franchement immonde. On y perd tout l'intéret des bases de données, il ne faux jamais faire ça, et c'est malheureusement une erreur assez classique chez les débutants. Afin de t'aider à refaire ta base de donnée je te recommande cet article que j'ai écrit : Des bases de données relationnelles et multivaluées.
|
|
dimanche 24 octobre 2010 à 15:04:03 |
Re : Problème de tri de résultat

nagrom13
|
Entièrement d'accord avec toi, c'est tout simplement immonde. Je bosse néanmoins sur un existant.
Je suis beaucoup plus analyste que programmeur et voir de telles choses n'est jamais très plaisant :)
Evidemment si j'avais la main sur tout j'aurai vite modifié tout ça ;)
Malheureusement on doit quelque fois bosser avec ce qu'on nous donne ^^
Merci pour le lien ;)
|
|
dimanche 24 octobre 2010 à 15:35:54 |
Re : Problème de tri de résultat
|
dimanche 24 octobre 2010 à 21:40:44 |
Re : Problème de tri de résultat

neigedhiver
|
Salut,
Juste comme ça : sdata est un tableau linearisé, avec serialize() . Pour le délinéariser : unserialize(). C'est un peu mieux que explode(), ça permet surtout de récupérer tout le tableau.
Je sais pas si c'est utile ou pas...
--
Neige
Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
|
|
lundi 25 octobre 2010 à 16:41:10 |
Re : Problème de tri de résultat

nagrom13
|
Merci a vous deux je vais me repencher dessus ;)
|
|
samedi 30 octobre 2010 à 13:11:48 |
Re : Problème de tri de résultat

nagrom13
|
Bon je vais me faire taper sur les doigts mais je suis un peu perdu :)
//Recuperation resultats
$index=0;
while($row = mysql_fetch_row($result)){
$userid = $row[0];
$username = $row[1];
$time = $row[2];
$sdata = $row[3];
$arr_data = explode('"', $sdata);
$ligne= array($userid, $username, $time, $arr_data[1], $arr_data[3], $arr_data[5], $arr_data[7], $arr_data[9], $arr_data[11]);
$arr_result = array_fill($index,1,$ligne);
$index++;
echo ''.$arr_result[0][0].''; // résultat ok
}
echo ''.$arr_result[0][0].''; // vide ??
- Je ne comprends pas pourquoi lorsque je fais un
echo ''.$arr_result[0][0].''; dans la boucle while cela me donne bien ce que je veux mais en dehors du while arr_result est vide...
- Malgré votre aide et la doc je ne vois pas trop quel tri effectuer pour classer ce tableau selon la valeur de $arr_result[0][5] par exemple (d'autant plus qu'en dehors du while il ne vaut rien).
|
|
samedi 30 octobre 2010 à 21:26:11 |
Re : Problème de tri de résultat
|
samedi 30 octobre 2010 à 22:00:21 |
Re : Problème de tri de résultat

yexbe
|
voici le tri sql que je te propose
Code : SELECT * from matable order by STR_TO_DATE(SUBSTRING(SUBSTRING_INDEX(monchamp, '\"', -2),1,LENGTH(SUBSTRING_INDEX(monchamp, '\"', -2))-2),'%e %M %Y');
je detaille
ton exemple : a:5:{i:55;s:5:"Paris";i:62;s:7:"Toronto";i:57;s:15:"6 February 2011"}
SUBSTRING_INDEX(`monchamp`, '\"', -2) donne la fin de la chaine en partant de l'avant derniere occurence de " dans ce champ
on obtient : 6 February 2011"}
LENGTH(SUBSTRING_INDEX(`monchamp`, '\"', -2)) donne la longueur de cette chaine
on obtient 17
SUBSTRING(SUBSTRING_INDEX(`monchamp`, '\"', -2),1,LENGTH(SUBSTRING_INDEX(`monchamp`, '\"', -2))-2) permet donc d'enlever les deux derniers caractères de la sous chaine
on obtient 6 February 2011
STR_TO_DATE(SUBSTRING(SUBSTRING_INDEX(`monchamp`, '\"', -2),1,LENGTH(SUBSTRING_INDEX(`monchamp`, '\"', -2))-2),'%e %M %Y') transforme cette chaine en date mysql
on obtient 2011-02-06
et on trie directement dans l'ordre sql sur cette valeur...
après il faut voir au niveau des temps de réponses si c'est jouable et cela dépend de ta base.
Elodie SAVARY
Touko Technologies : création de sites internet et de logiciels sur mesure
|
|
Cette discussion est classée dans : problème, data, tri, row, arr
Répondre à ce message
Sujets en rapport avec ce message
problème de commandes mysql [ par juenic ]
Voila je débute en php et mysql et je voulais faire un import depuis mysql vers xml, j'ai repris ce script : //Ouverture de base de données mysql_conn
Problème pour diviser une variable qui vient d'une combo en 2 [ par ndsaerith ]
Bonjour otut le monde! Voila j'ai un petit pb. J'affiche des noms dans une combo box : echo ''; while($data=mysql_fetch_array($req)) { echo
Gros problème BDD [ par kodiask ]
voila mon code il consiste a remplacer les lettres par une image...while($data = mysql_fetch_array($req)) { $data['nom'] =str_replace('a','',$da
Probleme de TRI [ par restesouple ]
Salut! Voià mon code: while($data = mysql_fetch_array($req)) { if ($donnee!='') { $donnee = ''.$donnee. ', "' .($data['valeur1'] + $data['valeur2']
problème avec fichier CSV [ par xris ]
Bonjour, Je sui perdu : j'utilise la fonction fgetcsv de la façon suivante : $row = 1; $handle = fopen("data.csv", "rb"); while (($data = fgetcsv($
Problème de lien [ par theseif ]
Bonjour, dans une page php j'utilise un lien de ce genre: .$data[</
Problème concatenation [ par kenar ]
Bonjour,J'ai un petit problème avec la concatenation.Quand je fait : $conect = "C:\DATA\ $ville .CHF"; echo $conect
gros problème avec un lien !! :S [ par jimmypage64 ]
J'ai le code suivant : 1 2 $req = "select * from Topics ORDER BY NomTopic;"; 3 //exécution de la requête 4 &n
Fichier texte [ par rochametallica ]
Salut tout le monde, je voudrais avoir votre aide pour résoudre un problème, alors je voudrais un code en PHP qui me lis des valeurs d'un fichier text
Problème de Tableau ! Aide moi Sniff Snif :P [ par Many_hack ]
Bonjours ! j'ai commencé hummm, voila deux jours le PHP 5, mais maintenantje suis maleureusement arrêter a ce problème car je ne comprend pas pourquoi
Livres en rapport
|
Derniers Blogs
ROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGEROSLYN FLUENT APIS: ROSLYNHELPER NUGET PACKAGE par Matthieu MEZIL
Si vous utilisez Roslyn et que vous vous voulez vous simplifier le code du code rewriter, je vous conseille d'installer mon NuGet package RoslynHelper ....(read more) ...
Cliquez pour lire la suite de l'article par Matthieu MEZIL POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|