IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Problème tout simple mais résultat incompréhensible [Attitude] [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Problème tout simple mais résultat incompréhensible
    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 :

    Et voici l'affichage de ces liens :


    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 :
    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
    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 :

    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) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    index.php?page=profil&categ=liensrapides&modif=1&lrup=3
    Et voici le résultat :


    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.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    index.php?page=profil&categ=liensrapides&modif=1&lrup=4
    Et le résultat ? Encore plus étonnant...

    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

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Je m'auto réponds, j'avais pas prévu ca je pensais qu'il y avait plus d'activité ici =/ Ou alors peut etre personne ne veut m'aider.

    Bref ! De toute facon, je suis sur la voie de la solution, j'ai sorti le script de son contexte, j'ai viré toutes les fonctions, que du basique et surprise, ca fonctionne.

    Ce n'est donc pas ma logique ou mon code, c'est tout l'environnement qui fait merder le bouzin.

    A une prochaine...

  3. #3
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    hello ,

    dans ce cas n'oublie pas le TAG lol meme si tu t 'ei auto repondu !
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  4. #4
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    Je m'auto réponds, j'avais pas prévu ca je pensais qu'il y avait plus d'activité ici =/ Ou alors peut etre personne ne veut m'aider.
    Ce n'est pas que personne ne veut t'aider mais, primo, c'est le weekend, deuxio, c'est les vacances scolaires pour certains, il y a donc un peu moins de monde sur les forums, et tertio, il faut pouvoir répondre..
    De plus il y a beaucoup de messages sur les forums et il faut parfois etre un peu patient.

    Pour répondre à ton problème :
    Effectivement , si tu as déjà sorti le script et qu'il fonctionne tout seul, il faut chercher dans le reste de tes pages concernées. Tu as probablement un script qui interferre avec celui-ci, oubien l'ordre d'execution des scripts n'est peut etre pas bon ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Je n'étais pas agressif, je constatais seulement

    Oui effectivement, il va me falloir reprendre tout le code préalable, je suis déja en train d'adapter le maximum et puis si ca ne suffit pas je devrais tout reprendre...

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    ok c'est résolu [edit]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mapping tout simple mais pourtant
    Par inhib-- dans le forum Hibernate
    Réponses: 3
    Dernier message: 26/06/2008, 14h46
  2. Problème tout simple
    Par Hurin dans le forum C++
    Réponses: 3
    Dernier message: 08/04/2008, 09h07
  3. Problème tout simple : requête et liste déroulante
    Par Ellix dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 05/07/2007, 13h06
  4. Petite fonction toute simple, mais
    Par renaud26 dans le forum Général JavaScript
    Réponses: 46
    Dernier message: 21/07/2006, 14h34
  5. selection simple mais résultat multiple dans combobox
    Par forzaxelah dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/06/2006, 14h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo