Précédent   Forum du club des développeurs et IT Pro > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/01/2013, 19h16   #1
spespam
Candidat au titre de Membre du Club
 
Inscription : juillet 2008
Messages : 72
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 72
Points : 11
Points : 11
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> 
";
}
?>
spespam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 19h28   #2
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 484
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 484
Points : 21 305
Points : 21 305
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))  {
        ....
        ....
   }
}
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 19h49   #3
spespam
Candidat au titre de Membre du Club
 
Inscription : juillet 2008
Messages : 72
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 72
Points : 11
Points : 11
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 :/
spespam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 19h59   #4
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 484
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 484
Points : 21 305
Points : 21 305
Ta ligne 13 c'est la ligne 5 de ma modification.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 20h33   #5
spespam
Candidat au titre de Membre du Club
 
Inscription : juillet 2008
Messages : 72
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 72
Points : 11
Points : 11
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> 
";
}
?>
spespam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 20h35   #6
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 484
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 484
Points : 21 305
Points : 21 305
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/>";
   }
}
?>
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 20h57   #7
spespam
Candidat au titre de Membre du Club
 
Inscription : juillet 2008
Messages : 72
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 72
Points : 11
Points : 11
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.
spespam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 22h20   #8
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 484
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 484
Points : 21 305
Points : 21 305
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/>";
   }
}
?>
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 23h02   #9
spespam
Candidat au titre de Membre du Club
 
Inscription : juillet 2008
Messages : 72
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 72
Points : 11
Points : 11
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).
spespam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 23h16   #10
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 484
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 484
Points : 21 305
Points : 21 305
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.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 00h12   #11
spespam
Candidat au titre de Membre du Club
 
Inscription : juillet 2008
Messages : 72
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 72
Points : 11
Points : 11
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/>";
spespam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2013, 00h15   #12
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 484
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 484
Points : 21 305
Points : 21 305
Citation:
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.
Citation:
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.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h14.


 
 
 
 
Partenaires

Hébergement Web