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 :

Problème avec tables croisés [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 73
    Points : 35
    Points
    35
    Par défaut Problème avec tables croisés
    Bonjour,
    Je sollicite votre aide car je bloque sur un script. Je pense que c'est assez facile pour les codeurs mais comme je suis novice et que j'apprends sur le tas, j'ai un peu de mal.

    Je souhaite afficher les derniers commentaires sur mes photos sur ma page d'accueil.

    Pour cela, je dois extraire les données de deux tables :
    table photos_comments : image_id, com_id, com_crtdt, com_message, com_author
    table photos_images : image_id, image_url

    J'ai pu extraire les données que je veux dans la table photos_comments (voir script ci-dessous), mais il me faut aussi image_url (de la table photos_image). Je ne sais pas comment faire, c'est un truc croisé

    Si quelqu'un veut bien me donner un petit coup de pouce, ce serai sympa. Merciiiiii


    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
    <?
    // Definition des identifiants de connexion
    $DBHOST='sql2'; // Serveur Mysql
    $USEBDD='monsite_galerie'; // Base de donnée utilisée
    $USER='monsite'; // Administrateur de la bdd
    $PASSWORD='motdepasse'; // Mot de passe d'accès à la bdd
     
    // Connexion à MySQL :
    $link = mysql_connect($DBHOST,$USER,$PASSWORD);
    $db = mysql_select_db($USEBDD,$link);
     
    // Extraction
    $requete="SELECT date_format(com_crtdt, 'le %d/%m/%y à %Hh%s') as com_crtdt, com_message, com_author, image_id FROM photos_comments WHERE com_status='1' ORDER BY com_id desc LIMIT 12";
    $result=mysql_db_query("monsite_galerie",$requete);
     
    // Affiche resultats
    while($voir=mysql_fetch_array($result))
    {
    $com_message_court= htmlspecialchars(substr($voir['com_message'], 0, 55)) . "...";
    $com_author = htmlspecialchars($voir['com_author']);
    $com_crtdt = htmlspecialchars($voir['com_crtdt']);
    $image_id = htmlspecialchars($voir['image_id']);
     
    echo "<a href=\"photos/?q=image/$image_id-$image_url\" target=\"_self\">".$com_message_court."</a><br> 
    ";
    }
    ?>

  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
    Pour le coup, il serait plus logique de faire deux requêtes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $sql = 'SELECT image_id, image_url FROM photos_images';
    $result = mysql_query($sql);
    while($row=mysql_fetch_array($result)) {
         echo $row['image_url'];
        $requete="SELECT date_format(com_crtdt, 'le %d/%m/%y à %Hh%s') as com_crtdt, com_message, com_author, image_id FROM photos_comments WHERE com_status='1' AND image_id = " . $row['image_id'] . " ORDER BY com_id desc LIMIT 12";
        $result=mysql_db_query("monsite_galerie",$requete);
        while($voir=mysql_fetch_array($result))  {
            ....
            ....
       }
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 73
    Points : 35
    Points
    35
    Par défaut
    Je te remercie de ton aide mais je n'arrive pas à intégrer ton bout de script au mien, ça me donne un résultat bizarre
    Où est-ce que je dois intégrer ce bout de code exactement ?
    Je suis désolée, tellement débutante :/

  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
    Ta ligne 13 c'est la ligne 5 de ma modification.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 73
    Points : 35
    Points
    35
    Par défaut
    J'ai essayé d'intégrer ton bout de code et ça ne marche pas

    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
    <?
    // Definition des identifiants de connexion
    $DBHOST='sql2'; // Serveur Mysql
    $USEBDD='monsite_galerie'; // Base de donnée utilisée
    $USER='monsite'; // Administrateur de la bdd
    $PASSWORD='mot de passe'; // Mot de passe d'accès à la bdd
     
    // Connexion à MySQL :
    $link = mysql_connect($DBHOST,$USER,$PASSWORD);
    $db = mysql_select_db($USEBDD,$link);
     
    // Extraction
    $sql = 'SELECT image_id, image_url FROM photos_images';
    $result = mysql_query($sql);
    while($row=mysql_fetch_array($result)) {
         echo $row['image_url'];
     
    $requete="SELECT date_format(com_crtdt, 'le %d/%m/%y à %Hh%s') as com_crtdt, com_message, com_author, image_id FROM photos_comments WHERE com_status='1' ORDER BY com_id desc LIMIT 12";
    $result=mysql_db_query("monsite_galerie",$requete);
        while($voir=mysql_fetch_array($result))  
    	{
    	   }
     
     
    $com_message_court= htmlspecialchars(substr($voir['com_message'], 0, 55)) . "...";
    $com_author = htmlspecialchars($voir['com_author']);
    $com_crtdt = htmlspecialchars($voir['com_crtdt']);
    $image_id = htmlspecialchars($voir['image_id']);
     
    echo "&#149; <a href=\"photos/?q=image/$image_id-$image_url\" target=\"_self\">".$com_message_court."</a><br> 
    ";
    }
    ?>

  6. #6
    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
    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
    // Definition des identifiants de connexion
    $DBHOST='sql2'; // Serveur Mysql
    $USEBDD='monsite_galerie'; // Base de donnée utilisée
    $USER='monsite'; // Administrateur de la bdd
    $PASSWORD='motdepasse'; // Mot de passe d'accès à la bdd
     
    // Connexion à MySQL :
    $link = mysql_connect($DBHOST,$USER,$PASSWORD);
    $db = mysql_select_db($USEBDD,$link);
     
    $sql = 'SELECT image_id, image_url FROM photos_images';
    $result = mysql_query($sql);
    while($row=mysql_fetch_array($result)) {
         echo $row['image_url'];
        $requete="SELECT date_format(com_crtdt, 'le %d/%m/%y à %Hh%s') as com_crtdt, com_message, com_author, image_id FROM photos_comments WHERE com_status='1' AND image_id = " . $row['image_id'] . " ORDER BY com_id desc LIMIT 12";
        $result=mysql_db_query("monsite_galerie",$requete);
        while($voir=mysql_fetch_array($result))  {
    $com_message_court= htmlspecialchars(substr($voir['com_message'], 0, 55)) . "...";
    $com_author = htmlspecialchars($voir['com_author']);
    $com_crtdt = htmlspecialchars($voir['com_crtdt']);
    $image_id = htmlspecialchars($voir['image_id']);
     
    echo "<a href=\"photos/?q=image/$image_id-$image_url\" target=\"_self\">".$com_message_court."</a><br/>";
       }
    }
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 73
    Points : 35
    Points
    35
    Par défaut
    Merci mais avec ce code, le seul résultat qui apparaît est image_url de la table photos_images

    Je n'ai d'ailleurs qu'un seul résultat (et non pas les 12 demandés par la requête) et il n'y a pas de lien.

  8. #8
    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
    J'ai utilisé $result pour les deux requêtes

    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
    // Definition des identifiants de connexion
    $DBHOST='sql2'; // Serveur Mysql
    $USEBDD='monsite_galerie'; // Base de donnée utilisée
    $USER='monsite'; // Administrateur de la bdd
    $PASSWORD='motdepasse'; // Mot de passe d'accès à la bdd
     
    // Connexion à MySQL :
    $link = mysql_connect($DBHOST,$USER,$PASSWORD);
    $db = mysql_select_db($USEBDD,$link);
     
    $sql = 'SELECT image_id, image_url FROM photos_images';
    $result = mysql_query($sql);
    while($row=mysql_fetch_array($result)) {
         echo $row['image_url'];
        $requete="SELECT date_format(com_crtdt, 'le %d/%m/%y à %Hh%s') as com_crtdt, com_message, com_author, image_id FROM photos_comments WHERE com_status='1' AND image_id = " . $row['image_id'] . " ORDER BY com_id desc LIMIT 12";
        $result_com=mysql_db_query("monsite_galerie",$requete);
        while($voir=mysql_fetch_array($result_com))  {
    $com_message_court= htmlspecialchars(substr($voir['com_message'], 0, 55)) . "...";
    $com_author = htmlspecialchars($voir['com_author']);
    $com_crtdt = htmlspecialchars($voir['com_crtdt']);
    $image_id = htmlspecialchars($voir['image_id']);
     
    echo "<a href=\"photos/?q=image/$image_id-$image_url\" target=\"_self\">".$com_message_court."</a><br/>";
       }
    }
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 73
    Points : 35
    Points
    35
    Par défaut
    Ah oui c'est mieux

    Il y a juste un dernier souci au niveau de $image_url.

    J'ai un résultat qui s'affiche comme ça :

    img-5534img-5499img-5498img-5568img-5539img-5573img-5572img-5569commentairedelauteur...

    img-5534
    img-5499
    img-5498 ....
    sont tous des $image_url

    Et dans le lien, 155 est le résultat de $image_id (donc c'est bon au niveau de $image_id).

  10. #10
    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
    Si tu regardes le code, j'ai juste mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $row['image_url'];
    pour l'exemple.
    après tu affiches et organises ce que tu veux, comme tu le souhaites.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 73
    Points : 35
    Points
    35
    Par défaut
    C'est pas cette ligne là qui affiche ce que je veux ?
    Je connais pas le echo row. Comment ça fonctionne exactement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<a href=\"photos/?q=image/$image_id-$image_url\" target=\"_self\">".$com_message_court."</a><br/>";

  12. #12
    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
    C'est pas cette ligne là qui affiche ce que je veux ?
    comme je t'ai dit, j'ai juste ajouté cette ligne comme exemple.
    Je connais pas le echo row. Comment ça fonctionne exactement ?
    $row['image_url'] c'est pareil que le $voir['com_author'] que tu avais déjà dans ton code : c'est une variable dans laquelle on a mis des données lues dans la base de données.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Problème avec table model
    Par laurent2403 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 25/04/2013, 10h14
  2. [AC-2000] Problème avec table de jointure
    Par Brunodm13 dans le forum Modélisation
    Réponses: 2
    Dernier message: 22/07/2009, 18h35
  3. [AC-2003] Problème avec Table de plus de 1000 enregistrements.
    Par rubilacxe dans le forum Modélisation
    Réponses: 7
    Dernier message: 20/06/2009, 23h47
  4. [Lazarus] [0.9.27/Win32] Problème avec tables paradox
    Par dnode57 dans le forum Lazarus
    Réponses: 2
    Dernier message: 10/10/2008, 16h32
  5. [MySQL] Problème avec table temporaire
    Par zoom61 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 22/10/2007, 13h43

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