Classer les donnees dans un tableau (Desc ou Asc...)

Petit nouveau ! | 7 Messages

04 déc. 2008, 11:51

Bonjour,

Je souhaiterais pouvoir classer les donnees qui se trouvent dans mon tableau par ordre alphabetique, Descendante ou ascendante.

J'ai fait plusieurs test sur mon bout de code, j'imagine bien que je suis pas tres loin de la solution et que mes liens sont "bizarres" mais rien a faire...
La page se presente bien, mais quand je clique sur les liens, rien ne se passe.

Voici le code :


<?php


if(isset($_GET["sort"])) 
{
	switch($_GET["sort"])
	{
		case "name":
			$query = "SELECT * from XXXXX order by name";
			break;
		case "phone":
			$query = "SELECT * from XXXXX order by phone";
			break;
		default:
			$query = "SELECT * from XXXXX";
			break;
	}

	if(isset($_GET["asc"]))
	{
		$query .= "asc";
	}
	else if(isset($_GET["desc"]))
	{
		$query .= "desc";
	}
	
}
else //sort by default setting in table
{
	$query = "SELECT * from XXXXX";
}



?>




<table width="600" cellpadding="5">
<tr>
		<td><a href="?desc">Sort by descending</a><br>
		<a href="?asc">Sort by ascending</a></td>
		<td><a href="?sort?desc">Sort by descending</a><br>
		<a href="?sort?asc">Sort by ascending</a></td>
</tr>


<?php
$findit = mysql_query($query) or die(mysql_error());
while($fi = mysql_fetch_array($findit))
{
?>

<tr>
	<td><?php echo $fi["name"]; ?></td><td><? echo $fi["phone"]; ?></td>
</tr>

<?php } ?>
Merci pour votre aide :)
Modifié en dernier par Gogad le 04 déc. 2008, 12:26, modifié 1 fois.

Eléphant du PHP | 353 Messages

04 déc. 2008, 12:03

En ayant juste survolé.
Tes liens ne vont pas.

Tu utilise ? plus d'une fois dans certain.

Un liens c'est ?param1=val1&param2=val2 ...

Tu peux donc utiliser
?sort=DESC
ou ?sort=ASC
Et y ajouter d'autres paramètres si nécessaire.
?sort=DESC&by=name
?sort=DESC&by=phone

:wink:

Mammouth du PHP | 1353 Messages

04 déc. 2008, 12:15

Aussi il faudra rajouter un espace avant la concaténation sinon ca va donner un truc du genre :

SELECT * from XXXXX order by nameasc

et tu auras une erreur pour dire que nameasc n'est pas une colonne...
if(isset($_GET["asc"])) $query .= " asc";
else if(isset($_GET["desc"])) $query .= " desc"; 
marchera mieux ;)

A ce propos met les or die(mysql_error()); après tes mysql_query...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Petit nouveau ! | 7 Messages

04 déc. 2008, 12:41

Oula, vous allez vite :)

J'ai corrige mes erreurs egalement :

<?php

et

die(mysql_error());


Merci beaucoup :)