Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 12 sur 12
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    juillet 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : juillet 2008
    Messages : 72
    Points : 12
    Points
    12

    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 :
    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    21 096
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 096
    Points : 30 711
    Points
    30 711

    Par défaut

    Pour le coup, il serait plus logique de faire deux requêtes :

    Code :
    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))  {
            ....
            ....
       }
    }

  3. #3
    Candidat au titre de Membre du Club
    Inscrit en
    juillet 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : juillet 2008
    Messages : 72
    Points : 12
    Points
    12

    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    21 096
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 096
    Points : 30 711
    Points
    30 711

    Par défaut

    Ta ligne 13 c'est la ligne 5 de ma modification.

  5. #5
    Candidat au titre de Membre du Club
    Inscrit en
    juillet 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : juillet 2008
    Messages : 72
    Points : 12
    Points
    12

    Par défaut

    J'ai essayé d'intégrer ton bout de code et ça ne marche pas

    Code :
    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    21 096
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 096
    Points : 30 711
    Points
    30 711

    Par défaut

    Code :
    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/>";
       }
    }
    ?>

  7. #7
    Candidat au titre de Membre du Club
    Inscrit en
    juillet 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : juillet 2008
    Messages : 72
    Points : 12
    Points
    12

    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    21 096
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 096
    Points : 30 711
    Points
    30 711

    Par défaut

    J'ai utilisé $result pour les deux requêtes

    Code :
    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/>";
       }
    }
    ?>

  9. #9
    Candidat au titre de Membre du Club
    Inscrit en
    juillet 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : juillet 2008
    Messages : 72
    Points : 12
    Points
    12

    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    21 096
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 096
    Points : 30 711
    Points
    30 711

    Par défaut

    Si tu regardes le code, j'ai juste mis
    Code :
    echo $row['image_url'];
    pour l'exemple.
    après tu affiches et organises ce que tu veux, comme tu le souhaites.

  11. #11
    Candidat au titre de Membre du Club
    Inscrit en
    juillet 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : juillet 2008
    Messages : 72
    Points : 12
    Points
    12

    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 :
    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 Vincent
    Inscrit en
    juillet 2005
    Messages
    21 096
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 21 096
    Points : 30 711
    Points
    30 711

    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.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •