Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2407 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Sélectionner des champs de 3 tables différents !!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sélectionner des champs de 3 tables différents !!!

n°1764568
spespam
Posté le 24-07-2008 à 23:49:27  profilanswer
 

Salut à tous,
 
Je suis une grande débutante en php et voilà mon souci. J'ai 3 tables différents : comments, videos, et users
 
Les données que je veux extraire :
Table comments : comment, username
Table videos : vid_id
Table users : avatar
 
Ces tables sont liées :
Les tables comments et videos ont un champ identique : id (c'est la même donnée)
Les tables comments et users ont un champ identique : username (c'est la même donnée) aussi
 
Voici le début de mon code mais je ne sais pas sélectionner 3 tables, donc si quelqu'un peut m'aider à le compléter :
<?
// Definition des identifiants de connexion
$DBHOST=''; // Serveur Mysql
$USEBDD='mabdd'; // Base de donnée utilisée
$USER='mabdd'; // Administrateur de la bdd
$PASSWORD=''; // Mot de passe d'accès à la bdd
 
// Connexion à MySQL :
$link = mysql_connect($DBHOST,$USER,$PASSWORD);
$db = mysql_select_db($USEBDD,$link);
 
// Extraction video
$requete="SELECT comment, username FROM comments ORDER BY id desc LIMIT 7";
$result=mysql_db_query("mabdd",$requete);


Message édité par spespam le 26-07-2008 à 02:00:16
mood
Publicité
Posté le 24-07-2008 à 23:49:27  profilanswer
 

n°1764602
sankukai8
Posté le 25-07-2008 à 08:16:53  profilanswer
 

essaye ca:

Code :
  1. SELECT comments.comment,comments.username, videos.vid_id,users.avatar
  2. FROM comments,videos,users
  3. WHERE
  4. comments.uniq_id=video.uniq_id AND
  5. comments.username=users.username
  6. ORDER BY id desc
  7. LIMIT 7


 
edit:
dans ton order by je pense que c'est pas id mais uniq_id non?


Message édité par sankukai8 le 25-07-2008 à 08:18:16
n°1764635
anapajari
s/travail/glanding on hfr/gs;
Posté le 25-07-2008 à 09:54:30  profilanswer
 

Code :
  1. SELECT comments.comment,comments.username, videos.vid_id,users.avatar
  2. FROM
  3. comments
  4. INNER JOIN videos ON comments.uniq_id=video.uniq_id
  5. INNER JOIN users comments.username=users.username
  6. ORDER BY id DESC
  7. LIMIT 7


autant apprendre à écrire les jointures correctement dès le départ :o


Message édité par anapajari le 25-07-2008 à 09:54:43

---------------
Software and cathedrals are much the same - first we build them, then we pray.
n°1764638
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 25-07-2008 à 09:58:53  profilanswer
 

note: il manque un 'ON' dans le deuxieme inner join


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1764901
spespam
Posté le 25-07-2008 à 15:18:04  profilanswer
 

Voici le code final selon vos indications.
 
<?
// Definition des identifiants de connexion
$DBHOST=''; // Serveur Mysql
$USEBDD='mabdd'; // Base de donnée utilisée
$USER='mabdd'; // Administrateur de la bdd
$PASSWORD='xxxxxx'; // 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 comments.comment,comments.username,videos.vid_id,users.avatar
FROM  
comments
INNER JOIN videos ON comments.uniq_id=videos.uniq_id  
INNER JOIN users ON comments.username=users.username
ORDER BY id desc
LIMIT 7";
$result=mysql_db_query("mabdd",$requete);
 
// Affiche resultats
while($voir=mysql_fetch_array($result))
{
$comment_court= htmlspecialchars(substr($voir['comment'], 0, 55)) . "...";
$username = htmlspecialchars($voir['username']);
$vid_id = htmlspecialchars($voir['vid_id']);
 
echo ". <a href=\"myurl.php?vid=$vid_id\" target=\"_self\">".$comment."</a><br>par -".$username."- <br>  
";
}
?>
 
Et le résultat m'affiche une erreur :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /www/test.php on line 25
 
PS : j'ai pas encore testé l'affichage de l'avatar


Message édité par spespam le 25-07-2008 à 15:20:28
n°1764910
bricocoman
j'aime les modos
Posté le 25-07-2008 à 15:22:35  profilanswer
 

ta requête doit avoir un souci  :o

n°1764932
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 25-07-2008 à 15:46:08  profilanswer
 

Code :
  1. <?
  2. // Definition des identifiants de connexion
  3. $DBHOST=''; // Serveur Mysql
  4. $USEBDD='mabdd'; // Base de donnée utilisée
  5. $USER='mabdd'; // Administrateur de la bdd
  6. $PASSWORD='xxxxxx'; // Mot de passe d'accès à la bdd
  7. // Connexion à MySQL :
  8. $link = mysql_connect($DBHOST,$USER,$PASSWORD);
  9. $db = mysql_select_db($USEBDD,$link);
  10. // Extraction
  11. $requete="SELECT comments.comment,comments.username,videos.vid_id,users.avatar
  12. FROM 
  13. comments
  14. INNER JOIN videos ON comments.uniq_id=videos.uniq_id 
  15. INNER JOIN users ON comments.username=users.username
  16. ORDER BY uniq_id desc
  17. LIMIT 7";
  18. $result=mysql_db_query("mabdd",$requete);
  19. if(!$result ) { // Traitement d'erreur
  20. echo mysql_error();
  21. }
  22. else { // Affiche resultats
  23. if (mysql_num_rows($result) != 0) {
  24.  while($voir=mysql_fetch_array($result)) {
  25.   $comment_court= htmlspecialchars(substr($voir['comment'], 0, 55)) . "...";
  26.   $username = htmlspecialchars($voir['username']);
  27.   $vid_id = htmlspecialchars($voir['vid_id']);
  28.   echo ". <a href=\"myurl.php?vid=$vid_id\" target=\"_self\">".$comment."</a><br>par -".$username."- <br>";
  29.  }
  30. }
  31. }
  32. ?>


 
comme l'a signalé bricocoman, ta requete a une erreur (order by id desc au lieu de order by uniq_id desc ?)
 
et vu que tu cherches à extraire les résultats de $result dans tous les cas...

Message cité 1 fois
Message édité par Marty_McFly le 25-07-2008 à 15:48:45

---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1764939
spespam
Posté le 25-07-2008 à 16:02:39  profilanswer
 

bricocoman a écrit :

ta requête doit avoir un souci  :o


Oui elle a un souci puisqu'elle affiche une erreur. Je pense que les développeurs bons et expérimentés du forum pourront m'aider à trouver la faille :o

n°1764941
spespam
Posté le 25-07-2008 à 16:10:23  profilanswer
 

Marty_McFly a écrit :

Code :
  1. <?
  2. // Definition des identifiants de connexion
  3. $DBHOST=''; // Serveur Mysql
  4. $USEBDD='mabdd'; // Base de donnée utilisée
  5. $USER='mabdd'; // Administrateur de la bdd
  6. $PASSWORD='xxxxxx'; // Mot de passe d'accès à la bdd
  7. // Connexion à MySQL :
  8. $link = mysql_connect($DBHOST,$USER,$PASSWORD);
  9. $db = mysql_select_db($USEBDD,$link);
  10. // Extraction
  11. $requete="SELECT comments.comment,comments.username,videos.vid_id,users.avatar
  12. FROM 
  13. comments
  14. INNER JOIN videos ON comments.uniq_id=videos.uniq_id 
  15. INNER JOIN users ON comments.username=users.username
  16. ORDER BY uniq_id desc
  17. LIMIT 7";
  18. $result=mysql_db_query("mabdd",$requete);
  19. if(!$result ) { // Traitement d'erreur
  20. echo mysql_error();
  21. }
  22. else { // Affiche resultats
  23. if (mysql_num_rows($result) != 0) {
  24.  while($voir=mysql_fetch_array($result)) {
  25.   $comment_court= htmlspecialchars(substr($voir['comment'], 0, 55)) . "...";
  26.   $username = htmlspecialchars($voir['username']);
  27.   $vid_id = htmlspecialchars($voir['vid_id']);
  28.   echo ". <a href=\"myurl.php?vid=$vid_id\" target=\"_self\">".$comment."</a><br>par -".$username."- <br>";
  29.  }
  30. }
  31. }
  32. ?>


 
comme l'a signalé bricocoman, ta requete a une erreur (order by id desc au lieu de order by uniq_id desc ?)
 
et vu que tu cherches à extraire les résultats de $result dans tous les cas...


 
 
J'ai testé ta correction du code. Et là, il me met : Column 'id' in order clause is ambiguous
Et en mettant, order by uniq_id, il me met : Column 'uniq_id' in order clause is ambiguous


Message édité par spespam le 25-07-2008 à 16:11:43
n°1764944
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 25-07-2008 à 16:14:29  profilanswer
 

excuse moi, un oubli:
comments.uniq_id


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
mood
Publicité
Posté le 25-07-2008 à 16:14:29  profilanswer
 

n°1764960
spespam
Posté le 25-07-2008 à 16:44:47  profilanswer
 

Merci. Première étape réussie, je vais essayer maintenant d'intégrer l'avatar de l'user. ;-)
Je vous fais un retour ici.

n°1764965
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 25-07-2008 à 16:50:17  profilanswer
 

d'ailleurs, ça me fait penser:
 
tu arrives à voir la liste des liens? parce que tu fais un echo [...blabla...]".$comment."[..suite..] et que $comment ne m'a pas l'air d'etre trop défini...


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1764979
spespam
Posté le 25-07-2008 à 17:10:59  profilanswer
 

Oui j'ai mis $comment_court au lieu de $comment et ça marche.  
 
J'ai essayé d'afficher les résultats dans un tableau (1 ligne, 2 colonnes) pour que ça fasse plus joli.
 
A gauche (1ère colonne) : l'avatar
A droite (2ème colonne) : le username du posteur puis à la ligne le commentaire (tjrs dans la 2eme colonne).
 
Voici le code :
$comment_court= htmlspecialchars(substr($voir['comment'], 0, 55)) . "...";
$username = htmlspecialchars($voir['username']);
$uniq_id = htmlspecialchars($voir['uniq_id']);
$avatar = htmlspecialchars($voir['avatar']);
 
echo "
<table width="150" border="0">
  <tr>
    <td><a href=\"myurl.php?vid=$vid_id\" target=\"_self\"><img height='119' width='160' src=".$avatar."></a></td>
    <td>".$username."<br><a href=\"myurl.php?vid=$vid_id\" target=\"_self\">".$comment_court."</a></td>
  </tr>
</table>
";
}
}
}
?>
 
