Sélectionner des champs de 3 tables différents !!! - PHP - Programmation
Marsh Posté le 25-07-2008 à 08:16:53
essaye ca:
Code :
|
edit:
dans ton order by je pense que c'est pas id mais uniq_id non?
Marsh Posté le 25-07-2008 à 09:54:30
Code :
|
autant apprendre à écrire les jointures correctement dès le départ
Marsh Posté le 25-07-2008 à 09:58:53
note: il manque un 'ON' dans le deuxieme inner join
Marsh Posté le 25-07-2008 à 15:18:04
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
Marsh Posté le 25-07-2008 à 15:46:08
Code :
|
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...
Marsh Posté le 25-07-2008 à 16:02:39
bricocoman a écrit : ta requête doit avoir un souci |
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
Marsh Posté le 25-07-2008 à 16:10:23
Marty_McFly a écrit :
|
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
Marsh Posté le 25-07-2008 à 16:14:29
excuse moi, un oubli:
comments.uniq_id
Marsh Posté le 25-07-2008 à 16:44:47
Merci. Première étape réussie, je vais essayer maintenant d'intégrer l'avatar de l'user. ;-)
Je vous fais un retour ici.
Marsh Posté le 25-07-2008 à 16:50:17
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...
Marsh Posté le 25-07-2008 à 17:10:59
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ù ?
Marsh Posté le 25-07-2008 à 17:24:53
echo "
<table width="150" border="0">
rien que la ca va planter
Marsh Posté le 25-07-2008 à 17:26:55
tiens, en mettant <table width='150' border='0'> ça plante plus ! lol !
Marsh Posté le 25-07-2008 à 17:28:43
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.
Marsh Posté le 25-07-2008 à 17:30:26
spa faux
surtout que 2 lignes plus bas, tu mets les \ avant les " comme il faut...
tu es un adepte du copier/coller sauvage?
Marsh Posté le 25-07-2008 à 17:31:09
ç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
Marsh Posté le 25-07-2008 à 17:33:12
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
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.
Marsh Posté le 25-07-2008 à 17:33:40
euh...
Poisson d'avril?
Code :
|
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
Marsh Posté le 25-07-2008 à 17:36:04
spespam a écrit : ça marche mais l'image de l'avatar ne s'affiche pas. |
tout simplement car $avatar ne doit pas contenir le repertoire dossier ^^
Marsh Posté le 25-07-2008 à 17:37:21
Marty_McFly a écrit : euh...
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 ^^
Marsh Posté le 25-07-2008 à 17:41:37
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
Marsh Posté le 25-07-2008 à 17:43:22
Sebastien a écrit : |
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....
Marsh Posté le 25-07-2008 à 17:51:31
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 : |
alors que... voila quoi, nos réponses se valent tout a fait
Marsh Posté le 25-07-2008 à 17:58:39
tiens d'ailleurs, j'y pense, y a un moyen de rewriter le lien?
Marsh Posté le 25-07-2008 à 18:03:21
Marty_McFly a écrit : NIMPORTE QUOI ! ! !
|
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.
Marsh Posté le 24-07-2008 à 23:49:27
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