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

Fermé
Kristof - 11 janv. 2006 à 00:55
 Danila - 28 avril 2008 à 16:48
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 !!

4 réponses

Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
12 janv. 2006 à 13:09
avec un LIKE dans ta requete ca peut pas passer ? !

Zep3k!GnO
1
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 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 25 juillet 2007
25 juil. 2007 à 13:50
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
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
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