Et j'ai une erreur :  
Parse error: syntax error, unexpected T_LNUMBER, expecting ',' or ';' in /www/test.php on line 40
 
J'ai dû oublier un " quelque part mais où ?


Message édité par spespam le 25-07-2008 à 17:11:57
n°1764992
Sebastien
Posté le 25-07-2008 à 17:24:53  profilanswer
 

echo "
<table width="150" border="0">  
 
rien que la ca va planter

n°1764995
spespam
Posté le 25-07-2008 à 17:25:45  profilanswer
 

pourquoi ?

n°1764997
spespam
Posté le 25-07-2008 à 17:26:55  profilanswer
 

tiens, en mettant <table width='150' border='0'>  ça plante plus ! lol !

n°1764998
Sebastien
Posté le 25-07-2008 à 17:27:38  profilanswer
 

des guillemets dans des guillmets sans aucune protection

n°1765000
Sebastien
Posté le 25-07-2008 à 17:28:43  profilanswer
 

Va quand meme falloir que tu lises quelques tutos de programmation php, car bon si rien que le fait de passer de ' à " te surprend, tu vas avoir bcp de surprise dans ton dev.

n°1765004
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 25-07-2008 à 17:30:26  profilanswer
 

spa faux :)
 
surtout que 2 lignes plus bas, tu mets les \ avant les " comme il faut...
tu es un adepte du copier/coller sauvage?


