[PHP-MySQL] - Tri de requètes...

Kristof -  
 Danila -
Bonjourà tous !!

Voilà, je suis en train de programmer un WebZine en PHP avec BdD MySql, et j'ai une sacrée liste de chroniques, je propose donc les groupes dans l'ordre alphabétique sur mon site.
Pas de problème jusque là, je fait une requète par lettre, par exemple "A%" pour le A, etc... J'affiche donc page par page les chroniques des groupes qui commencent par A, B, etc.
Mon souci, c'est que certains groupes qui se croient + malins que les autres ont un nom qui est... un nombre (ou qui commence par un nombre)...
Ce qui se fait le + souvent, quand on dresse une liste alphabétique, c'est qu'on met un # pour signifier 'les groupes dont le nom commence par un nombre'.
Voilà mon soucis : comment aller chercher dans la table les groupes qui commencent par un nombre ??
Si qqu'un a la solution, je le remercie par avance !!
merci !!
A voir également:

4 réponses

Zep3k!GnO Messages postés 2049 Statut Membre 200
 
avec un LIKE dans ta requete ca peut pas passer ? !

Zep3k!GnO
1
Kristof
 
Salut, et merci pour ta réponse...
En fait mon problème s'est résolu de lui même, un peu au hasard, et je dois bien avouer que je ne sais toujours pas comment, mais bon ça marche !!!
voilà mon code :
	if (isset ($auteur_chron))
	{
		$auteur_lien = "&auteur_chron=".$auteur_chron ;
		$tri_par_auteur = "AND `auteur` LIKE CONVERT( _utf8 '".$auteur_chron."'USING latin1 ) COLLATE latin1_swedish_ci" ;
	}
	else
	{
		$auteur_lien ="" ;
		$tri_par_auteur="";
	}
	
	$alpha = range("A","Z") ;
	foreach ($alpha as $alettre)
	{
		echo "<a href='echo.php?page=chroniques&page_chron=toutes".$auteur_lien."&lettre=".$alettre."'>".$alettre."</a> - " ;
	}
	echo "<a href='echo.php?page=chroniques&page_chron=toutes".$auteur_lien."&lettre=0'>#</a>" ;
	

	if (isset ($lettre))
	{
		
		if($lettre == "0")
		{
			$sql = "SELECT *  FROM `critiques` WHERE `groupe` ".$tri_par_auteur." ORDER BY `groupe` ASC " ;
			$result = mysql_query($sql,$connect) ;
		}
		else
		{
			$sql = "SELECT *  FROM `critiques` WHERE `groupe` LIKE CONVERT(_utf8 '".$lettre."%' USING latin1) COLLATE latin1_swedish_ci ".$tri_par_auteur." ORDER BY `groupe` ASC " ;
			$result = mysql_query($sql,$connect) ;
		}
		while($row = mysql_fetch_array($result))
		{
			list($groupe,$titre,$label,$critique,$auteur,$date_chron,$id,$lien) = $row ;
			$groupe = strtoupper ($groupe) ;
			$auteur = ucwords($auteur) ;
			$critique = nl2br($critique) ;

			echo "<div class='cadre_forum'><span class = 'groupes_chroniques'>".$groupe."</span> ".$titre." <span class='reponses'>".$label."</span></div>
				  <div class='texte_forum'>".$critique." <a href = 'http://".$lien."' target='_blank'>".$lien."</a><br>
				  <span class='auteur'>".$auteur."</span></div>" ;
		}
	}
0
abaly Messages postés 2 Statut Membre
 
salut j'ai un ptit soucis j'ai aussi un table a tier j utilise ORDER BY mais ça ne marche pas.
<?
//AFFICHAGE:Display
// appel du serveur
	$id = mysql_connect($server,$user,$password) OR die("Echec de la connexion au serveur");
//ouverture de la base de donne
	$id_db = mysql_select_db($base) OR die("Echec de la connexion à la base de donnée");
//ouverture et  ecriture dans la table	
$result = mysql_query("INSERT INTO $table ( `N°` , `Item Name` , `Quantity` , `Brand` , `Serial Number` , `Part Number` , `Supplier` , `Destination Team` , `Destination Activity` , `Price` , `Buying date` , `Category` , `Status` , `observation` )
VALUES ('$N', '$Item_name', '$Quantity', '$Brand', '$Serial_Number', '$Part_number', '$Supplier', '$team','$Destination_activity', '$Price', '$Date_Bying ', '$Category ', '$Status ', '$Observation') 
SELECT * FROM $table ORDER BY N  ") 

OR die("Echec de la reception des données");


//Tous les champs de toutes les fiches triées par ordre croissant du champ fldA

$resut=mysql_query(""	);
	mysql_close($id);
?>
0
medmans
 
Bonjour abaly
Pour un order by il faut préciser si le tri est decroissante ou croissante:
p-e: SELECT * FROM $table ORDER BY N desc (ou asc)

Mais dites moi à propos de cette partie:

$result = mysql_query("INSERT INTO $table ( `N°` , `Item Name` , `Quantity` , `Brand` , `Serial Number` , `Part Number` , `Supplier` , `Destination Team` , `Destination Activity` , `Price` , `Buying date` , `Category` , `Status` , `observation` )
VALUES ('$N', '$Item_name', '$Quantity', '$Brand', '$Serial_Number', '$Part_number', '$Supplier', '$team','$Destination_activity', '$Price', '$Date_Bying ', '$Category ', '$Status ', '$Observation')
SELECT * FROM $table ORDER BY N ")

OR die("Echec de la reception des données");
ou est ce que la parenthese de mysql_query est fermée ainsi que les guillemets? et la syntax de intert into je pense que c'est tout simplement : INSERT INTO table (ch1,ch2,...) VALUES (v1,v2,...) et c'est tous
mais je vois que dans la meme requete vous augmentez SELECT...car d'aprés ce que vous avez écrit j'ai l'impression que meme le SELECT est dans la fonction mysql_query.

soyez plus claire svp?
0
Danila
 
result = mysql_query("INSERT INTO $table ( `N°`.....

SELECT * FROM $table ORDER BY N ")
Alors que la il fait le tri sur " N " et pas sur " N° "
0