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

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    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
    Points : 44 155
    Points
    44 155
    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.

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    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
    Points : 44 155
    Points
    44 155
    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)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    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

  7. #7
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Comment par ecrire correctement le HTML, en mettant des guillemets à tes valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<form action="assoc_client_livre.php" method="post">
    	<b>Choisissez le client</b><br>
        <select name="Idclient">';
    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.
    alors la je n'ai rien compris à ce que tu voulais faire.
    le formulaire que tu nous montres est bien pour faire un emprunt ?

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    En fait le formulaire sert à réaliser l'emprunt oui. Donc je sélectionne un client et un livre et en cliquant sur "emprunter" j'associe ces 2 valeurs ensemble ce qui me permettra par après d'avoir un liste des emprunts.

    Par exemple:
    je sélectionne un nom: Patrick Dupond et un livre dans la liste. En cliquant sur le bouton "Emprunter", le nom du client et le nom du livre vont se stocker dans la table EMPRUNT.

    Par après, via une autre page pas encore créée, j'affiche un tableau avec une colonne avec le nom (patrick dupond) une colonne avec le livre.


    Ce formulaire ci n'est censé servir qu'à associer un nom à un livre mais je ne sais pas si je m'y prend bien.

    Je suis parti d'un autre formulaire que j'ai utilisé pour la modification des données du client et j'ai essayé de le transformer pour arriver à un résultat mais c'est pas encore ça apparemment

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Par après, via une autre page pas encore créée, j'affiche un tableau avec une colonne avec le nom (patrick dupond) une colonne avec le livre.


    Ce formulaire ci n'est censé servir qu'à associer un nom à un livre mais je ne sais pas si je m'y prend bien.
    Si mais il faut faire l'étape suivante, qui est un INSERT dans la table EMPRUNT avec l'id du livre et l'id du client tels que sélectionnés dans la page.

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Et ça je dois le faire sur ma page emprunt.php ou sur la page qui est appelée par le formulaire?

  11. #11
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    dans la page appelée par le formulaire, celle qui est mentionnée dans l'attribution "action" du POST.

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Bon finalement j'arrive à rien de bon donc j'ai un peu changé: j'ai modifié ma table Emprunt avec comme attributs: Idemprunt, NomClient et TitreLivre.

    Je vais donc essayé via la page emprunt.php de stocker le nom du client sélectionné dans la liste déroulante dans une variable, le nom du livre sélectionné dans une autre variable, et mettre le tout avec un Idemprunt. Donc normalement chaque Idemprunt aura un nom de client et du livre qu'il a emprunté et ce sera plus facile pour les afficher par après dans un tableau récapitulatif.


  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Citation Envoyé par dreamquad Voir le message
    Bon finalement j'arrive à rien de bon donc j'ai un peu changé: j'ai modifié ma table Emprunt avec comme attributs: Idemprunt, NomClient et TitreLivre.
    Il faut bien voir que c'est un pas en arrière, c'est la structure d'avant qui était la bonne.
    Il faudrait plutôt que tu arrives à faire des jointures comme dit précédemment dans la discussion. Ca, ce serait un pas en avant

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