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 :

Requête sur 2 tables [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Presque retraitée
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2008
    Messages : 75
    Par défaut Requête sur 2 tables
    Bonjour,

    Je suis plus que débutante en ce qui concerne le SQL, et, en général, j'essaie de me débrouiller seule ou en parcourant des forums pour trouver la solution à mes problèmes, mais là, je n'ai pas trouvé comment faire une requête qui, pourtant, doit être très courante... (si la réponse existe sur ce site, d'avance toutes mes excuses, c'est que j'aurai mal cherché...)

    D'une part, j'ai deux tables :

    1) sbbfrs (table des fournisseurs) avec un id (autoincrémenté) que j'ai appellé : frsid, societe, adresse, etc.
    2 ) sbbproduit (table des produits) avec : id (autoincrémenté), nom, ancienprix, spec, photoarticle, frais, prix, frsid (idem id table fournisseurs)

    D'autre part, j'ai une page vitrine.php sur laquelle tous les produits contenus dans la table "produits" sont listés : nom, image - tous fournisseurs confondus - avec, pour chaque produit, un bouton "visualiser". Cliquer sur l'un des boutons "visualiser" amène à la page "detail.php", laquelle devrait afficher l'image, le nom, la description, le prix et le nom du fournisseur du produit sélectionné dans la page précédente. Pour avoir le nom du fournisseur et non le n° lié à son id dans ma réponse, j'ai joint les deux tables et ma requête est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $result = mysql_query("SELECT sbbproduit.id, sbbproduit.nom, sbbproduit.ancienprix, sbbproduit.spec, sbbproduit.photoarticle, sbbproduit.frais, sbbproduit.prix, sbbproduit.frsid, sbbfrs.frsid FROM sbbproduit, sbbfrs WHERE sbbproduit.frsid= sbbfrs.frsid AND sbbproduit.id='id'");
    $row = mysql_fetch_row($result);
    Je pensais ainsi que la page détail.php afficherait les données du produit sélectionné dans la page précédente, mais je n'ai qu'une page vide qui pourtant contient bien dans son url le n° du produit sélectionné. Par exemple, pour le 3e article de la page : detail.php?id=3.

    J'ai fait divers essais et ce qui, je suppose, cloche, c'est "AND sbbproduit.id='id'" puisque si je ne le mets pas, les données s'affichent sur la page détail mais avec le premier produit de la table ce qui est normal puisque je ne précise rien quant au "tri" des données (je ne sais pas si je m'explique bien...).

    J'avoue que j'apprécierai énormément toute l'aide qui me sera apportée car cela fait deux jours que j'essaie de résoudre seule mon problème.

  2. #2
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    Au vu du bout de code php, il m'apparaît assez normal que la requête retourne un résultat vide :
    sbbproduit.id='id'"
    Il y a peu de chance qu'un produit ait pour identifiant 'id'.
    D'autre part tu devrais essayer un syntaxe avec JOIN pour faire la jointure entre tes deux tables.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre confirmé
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Presque retraitée
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2008
    Messages : 75
    Par défaut
    Merci de ta réactivité.

    C'est aussi ce que je me suis dit, mais comment faire pour que les données qui s'affichent soient celles du produit sélectionné à la page précédente, et non celles du premier produit entré dans la table ?

  4. #4
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Ça c'est un problème qui a peu à voir avec MySQL, mais bien plus avec HTML et PHP.
    Si le formulaire est transmis en méthode POST, tu trouveras dans ton script PHP detail.php la valeur en $_POST['id'] (à supposer que 'id' soit le name du bouton dans ton script vitrine.php.
    Si la méthode est GET, ou la valeur transmise par URL ce sera $_GET['id'].
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  5. #5
    Membre confirmé
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Presque retraitée
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2008
    Messages : 75
    Par défaut
    Mon lien entre les deux pages se fait avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<a href=\"detail.php?id=$row[0]\"><img src=\"$illustrations/visuel.png\" border=\"0\" alt=\"Visualiser l'article\"></a>";
    et ce lien se fait bien puisque dans l'url de la page detail.php l'id correspondant au produit sélectionné s'indique tout à fait normalement.

    Mais peut-être faut-il que je repose mon problème dans le forum consacré au php si tu penses qu'il ne vient pas de ma requête sql ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Salut,

    Le problème vient de là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AND sbbproduit.id='id'
    Si ton id est un champ de type numérique (ce qui à mon avis est certainement le cas)-> il ne faut pas l'encadrer d'apostrophes.

    De plus, je suppose que id est une variable?(je ne fais que deviner vu que le code que tu fournis est assez restreint) -> $id si c'est le cas

    La syntaxe correcte est donc la suivante:
    $result = mysql_query("SELECT sbbproduit.id, sbbproduit.nom, sbbproduit.ancienprix, sbbproduit.spec, sbbproduit.photoarticle, sbbproduit.frais, sbbproduit.prix, sbbproduit.frsid, sbbfrs.frsid FROM sbbproduit, sbbfrs WHERE sbbproduit.frsid= sbbfrs.frsid AND sbbproduit.id=$id");
    Tu aurais pu voir l'erreur sur ta page en utilisant la fonction mysql_error()

    $result = mysql_query("SELECT sbbproduit.id, sbbproduit.nom, sbbproduit.ancienprix, sbbproduit.spec, sbbproduit.photoarticle, sbbproduit.frais, sbbproduit.prix, sbbproduit.frsid, sbbfrs.frsid FROM sbbproduit, sbbfrs WHERE sbbproduit.frsid= sbbfrs.frsid AND sbbproduit.id=$id") or die("Erreur select:".mysql_error());

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

Discussions similaires

  1. Besoin d'aide pour requête sur grosse table
    Par Fabouney dans le forum Langage SQL
    Réponses: 3
    Dernier message: 25/01/2006, 09h01
  2. Problème de requêtes sur deux tables
    Par Pymm dans le forum Access
    Réponses: 6
    Dernier message: 06/09/2005, 09h06
  3. Requête sur plusieurs tables
    Par drinkmilk dans le forum Langage SQL
    Réponses: 8
    Dernier message: 11/07/2005, 12h25
  4. Requête sur 2 tables ?
    Par kibodio dans le forum Langage SQL
    Réponses: 3
    Dernier message: 30/03/2005, 15h57
  5. Requête sur 2 tables et surtout novice...
    Par kibodio dans le forum Langage SQL
    Réponses: 13
    Dernier message: 03/03/2005, 15h45

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