Page 1 sur 1

ORDER BY dans un for() ..

Posté : 15 févr. 2011, 07:27
par Poinball
Bonjour,

J'ai ce script ici que j'ai fait pour afficher les pseudo dans ma table derniere_visite. Le script va chercher seulement les pseudo qui sont en même temps dans le Fichier GuestBook.txt.
Mon problème est que le script est fait pour mettre en ordre les dates qui sont dans datetime sur la table serniere_visite. Je ne sais pas pourquoi, mais il ne les mets pas en ordre dutout.
<table align=center border="1"  bordercolorlight="#00FFFF" cellspacing="0" cellpadding="0">
	<tr>
		<td  width="98" valign="middle" align="center">
		<font style="font-size: 11pt">Joueur</font></td>
		<td  width="126" valign="middle" align="center">
		<font style="font-size: 11pt">Date</font></td>

	</tr>
<?	

mysql_connect("*******", "*******", "*******");
mysql_select_db("*******_280");

$fichier = file("GuestBook.txt"); // Nom du fichier à afficher, son adresse de localisation
 
$total = count($fichier); // Nombre total des lignes du fichier

for($i = 0; $i < $total; $i++) 
{ 


$result = mysql_query("
                    SELECT *
                    FROM `derniere_visite`
                    WHERE pseudo='" . str_replace("\n","", $fichier[$i]) . "' ORDER BY `derniere_visite`.`datetime` DESC 
               ");

while($row = mysql_fetch_array( $result )) {
$datetime = $row['datetime'];
$pseudo = $row['pseudo'];
 
?>
	<tr>
		<td height="10" width="98" valign="middle" align="center">
		<font style="font-size: 9pt"><?= $pseudo; ?></font></td>
		<td height="10" width="126" valign="middle" align="center">
		<font style="font-size: 9pt"><?= $datetime; ?></font></td>
	</tr>

<?
 }
} 
?>
</table>
Je suis certain que mon problème est que mon ORDER BY est dans le For() :roll:
Je ne sais pas comment faire autrement #-o
Merci !

Re: ORDER BY dans un for() ..

Posté : 15 févr. 2011, 10:02
par xTG
Il sert à quoi concrètement ton fichier si tu as les informations dans la base de données ?
Car oui actuellement avec ce système ça va être un brin loufoque d'avoir un tri par date. :/

Re: ORDER BY dans un for() ..

Posté : 15 févr. 2011, 22:44
par Ryle
Le problème que tu rencontres est surtout un soucis de conception. En effet, tu parcours chacun des pseudos de ton fichier (le for) et pour chacun d'entre eux tu vas chercher toutes les dates de dernières connexions du pseudo, triées dans l'ordre (le sql + le while)... mais entre deux pseudos, il n' y a aucun lien donc aucun tri...

En conservant ce fonctionnement, il te faudrait stocker les dates et résultats que tu récupères de ta requête dans un tableau php que tu pourrais trier ensuite (au lieu de les afficher directement), ou parcourir l'ensemble des pseudos du fichier et les inclure dans une seule requête : WHERE pseudo IN (...)

Mais comme le signal xTG, il faudrait peut être revoir l’intérêt d'un tel traitement, y a sans doute moyen d'améliorer tout ça :)