ordonnancement de categorie dans une table sql
Posté : 08 avr. 2007, 14:08
salut la team 
j'ai encore du mal avec mysql
c'est un problème de methode cette fois car je ne trouve pas de solution convenable
mon objectif est d'organiser une liste de categorie dans un ordre defini. Pour ce faire, j'utilise un champ ordre_categorie qui contient un numero (depart à 1) pour chaque categorie definit dans la table.
voila ce que je fait pour le moment:
si quelqu'un à une idée à soumettre afin de definir l'ordre des categories de façon simple
aller, j'y retourne
merci d'avance pour vos conseil
j'ai encore du mal avec mysql
c'est un problème de methode cette fois car je ne trouve pas de solution convenable
mon objectif est d'organiser une liste de categorie dans un ordre defini. Pour ce faire, j'utilise un champ ordre_categorie qui contient un numero (depart à 1) pour chaque categorie definit dans la table.
voila ce que je fait pour le moment:
// On recupère les valeurs du formulaire
$categorie_a_deplacer = isset($_POST['categorie_a_deplacer']) ? trim($_POST['categorie_a_deplacer']) : "";
$ordre_choisi = isset($_POST['ordre_choisi']) ? trim($_POST['ordre_choisi']) : "";
//connexion au serveur MySQL
include ("../mysql_connection.php");
$connexion = mysql_connect($hostdb, $userdb, $passdb) or die('Erreur SQL !<br />'.$connexion.'<br />'.mysql_error());
//sélection de la BDD
$db = mysql_select_db($usedb,$connexion) or die('Erreur SQL !<br />'.$db.'<br />'.mysql_error());
// on remplace par X l'ordre_categorie de la categorie à deplacer
$sql = "UPDATE `$table` SET ordre_categorie = 'x' WHERE categorie = '$categorie_a_deplacer';";
$result = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
// on ajoute 1 à tous les champs superieur ou egal à la valeur choisi
$sql2 = "UPDATE `$table` SET ordre_categorie = (ordre_categorie+1) WHERE (ordre_categorie >= '$ordre_choisi' && ordre_categorie != 'x')";
$result2 = mysql_query($sql2) or die('Erreur SQL !<br />'.$sql2.'<br />'.mysql_error());
// On redefinit enfin la valeur choisi pour la categorie choisi
$sql3 = "UPDATE `$table` SET ordre_categorie = $ordre_choisi WHERE categorie = '$categorie_a_deplacer';";
$result3 = mysql_query($sql3) or die('Erreur SQL !<br />'.$sql3.'<br />'.mysql_error());
// on recupere la liste des ordre_categorie et categorie en db
$sql4 = "SELECT DISTINCT(`categorie`), ordre_categorie FROM $table ORDER BY ordre_categorie ASC";
$result4 = mysql_query($sql4) or die('Erreur SQL !<br />'.$sql4.'<br />'.mysql_error());
mysql_close();
ça marche bien si je choisi une categorie afin de lui donner un numero plus petit mais si je change de sens et que je defini un numero plus grand, cela ne fonctione plus si quelqu'un à une idée à soumettre afin de definir l'ordre des categories de façon simple
aller, j'y retourne
merci d'avance pour vos conseil