Bonjour à tous,
Ça fait un bon moment que je relis mon code, que je cherche sur Google et je ne trouve pas la réponse à mon problème.
Je veux écrire un code qui me permette de réorganiser les éléments d'une liste grâce à une entrée dans une base SQL qui s'appelle user_order.
PHP lit la BDD et organise ma liste par ordre croissant de user_order.
Il reste à ajouter ou enlever 1 à ce user_order pour le faire descendre ou monter et à donner l'ancien user_order à l'annonce qui suit (si je descend) ou qui précède (si je monte) pour ne pas avoir deux fois le même user_order.
Voici mon code :
Le problème c'est que quand j'exécute le code (avec 2 annonces) seule l'annonce voisine change de user_order. J'ai donc deux annonces avec le même user_order.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <?php // J'inclus un fichier qui contient le code pour se connecter à la base include ('./includes/tools.php'); // Je récupère le sens du changement (up ou down) dans une variable $ordre = $_GET['ordre']; // Je récupère l'id de l'annonce à monter ou descendre $id_annonces = $_GET['annonce']; // Je récupère son ordre d'origine dans la BDD $order_brut = mysql_query("SELECT user_order FROM bakovitz_annonces WHERE id_annonces = '$id_annonces'"); $order_net = mysql_fetch_array($order_brut); // Je crée la nouvelle valeur que j'insérerai dans user_order plus loin dans le cas ou je descend l'annonce $down = $order_net['user_order'] + 1; // Idem mais pour la monter $up = $order_net['user_order'] - 1; $ancien = $order_net['user_order']; switch($ordre) { // Si on descend l'annonce on ajoute 1 à son user_order case 'down' : mysql_query("UPDATE bakovitz_annonces SET user_order = '$down' WHERE id_annonces = '$id_annonces'"); // On enlève 1 à son voisin du dessous pour qu'il prenne sa place mysql_query("UPDATE bakovitz_annonces SET user_order = '$ancien' WHERE user_order = '$down'"); break; // L'inverse si on monte case 'up' : mysql_query("UPDATE bakovitz_annonces SET user_order = '$up' WHERE id_annonces = '$id_annonces'"); mysql_query("UPDATE bakovitz_annonces SET user_order = '$ancien' WHERE user_order = '$up'"); break; } ?>
Si je veux monter celle du bas, seule sa voisine du haut change...
Je suis sûr que c'est un truc évident de syntaxe ou quoi parce que la logique de mon code me paraît juste.
Merci par avance pour vos éventuelles réponses !
Partager