Classer dans l'ordre !

Petit nouveau ! | 6 Messages

28 oct. 2006, 13:52

Tous d'abord bonjour à tous !

Je souhaite savoir si vous pourriez me donner un petit coup de pouce sur cette requête sql ! Le soucis est que je souhaiterais faire classer les résultats par ordre alphabétique hors cela fonctionne en partie mais ne donne pas du tous ce que j'en attend !

En fait actuellement les sous catégories sont bien classées par ordre alphabétique mais pas les catégories hors je souhaiterais que les 2 soient classés dans cet ordre !

Ci dessous le code utilisé :

D'avance merci de prendre de votre temps pour m'aider !
<?php

$db = mysql_connect($sql_host,$sql_user,$sql_pass); 
mysql_select_db($sql_bdd,$db);

$result = mysql_query("SELECT * FROM total_categorie WHERE auteur='$login' AND subcat <> '0' ORDER BY nom ASC") or die(mysql_error());

echo '<select name="subcat" class="input_txt">';
echo '<option value="" selected>S&eacute;lectionner une sous-cat&eacute;gorie</option>';

while ($row = mysql_fetch_array($result)) 
{

	$id     = $row['id'];
	$nom    = $row['nom'];
	$subcat = $row['subcat'];

	$resultat = mysql_query("SELECT * FROM total_categorie WHERE auteur='$login' AND id='$subcat'") or die(mysql_error());

	while ($raw = mysql_fetch_array($resultat)) 
	{
		$cat = $raw['nom'];
	}

	echo '<option value="'.$id.'">'.$cat.' > '.$nom.'</option>';
	
}

echo '</select>';
		
mysql_close($db);

?>

ViPHP
ViPHP | 2144 Messages

28 oct. 2006, 14:25

Salut,

Il suffit d'ajouter une clause order by dans la deuxième requette, comme c'est fait dans la première.
2 petites remarques:
- Dans un select spécifie quels champs tu souhaites récupérer, plus que de tout sélectionner avec une étoile, c'est demande moins de ressources si tu n'a réellement besoin que d'une partie des champs de la table.
- Si ton menu est long, il vaudrait mieux n'avoir qu'un seul select qui récupère les catégories et sous-catégories, avec une auto-jointure, là aussi pour éviter lancer trop de requêttes sur le serveur de base de donnée.

Petit nouveau ! | 6 Messages

28 oct. 2006, 14:39

Merci de votre réponse,

j'ai donc écouté et tenté de mettre en application mais toujours le même résultat ! J'ai juste les sous catégorie dans l'ordre alphabétique hors je souhaiterais afficher par ordre les catégories et les sous catégories...

Les champs de cette tables sont id, auteur, nom, subcat
<?php

$db = mysql_connect($sql_host,$sql_user,$sql_pass); 
mysql_select_db($sql_bdd,$db);

$result = mysql_query("SELECT nom, subcat FROM total_categorie WHERE auteur='$login' AND subcat <> '0' ORDER BY nom ASC") or die(mysql_error());

echo '<select name="subcat" class="input_txt">';
echo '<option value="" selected>S&eacute;lectionner une sous-cat&eacute;gorie</option>';

while ($row = mysql_fetch_array($result)) 
{

	$id     = $row['id'];
	$nom    = $row['nom'];
	$subcat = $row['subcat'];

	$resultat = mysql_query("SELECT nom FROM total_categorie WHERE auteur='$login' AND id='$subcat' ORDER BY nom ASC") or die(mysql_error());

	while ($raw = mysql_fetch_array($resultat)) 
	{
		$cat = $raw['nom'];
	}

	echo '<option value="'.$id.'">'.$cat.' > '.$nom.'</option>';
	
}

echo '</select>';
		
mysql_close($db);

?>

ViPHP
ViPHP | 2144 Messages

28 oct. 2006, 16:52

 while ($raw = mysql_fetch_array($resultat)) 
    {
        $cat = $raw['nom'];
    }

    echo '<option value="'.$id.'">'.$cat.' > '.$nom.'</option>';
     
Il ne te manque pas quelques sous-catégories à l'affichage ?? :wink: :wink:
Parce que là, tu n'affiches que la dernière, vu que dans la boucle tu te contente d'assigner une valeur à une variable....