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 :

Associer deux champs et les afficher sur une page


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Par défaut Associer deux champs et les afficher sur une page
    Bonjour à tous,

    je suis assez débutant dans la programmation et dans le cadre d'un cours, je dois réaliser une base de données php/mysql.

    J'ai donc choisis de la faire sur une bibliothèque. J'ai déjà crée mes fichiers php et mes tables pour tout ce qui concerne les clients et les livres de ma bibliothèque.
    Cependant je voudrais pouvoir associer un nom de client avec un nom de livre. Je m'explique: quand un client empruntera un livre, je sélectionnerai le nom du client et le nom du livre qu'il emprunte comme ça je pourrai avoir un liste avec 'qui a loué quoi'.

    Je voulais donc créer une table EMPRUNT en mysql et y mettre les champs idlivre et idclient (qui sont 2 clés primaires que j'utilisent déjà dans d'autres tables). Mais j'ai un problème déjà pour créer une table avec 2 clés primaires et ensuite je ne vois pas trop comment je pourrais faire pour que le nom du client et du livre soit associé et qu'ainsi je puisse faire une liste avec les locations en cours...

    Bon je ne sais pas si je me suis bien fait comprendre, mais si vous avez une idée qui pourrait m'aider ce serait très sympa


    Merci d'avance à tous

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    ta table "emprunt" doit avoir son propre id, qui reference l'emprunt.
    idlivre et idclient ne sont que des clefs etrangères ; il peut meme y avoir plusieurs fois le meme couple client/livre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Par défaut
    Citation Envoyé par sabotage Voir le message
    ta table "emprunt" doit avoir son propre id, qui reference l'emprunt.
    idlivre et idclient ne sont que des clefs etrangères ; il peut meme y avoir plusieurs fois le meme couple client/livre.
    Merci sabotage.

    J'ai créé ma table EMPRUNT comme ceci:
    CREATE TABLE `EMPRUNT` (
    `Idemprunt` INT NOT NULL AUTO_INCREMENT,
    `Idclient` INT NOT NULL,
    `Idlivre` INT NOT NULL,
    PRIMARY KEY `PrimaryKey` (`Idemprunt`)
    )

    Ce que je ne sais pas si c'était nécessaire de remmettre les attributs idclient et idlivre sachant que je l'ai déjà fait pour la table CLIENT (idclient) et la table LIVRE (idlivre).

    Ce qui a c'est que je ne sais pas si je peux maintenant "associer" le numéro d'id d'un de mes clients existants avec le numéro d'id d'un des livres existants afin de savoir tel client à loué tel livre et l'afficher dans un tableau à 2 colonnes: Nom client et Nom du livre emprunté. Le tout sur une seule page php ????


    Merci d'avance

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ca s'appelle une jointure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT client.nom, livre.nom FROM emprunt 
    JOIN livre USING (Ilivre) 
    JOIN client USING (Idclient)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Ca s'appelle une jointure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT client.nom, livre.nom FROM emprunt 
    JOIN livre USING (Ilivre) 
    JOIN client USING (Idclient)
    Merci beaucoup je vais essayer ça

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Par défaut
    Bon j'ai essayé avec la jointure mais j'ai un peu de mal

    Je pense que le plus simple c'est que je vous montre mon code php utilisé pour ma page emprunt.php
    Le code est sans doute faux j'ai essayé de "bidouiller" un peu comme je peux mais je suis débutant en sql donc c'est pas évident

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
    $db_user = "root";
    $db="travailinfo";
    $db_pass = "mysql";
    $db_host = 'localhost';
    $link= mysql_connect($db_host, $db_user, $db_pass);
    if (! $link)
    die("Impossible de se connecter &agrave; la base de donn&eacute;es");
    mysql_select_db($db , $link)
    or die("Impossible d'ouvrir $db: ".mysql_error());
    $request=mysql_query("select Idclient,NomClient,VilleClient from CLIENT");
        if(!$request)
          {
            print("erreur de recherche :".mysql_error());exit;
          }
        print("<form action=assoc_client_livre.php method=post>
    	<b>Choisissez le client</b><br>
        <select name=Idclient>");
        while ($row=mysql_fetch_array ($request))
          {
            print("<option value=$row[0]>$row[1] | $row[2]</option> ");
          }
    	  print("</select>");
    	  print("<br><br>");
    $request=mysql_query("select Idlivre,TitreLivre,Auteur from LIVRE");
        if(!$request)
          {
            print("erreur de recherche :".mysql_error());exit;
          }
        print("<b>Choisissez le livre</b><br>
        <select name=Idlivre>");
        while ($row=mysql_fetch_array ($request))
          {
            print("<option value=$row[0]>$row[1] | $row[2]</option>");
          }
        print("</select>
        <br><br><br><br><input type=submit value=Louer>
        </form> ");
    $sql = "SELECT NomClient, TitreLivre FROM CLIENT, LIVRE
    WHERE CLIENT.Idclient=LIVRE.Idlivre"; 
    mysql_close($link);
    ?>
    Je ne sais pas où placer le code que j'ai mis en gras.

    Cette page est en fait toute simple avec deux listes déroulantes: une avec les noms des clients qui sont dans la base de données CLIENT sous le champ NomClient et l'autre liste déroulante avec les livres de ma table LIVRE sous le champs TitreLivre.

    J'ai donc en plus une table EMPRUNT ou je voulais mettre l'id du client et l'id du livre mais je ne sais pas si c'est juste
    La table emprunt a les champs Idemprunt, Idclient et Idlivre


    Mon but étant d'afficher sur la page appelée par le formulaire du code fourni un tableau avec une colonne Nom du client et à côté du nom, le nom du livre que j'aurai sélectionné auparavant dans cette liste déroulante.


    Voila je sais que je suis un peu chiant avec mes questions débiles mais faut bien commencer par quelque chose


    Encore merci d'avance

Discussions similaires

  1. Afficher les tables sur une page php
    Par Maxime50 dans le forum Langage
    Réponses: 15
    Dernier message: 08/09/2009, 16h01
  2. Réponses: 3
    Dernier message: 21/08/2008, 16h07
  3. Réponses: 3
    Dernier message: 13/09/2007, 13h33
  4. Réponses: 2
    Dernier message: 20/08/2007, 07h34
  5. Réponses: 2
    Dernier message: 13/07/2006, 09h21

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