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 :

Jointure entre deux 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é
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut Jointure entre deux tables
    Bonjour à tous,

    A la suite d'un problème résolu, un petit problème vient d'apparaitre pour faire simple voilà quelques explications.

    J'ai deux tables :
    type_logement
    -id_logement
    -type_logement (chambre,studio,appartement,maison...)

    offres
    -id
    -id_logement
    -nom
    -prénom
    -rue...

    Le problème est que en voulant faire simple j'ai créer un formulaire pour créer une nouvelle offre ou modifier une offre cependant la liste déroulante elle ne copie dans la table offre que l'id_logement et non pas le type_logement.

    Les offres ressemblent alors à : vous avez choisi un 2, son loyer est de...
    Le problème c'est que à la place du 2 qui est l'id correpondant à appartement j'aurais aimer avoir, vous avez choisi un appartement...

    Le code affichant un résumé du contenu de la table est :

    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
     
     
     
    <?php
    $retour = mysql_query('SELECT * FROM base_logement ORDER BY id DESC');
    while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
    {
    ?>
    <tr align="center">
    <td><?php echo '<a href="rediger_offre.php?modifier_offre=' . $donnees['id'] . '">'; ?>Modifier</a></td>
    <td><?php echo '<a href="liste_offre.php?supprimer_offre=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
    <td><?php echo stripslashes($donnees['type']); ?></td>
    <td><?php echo stripslashes($donnees['meuble']);?></td>
    <td><?php echo stripslashes($donnees['loyer']);?></td>
    <td><?php echo stripslashes($donnees['distance']);?></td>
    <td><?php echo stripslashes($donnees['superficie']);?></td>
    <td><?php echo stripslashes($donnees['prenom_proprio']);?></td>
    <td><?php echo stripslashes($donnees['nom_proprio']);?></td>
    <td><?php echo stripslashes($donnees['rue']);?></td>
    <td><?php echo stripslashes($donnees['code_postal']);?></td>
    <td><?php echo stripslashes($donnees['ville']);?></td>
    </tr>
    Ici ce serait le champ type qu'il faudrait aller chercher dans une autre table.

    Merci d'avance pour votre aide et j'espère avoir étais assez claire

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    essaye ce genre de requête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT *
    FROM base_logement AS BL
    INNER JOIN type_logement AS TL
        TL.id_type_logement = BL.id_type_logement
    ORDER BY BL.id_logement DESC

  3. #3
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    pourquoi ne pas créer un tableau php de correspondance ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $tab_corr = array(1=>"chambre", 2=>"studio", 3=>"appartement", 4=>"maison");
    puis attaquer ce tableau avec l'id pour récupérer le type de logement ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut
    Merci Madfrix et nosferapti !

    C'est vrai que la solution d nosferapti est plus dans l'esprit de ce que je penser faire mais ta solution Madfrix est aussi intéressante bien que si il me fallait ajouter des types de logements il serait préférable de juste devoir modifier la table je pense.

    j'ai donc essayé, pour le moment sans succès je ne suis pas vraiment sur j'ai donc tester cela :

    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
     
    <?php
    $retour = mysql_query('SELECT * FROM base_logement ORDER BY id DESC');
    while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
    {
    ?>
    <tr align="center">
    <td><?php echo '<a href="rediger_offre.php?modifier_offre=' . $donnees['id'] . '">'; ?>Modifier</a></td>
    <td><?php echo '<a href="liste_offre.php?supprimer_offre=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
    <?
    $retour2= mysql_query('SELECT * 
    FROM base_logement AS BL
    INNER JOIN type_logement AS TL 
        TL.id_logement = BL.id');
    ?>
    <td><?php echo stripslashes($retour2['type_logement']); ?></td> <!-- type_logement est ici le contenu chambres,studio... -->
    <td><?php echo stripslashes($donnees['meuble']);?></td>
    <td><?php echo stripslashes($donnees['loyer']);?></td>
    <td><?php echo stripslashes($donnees['distance']);?></td>
    <td><?php echo stripslashes($donnees['superficie']);?></td>
    <td><?php echo stripslashes($donnees['prenom_proprio']);?></td>
    <td><?php echo stripslashes($donnees['nom_proprio']);?></td>
    <td><?php echo stripslashes($donnees['rue']);?></td>
    <td><?php echo stripslashes($donnees['code_postal']);?></td>
    <td><?php echo stripslashes($donnees['ville']);?></td>
    </tr>
    Il doit y avoir une erreur, je ne pense pas à devoir faire une boucle car il ne doit sortir de cette requête qu'une seule et unique réponse normalement...

    Merci encore pour votre aide ^^

  5. #5
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Re

    il manque déjà un ON dans ta requete avant TL.id_logement je pense

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 126
    Par défaut
    Merci Madfrix,

    J'ai corrigé mais j'ai un doute dans ce que je dois écrire pour l'echo...
    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
     
    <?php
    $retour = mysql_query('SELECT * FROM base_logement ORDER BY id DESC');
    while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les offres
    {
    ?>
    <tr align="center">
    <td><?php echo '<a href="rediger_offre.php?modifier_offre=' . $donnees['id'] . '">'; ?>Modifier</a></td>
    <td><?php echo '<a href="liste_offre.php?supprimer_offre=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
    <?
    $retour2= mysql_query('SELECT * 
    FROM base_logement AS BL
    INNER JOIN type_logement AS TL 
       ON TL.id_logement = BL.id_logement');
    $type_logement = $retour2['type_logement'];
    ?>
    <td><?php echo stripslashes($type_logement); ?></td> 
    <td><?php echo stripslashes($donnees['meuble']);?></td>
    <td><?php echo stripslashes($donnees['loyer']);?></td>
    <td><?php echo stripslashes($donnees['distance']);?></td>
    <td><?php echo stripslashes($donnees['superficie']);?></td>
    <td><?php echo stripslashes($donnees['prenom_proprio']);?></td>
    <td><?php echo stripslashes($donnees['nom_proprio']);?></td>
    <td><?php echo stripslashes($donnees['rue']);?></td>
    <td><?php echo stripslashes($donnees['code_postal']);?></td>
    <td><?php echo stripslashes($donnees['ville']);?></td>
    </tr>

  7. #7
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Quelque chose comme cela ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    while($ligne = mysql_fetch_assoc($retour2))
         $type_logement = $ligne['type_logement'];

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

Discussions similaires

  1. Jointure entre deux tables ?
    Par spirit69 dans le forum Access
    Réponses: 2
    Dernier message: 05/12/2006, 20h21
  2. jointure entre deux tables mysql
    Par Invité dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 23/04/2006, 20h08
  3. [MySQL] Jointure entre deux tables
    Par Flushovsky dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 03/10/2005, 18h55
  4. PROBLEME DE JOINTURE ENTRE DEUX TABLE
    Par DarkMax dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/01/2005, 15h11
  5. Jointure entre deux tables et résultat
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2004, 14h50

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