Message édité par Marty_McFly le 25-07-2008 à 17:31:19

---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1765005
spespam
Posté le 25-07-2008 à 17:31:09  profilanswer
 

ça marche mais l'image de l'avatar ne s'affiche pas.
Il m'affiche la mauvaise url.
 
Exemple : monsite.com/image.gif au lieu de monsite.com/dossier/image.gif

n°1765006
spespam
Posté le 25-07-2008 à 17:33:12  profilanswer
 

Sebastien a écrit :

Va quand meme falloir que tu lises quelques tutos de programmation php, car bon si rien que le fait de passer de ' à " te surprend, tu vas avoir bcp de surprise dans ton dev.


j'en lis mais à un moment les tutos ont leurs limites et quand tu bloques, t'es obligée de passer par les forums.
Tout le code que j'ai pondu là haut je l'ai pondu avec des tutos :o
mais c'est vrai que j'ai bcp de progrès à faire, d'où les forums où c'est plus interactif et où il y a des gens sympa qui t'expliquent volontiers.


Message édité par spespam le 25-07-2008 à 17:33:58
n°1765007
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 25-07-2008 à 17:33:40  profilanswer
 

euh...
Poisson d'avril?
 

Code :
  1. <a href=\"myurl.php?vid=$vid_id\" target=\"_self\"><img height='119' width='160' src='dossier/".$avatar."'>


 
note que tu avais oublié de mettre les ' englobant src
 
et sinon, je te conseillerai de choisir: soit tu mets des \", soit tu mets des '
 
en faisant un mix des deux.... j'sais pas, bof quoi

Message cité 1 fois
Message édité par Marty_McFly le 25-07-2008 à 17:34:55

---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1765008
Sebastien
Posté le 25-07-2008 à 17:36:04  profilanswer
 

spespam a écrit :

ça marche mais l'image de l'avatar ne s'affiche pas.
Il m'affiche la mauvaise url.
 
Exemple : monsite.com/image.gif au lieu de monsite.com/dossier/image.gif


 
tout simplement car $avatar ne doit pas contenir le repertoire dossier ^^

n°1765011
Sebastien
Posté le 25-07-2008 à 17:37:21  profilanswer
 

Marty_McFly a écrit :

