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 :

Affichage deux tables différentes


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de Meloooo
    Femme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2008
    Messages : 324
    Par défaut Affichage deux tables différentes
    Bonjour,
    Je suis en train de créer un site d'agence immobilière
    J'ai deux tables :
    Maison et Maison_photo
    Ces deux tables sont reliées par une clé étrangère (numero maison)
    Je voudrais afficher de la table maison la ville et la description de la maison (table maison) et je voudrais également afficher la photo correspondante à la maison (table maison_photo)
    Mais je sais pas du tout comment faire.
    J'ai pensée à un union qui ressemble à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $requete=mysql_query("SELECT VilleMaison, DescriptionMaison FROM maison UNION SELECT Photo1 FROM maison_photo");
    Mais après je ne sais pas du tout comment faire.
    Merci d'avance pour vos réponses.

  2. #2
    Membre extrêmement actif Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Par défaut c'est juste un gribouillé
    J'espère ça pourra te mettre sur la piste. Je l'ai pas tester, juste gribouillé :

    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
     
    <?php 
    // on se connecte à MySQL 
    $db = mysql_connect('localhost', 'login', 'password'); 
     
    // on sélectionne la base 
    mysql_select_db('nom_de_la_base',$db); 
     
    // on crée la requête SQL 
    $sql = 'SELECT maison.villemaison as ville,maison.descriptionmaison as description,maison_photo.photo1 as photo from maison inner join maison_photo on maison.num_maison = maison_photo.num_maison'; 
     
    // on envoie la requête 
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    while($data = mysql_fetch_assoc($req)) 
        { 
        // on affiche les informations de l'enregistrement en cours 
        echo ''.$data['ville'].' '.$data['description'].''.$data['photo'].'';
        } 
     
    // on ferme la connexion à mysql 
    mysql_close(); 
    ?>

  3. #3
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Une union ? O.o

    Hum, je n'ai pas fait attention à la structure de tes tables mais voici :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT maison.identifiant, maison.Ville, maison.description, maisonPhoto.photo
    FROM maison, maisonPhoto
    WHERE maison.identifiant = maisonPhoto.identifiant
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Par défaut rep
    Il te faut une jointure sql

    exemple

    Table a contient : n_immo, titre ( n_immo ->clé)
    Table b contient : n_immo, desc (n_immo ->clé de liaison)
    Table c contient : n_immo, photo (n_immo ->clé de liaison)

    Tu dois lier les tables avec une clé de jointure ici n_immo ( qui est dans chaque table).

    ce qui donne en sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $sql=mysql_query("SELECT a.n_immo,b.desc,c.photo FROM Table a a, Table b b,Table c c WHERE a.n_immo = b.n_immo AND b.n_immo = c.n_immo");
    while($res=mysql_fetch_object($sql)){
    echo '<tr>
                <td>'.$res->n_immo.'</td>
                <td>'.$res->title.'</td>
               <td>'.$res->desc.'</td>
               <td>'.$res->photo.'</td>
           </tr>
           ';
                                                      }
    Voila !

  5. #5
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Sauf que trois tables... J'espère que c'est simplement pour exemple.

    Par ailleurs Meloooo, si une photo correspond à une maison et à une maison, il ne peut y avoir qu'une photo...

    Pourquoi ne pas avoir le tout dans une seule table ?
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Par défaut rep
    c'est un exemple que j'ai fait.

    En terme de rapidité serveur. Les astuces que je fais moi c'est :

    une table

    doit contenir 6 champs avec des nom de champs inférieur ou égale à 5 lettres

    Séparer les données en plusieurs tables que si celle ci contient un nombre de champ superieur à 6.

    Utiliser les clé et les index pour liées les tables.

    Toujours mettre en premier dans une table les cle et index, ensuite les données.

    Donc la contruction d'une table selon moi dépend de ces règles pour que serveur aille vite dans l'execution des requêtes sql.

    Le choix du moteur de base donnée est important aussi .

    Ensuite pour ceux qui ont des base des données titanesque de l'ordre de pus de 1 million de données dans une table.
    Le scindage de la table en plusieurs tables par ordre aplhabetique, etc... est une astuce car la recherche dicotomique du serveur est plus rapide.

    Ou si on a les moyen on passe en base de donnée oracle.

    Donc le tout sur un table n'est pas souhaitable si on a plus de 6 champs

    Voila ce que sais .

    Si des personnes ont d'autres astuces pour l'optimisation qu'il le dise je suis preneuse

  7. #7
    Membre extrêmement actif Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    Une union ? O.o

    Hum, je n'ai pas fait attention à la structure de tes tables mais voici :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT maison.identifiant, maison.Ville, maison.description, maisonPhoto.photo
    FROM maison, maisonPhoto
    WHERE maison.identifiant = maisonPhoto.identifiant
    heu elle est pas trop pourri ma réponse?
    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
     
    <?php 
    // on se connecte à MySQL 
    $db = mysql_connect('localhost', 'login', 'password'); 
     
    // on sélectionne la base 
    mysql_select_db('nom_de_la_base',$db); 
     
    // on crée la requête SQL 
    $sql = 'SELECT maison.villemaison as ville,maison.descriptionmaison as description,maison_photo.photo1 as photo from maison inner join maison_photo on maison.num_maison = maison_photo.num_maison'; 
     
    // on envoie la requête 
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    while($data = mysql_fetch_assoc($req)) 
        { 
        // on affiche les informations de l'enregistrement en cours 
        echo ''.$data['ville'].' '.$data['description'].''.$data['photo'].'';
        } 
     
    // on ferme la connexion à mysql 
    mysql_close(); 
    ?>

  8. #8
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Non mais pourquoi Inner Join plutôt que dans la clause WHERE ?

    (il y a un gain de performance ou c'est une habitude ? )
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  9. #9
    Membre extrêmement actif Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Par défaut
    Citation Envoyé par Deallyra Voir le message
    Non mais pourquoi Inner Join plutôt que dans la clause WHERE ?

    (il y a un gain de performance ou c'est une habitude ? )
    Déjà je crois qu'on est parti sur des trucs complètement disproportionnés, sachant que comme tu l'as fais remarqué il n'y a pas besoin de deux tables pour son projet. En effet les photos peuvent très bien être incluses dans la première table. Au pire, je ne pense pas qu'il y en est beaucoup, et des champs appellés photo1, photo2 ... peuvent suffire.

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/03/2006, 17h37
  2. SQL Query sur deux tables différentes.
    Par kabal22 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 25/12/2005, 17h52
  3. Sum de deux champs sur deux tables différentes
    Par kluh dans le forum Oracle
    Réponses: 11
    Dernier message: 29/09/2005, 18h21
  4. Comparaison entre deux champs de deux tables différentes
    Par liam81150 dans le forum Requêtes
    Réponses: 1
    Dernier message: 26/09/2005, 20h53
  5. Réponses: 3
    Dernier message: 11/07/2005, 15h20

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