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 :

PHP et requete Sql [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Par défaut PHP et requete Sql
    Bonjour à tous,

    Je rencontre actuellement un problème...

    Je dispose de deux tables :
    Compétence : id_competence, image_active, image_inactive
    Contact : id_contact, etc...

    Concernant les images, l'image active affiche une icone noire correspondant à la compétence et l'image inactive est en fait la meme image mais grisée...

    Un contact possede 1 a N compétences et une compétence peut avoir de 0 a n contacts !
    Cela donne donc lieu à la création d'une 3eme table avec les clefs étrangères adéquates...
    Cette table s'appelle Lien...

    Ma requete sql permet de retrouver toutes les compétences que possede un contact, de ce point de vue pas de probleme.
    J'affiche ensuite l'image active adéquate.

    Le problème concerne la requete inverse, consistant à aller chercher les compétences qu'il n'a pas et ainsi d'afficher l'image inactive.

    Je récupere l'identifiant du contact
    $identifiant=$_GET['id'];
    $res = mysql_query( 'SELECT id_competence FROM competence ORDER BY id_competence' );

    while($data = mysql_fetch_assoc($res))
    {
    Ici la requete qui n'affiche que les compétences que possede le contact
    $res2 = mysql_query( 'SELECT p.image_active as imagea, p.id_competence FROM lien l, contacts c, competence p WHERE l.id_contact = c.id_contact AND l.id_competence = p.id_competence AND p.id_competence="'.$data['id_competence'].'" AND c.id_contact="'.$identifiant.'"' );

    $data1 = mysql_fetch_assoc($res2);
    if($data1)
    {
    echo '<img src="'.$data1['imagea'].'"/>';
    }
    else
    {
    Et ici la requete affichée s'il n'a pas la compétence en question...
    $res3 = mysql_query( 'SELECT p.image_inactive as imagen FROM lien l, contacts c, competence p WHERE l.id_contact = c.id_contact AND l.id_competence = p.id_competence AND p.id_competence<>"'.$data['id_competence'].'" AND c.id_contact="'.$identifiant.'"' );
    $data2 = mysql_fetch_assoc($res3);

    if($data2)
    {
    echo '<img src="'.$data2['imagen'].'"/>';
    }
    else
    {

    }
    }
    }


    Voila, en piece jointe l'allure des résultats que j'obtiens...
    J'ai bien les compétences en question en image noire mais la 2 eme requete censée faire le contraire me met toujours la meme image...
    Cette requete doit être repensée mais comment ??

    Je suis ouvert à toutes les critiques et éventuelles demandes d'info supplémentaires et surtout à une solution =)

    Merci d'avance =)
    Images attachées Images attachées  

  2. #2
    Membre très actif
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Par défaut
    Bonjour,

    Tu pourrais simplement faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT de toutes les compétences
    Tant que t'as des résultat
        stocker l'id de la compétence en cours
        Si cette compétence est dans la relation lien avec l'id_membre concerné
            Affichage de l'image normal
        Sinon
            Affichage de l'image grisé
    Fin tant que
    A moins que j'ai mal compris ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    à moins d'une erreur, cette écriture est plus lisible (et évite les erreurs de " ' )
    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
    <?php
    // image_active
    $sql2 = "SELECT p.image_active as imagea, p.id_competence 
    	FROM lien l
    	INNER JOIN contacts c 
    		ON l.id_contact = c.id_contact
    	INNER JOIN competence p 
    		ON l.id_competence = p.id_competence
    	WHERE p.id_competence = '".$data['id_competence']."' 
    	AND c.id_contact = '".$identifiant."';"
    	;
    $res2 = mysql_query($sql2);
     
    // image_inactive
    $sql3 = "SELECT p.image_inactive as imagen 
    	FROM lien l
    	OUTER JOIN contacts c 
    		ON l.id_contact = c.id_contact
    	OUTER JOIN competence p 
    		ON l.id_competence = p.id_competence
    	WHERE p.id_competence != '".$data['id_competence']."' 
    	AND c.id_contact = '".$identifiant."';"
    	;
    $res3 = mysql_query($sql3);
    ?>
    Remarquer les INNER JOIN et OUTER JOIN.
    Voir : http://sqlpro.developpez.com/cours/s...ointures/#LIII

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Par défaut Re
    Bonsoir,

    Merci pour vos réponses !

    Je regarde tout cela de plus pres et vous tiens au courant !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Par défaut Intégration
    J'ai intégré tes 2 requetes utilisant ces fameux Outer et Inner JOIN et j'ai un probleme dans la 2eme requete !! La premiere faisant bien son boulot :p

    Voici le code erreur renvoyé par Wamp =>
    ( ! ) Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\appli_free\fiche-contact.php on line 58

    Je ne maitrise pas encore tres bien cette notion de jointure et m'en remets à tes explications ! =)

    Quant à un echo mysql_error() =>
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUTER JOIN contacts c ON l.id_contact = c.id_contact OUTER JOIN competence' at line 3

    EDIT :
    Je me sens un peu bete mais bon :p
    Je vous remets mon code en optimisé et surtout qui marche !!!!

    $identifiant=$_GET['id'];
    $res = mysql_query( 'SELECT id_competence, image_inactive FROM competence ORDER BY id_competence' );

    // On boucle et on affiche chaque enregistrement
    while($data = mysql_fetch_assoc($res))
    {

    // image_active
    $sql2 = "SELECT p.image_active as imagea, p.id_competence
    FROM lien l
    INNER JOIN contacts c
    ON l.id_contact = c.id_contact
    INNER JOIN competence p
    ON l.id_competence = p.id_competence
    WHERE p.id_competence = '".$data['id_competence']."'
    AND c.id_contact = '".$identifiant."';"
    ;
    $res2 = mysql_query($sql2);
    // On affiche les informations de l'enregistrement en cours
    $data1 = mysql_fetch_assoc($res2);

    if($data1)
    {
    echo '<img src="'.$data1['imagea'].'"/>';
    }
    else
    {
    echo '<img src="'.$data['image_inactive'].'"/>';
    }

    }
    ?>

    Merci encore à vous =)

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

Discussions similaires

  1. [MySQL] recuperation variable php pour requete sql
    Par noche29 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/03/2011, 14h36
  2. [MySQL] PHP et requetes SQL
    Par mjs21 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 13/06/2008, 14h39
  3. [SQL] Menu deroulant PHP dynamique requete SQL
    Par pit2121 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/12/2007, 16h16
  4. [MySQL] php et requete sql mal executée
    Par sunshine33 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/04/2007, 12h16
  5. [Tableaux] affichage tableau php apres requete sql count
    Par heteroclite dans le forum Langage
    Réponses: 1
    Dernier message: 13/09/2006, 20h53

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