euh...
Poisson d'avril?

 
Code :
  1. <a href=\"myurl.php?vid=$vid_id\" target=\"_self\"><img height='119' width='160' src='dossier/".$avatar."'>
 

note que tu avais oublié de mettre les ' englobant src

 

et sinon, je te conseillerai de choisir: soit tu mets des \", soit tu mets des '

 

en faisant un mix des deux.... j'sais pas, bof quoi

 

ou de sortir toute la partie html du code php ou d'inverser ' et "

 

Ah y a tellement de facons de faire les choses ^^


Message édité par Sebastien le 25-07-2008 à 17:37:35
n°1765015
spespam
Posté le 25-07-2008 à 17:41:37  profilanswer
 

putain je suis fatiguée lol ! au temps pour moi.
Je suis devenue bigleuse à force de plancher sur ce code, je vois plus les erreurs évidentes.
Merci de ton aide marty_mcfly ;)
 
ps : le code marche très bien  :hello:


Message édité par spespam le 25-07-2008 à 17:44:00
n°1765017
spespam
Posté le 25-07-2008 à 17:43:22  profilanswer
 

Sebastien a écrit :


 
tout simplement car $avatar ne doit pas contenir le repertoire dossier ^^


 
Franchement je ne sais même pas pourquoi tu es sur ce forum d'entraide. Depuis le début tu n'es d'aucune aide sauf pour narguer les débutants. Sans rancune....

n°1765023
Sebastien
Posté le 25-07-2008 à 17:47:39  profilanswer
 

ben pourquoi ?  
N'ai je pas répondu à ta question la ?

n°1765025
Marty_McFl​y
Nan hé ho, d'accord?
Posté le 25-07-2008 à 17:51:31  profilanswer
 

NIMPORTE QUOI ! ! !
je pense que spespam veut dire qu'il est trop débutant pour comprendre tes réponses. Tu ajoutes un ton agressif, et ça donne:

Citation :


Franchement je ne sais même pas pourquoi tu es sur ce forum d'entraide. Depuis le début tu n'es d'aucune aide sauf pour narguer les débutants. Sans rancune....


alors que... voila quoi, nos réponses se valent tout a fait :)


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
n°1765028
spespam
Posté le 25-07-2008 à 17:58:39  profilanswer
 

tiens d'ailleurs, j'y pense, y a un moyen de rewriter le lien?

n°1765030
Sebastien
Posté le 25-07-2008 à 18:01:15  profilanswer
 

si ton apache a le module mod_rewrite d'actif oui

n°1765033
spespam
Posté le 25-07-2008 à 18:03:21  profilanswer
 

Marty_McFly a écrit :

NIMPORTE QUOI ! ! !
je pense que spespam veut dire qu'il est trop débutant pour comprendre tes réponses. Tu ajoutes un ton agressif, et ça donne:

Citation :


Franchement je ne sais même pas pourquoi tu es sur ce forum d'entraide. Depuis le début tu n'es d'aucune aide sauf pour narguer les débutants. Sans rancune....


alors que... voila quoi, nos réponses se valent tout a fait :)


Ouais c'est peut-être ça. En gros, toutes les interventions de Sébastien ne m'ont été d'aucune aide alors que celles de Marty m'ont aidé à localiser mes erreurs et à savoir pourquoi ça n'a pas marché. J'voulais pas agresser Sébastien, si c'est le cas je m'en excuse, c'est juste que je trouve que si on veut réagir dans ce forum, il faut que ça soit dans un esprit d'entraide, pas pour dire va lire les tuto, si tu t'étonnes à chaque " etc
Comme je l'ai déjà dit, des tutos j'en ai déjà lu, si tu savais mon niveau il y a quelques mois, et celui que j'ai maintenant, il y a un réel fossé même si j'ai encore un niveau très bas (mais c'est peut-être parce que je ne me destine pas à être développeuse ^^). Je fais juste des scripts ponctuellement pour des besoins très ponctuels.

n°1765035
spespam
Posté le 25-07-2008 à 18:06:22  profilanswer
 

X


Message édité par spespam le 13-08-2008 à 03:48:46
n°1765040
spespam
Posté le 25-07-2008 à 18:23:42  profilanswer
 

X


Message édité par spespam le 13-08-2008 à 03:48:28
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Sélectionner des champs de 3 tables différents !!!

 

Sujets relatifs
Remplir des tables en respectant des conditionsrassembler tables crées sous oracle
[VC++6]Générer différents executables en fonction de la configuration"concatener" deux tables.
Somme de 2 tables[SGBD] Une ou plusieurs tables
Figer champs TCD excelFusion de deux tables sous Access
Regex : trouver deux caractères consécutifs différents[Réglé] SQL Champs de même nom
Plus de sujets relatifs à : Sélectionner des champs de 3 tables différents !!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR