Bonjour,
Je suis depuis hier midi sur un script que j'aurais pensé terminer en à peine 30 minutes, et je l'ai terminé en moins que ca. Je vais vous l'expliquer. Ce script gère des liens rapides dans le profil d'un membre, le membre peut en rajouter, et modifier/supprimer les liens déja présents.
Mais ce qui me pose problème actuellement c'est de remonter ou descendre les liens. Je vous montre.
Voici la table :
![](http://i11.servimg.com/u/11/04/73/38/apercu12.png)
Et voici l'affichage de ces liens :
![](http://i11.servimg.com/u/11/04/73/38/apercu13.png)
Comme vous pouvez le voir je permets au membre de les classer via le champ place_lienrapide. Et sur l'affichage ce qui permet de remonter les liens ou de les descendre ce sont les petites fleches. Je n'ai codé que la remontée puisque déja ca me pose un problème auquel je ne m'attendais pas.
L'affichage se fait dans l'ordre croissant des places de liens par la requete :
$liensrapidesmembre = 'SELECT * FROM '.$prefix.'_liensrapides WHERE membre_lienrapide = '.$id_membre.' ORDER BY place_lienrapide ASC';
Voila comment ca fonctionne. A gauche vous avez pour chaque ligne, la place du lien, suivi de son id_lienrapide dans la table. Et a droite, la fleche qui remonte a un lien de la forme :
index.php?page=profil&categ=liensrapides&modif='.$_GET['modif'].'&lrup='.$reslr['id_lienrapide']
Et maintenant le code qui permet de permuter les liens quand on en remonte un :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| if ($placelien != 1)
{
$placemoinsun = $placelien-1;
//- récupèrer l'id du lien dont la place vaut 1 de moins (dans notre exemple 3, pour LE MEME MEMBRE)
$reqtrouveidlienplaceprecedente = 'SELECT * FROM '.$prefix.'_liensrapides WHERE place_lienrapide='.$placemoinsun.' AND membre_lienrapide='.$id_membre.';';
$tabrestrouveidlienplaceprecedente = executerrequete($reqtrouveidlienplaceprecedente,'selection');
$restrouveidlienplaceprecedente = mysql_fetch_array($tabrestrouveidlienplaceprecedente[0]);
$restrouveidlienplaceprecedentetrouvee = $restrouveidlienplaceprecedente['id_lienrapide'];
// - mettre a jour le lien a upper en lui donnant la place - 1 (donc 3 si le lien a upper est en place 4)
$resmajlienaupper = 'UPDATE '.$prefix.'_liensrapides SET place_lienrapide='.$placemoinsun.' WHERE id_lienrapide='.$_GET['lrup'].' AND membre_lienrapide='.$id_membre.';';
executerrequete($resmajlienaupper,'miseajour');
// - mettre a jour le lien qui était a la place - 1 en lui donnant l'ancienne place du lien uppé (dans notre exemple : 4)
$resmajlienbouge = 'UPDATE '.$prefix.'_liensrapides SET place_lienrapide='.$placelien.' WHERE id_lienrapide='.$restrouveidlienplaceprecedentetrouvee.' AND membre_lienrapide='.$id_membre.';';
executerrequete($resmajlienbouge,'miseajour');
} |
Les commentaires expliquent la marche suivie, le raisonnement. Normalement ca devrait être nickel, et en théorie sur le papier ca fonctionne.
Seulement voila.
Prenons un point de départ :
![](http://i11.servimg.com/u/11/04/73/38/apercu14.png)
C'est donc le classement de base, on va cliquer sur le lien en place 4 pour le remonter (en place 3 donc). Le lien prenant l'id, ce sera ce lien (n°3) :
index.php?page=profil&categ=liensrapides&modif=1&lrup=3
Et voici le résultat :
![](http://i11.servimg.com/u/11/04/73/38/apercu15.png)
Observez que déja, les liens 2 et 3 sont inversés.
Mais c'est pas fini...on recommence. Le lien du bas on veut le remonter. Meme méthode.
index.php?page=profil&categ=liensrapides&modif=1&lrup=4
Et le résultat ? Encore plus étonnant...
![](http://i11.servimg.com/u/11/04/73/38/apercu16.png)
Meme chose encore permuté, mais comparez les images du bas entre cet apercu et le précedent, on en a permuté 3 avec deux updates...
Conclusion c'est une erreur d'affichage. MAIS le poblème. C'est que je fais les updates d'abord et le select ensuite il ne devrait y avoir aucun problème d'affichage !
Qui plus est, il suffit de recharger la page sans aucun changement de plaace pour que la table et l'affichage concorde enfin...
Un truc de dingue, et je me suis couché à 5h pour ca >.< et j'ai toujours pas trouvé...
Merci de votre aide
Partager