Comment créer un lien avec des éléments d'une base de données? - PHP - Programmation
Marsh Posté le 06-02-2008 à 09:06:17
tu ajoutes simplement un lien avec une variable GET (dans l'url), le plus simple est d'utiliser id_joueur
Marsh Posté le 06-02-2008 à 09:46:12
Juste pour préciser ce que dit soju :
soju a écrit : tu ajoutes simplement un lien avec une variable GET (dans l'url), le plus simple est d'utiliser id_joueur |
Tu modifies ton premier script en faisant un lien hypertexte sur le nom du joueur avec l'id_joueur dans l'URL puis tu crées un deuxième script (ou tu modifies celui existant) pour lequel tu affiches le détail par joueur à partir de l'id_joueur que tu auras passé via l'URL avec un GET
Marsh Posté le 06-02-2008 à 23:55:55
qu'appelles-tu mon 'premier script'? je suis perdu... je ne vois pas non plus trop à quoi doit ressembler mon lien. tu peux me donner un exemple, merci...
Marsh Posté le 07-02-2008 à 00:31:05
Genre les pages http://monsite.com/index.php?monnumerodepage=54
Il est temps d'aller à l'école : http://www.siteduzero.com/tuto-3-7 [...] #ss_part_4
Dans ton cas ça ressemblerais à :
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
}
à remplacer par :
Code :
|
Marsh Posté le 07-02-2008 à 09:12:58
L'idée, c'est de faire deux scripts (un pour afficher la liste des joueurs, l'autre pour afficher le détail du joueur) sur deux pages différentes (ca peut se faire sur la même page, mais je pense pas que ca apporte grand chose)
Première page : liste_joueur.php
Deuxième page : detail_joueur.php
C'est plus clair pour toi maintenant ?
Marsh Posté le 08-02-2008 à 22:03:31
czh a écrit :
|
OK, jusque là j'ai bien un lien qui apparait sur chaque nom, mais quand je clique dessus, rien ne change... c'est la même page qui revient, avec les noms de TOUS les joueurs. Mais comment faire apparaitre le contenu du seul joueur que je sélectionne?
Désolé de mettre du temps à comprendre, mais c'est comme ca que j'apprends le mieux... Merci encore
Marsh Posté le 09-02-2008 à 10:45:28
Il faut que tu exploite la variable $_GET['id_joueur'] et que tu t'en serves pour faire une requete plus fine (sur un seul joueur) et au lieu d'afficher un tableau tu fais un profil du joueur avec par exemple des <div> et des <span>.
Pense à vérifier la variable $_GET avant de t'en servir aussi, c'est un reflexe à adopter.
Le lien que tu semble avoir mis commence par '?' cela signifie que tu reste sur la même page, si tu veux aller sur une autre précede le du nom de la page en question.
ex: detail_joueur.php?id_joueur=10
Marsh Posté le 12-02-2008 à 18:35:13
Voilà où j'en suis:
Code :
|
Mais comment récuperer les GET? Je dois juste inclure ceci ? :
Code :
|
Si oui, je dois mettre ca dans ma première page ? mais je ne vois pas trop ce que je dois mettre dans ma page detail_joueur.php...
J'imagine que je peux remettre la structure de mon tableau mais en-dessous je dois mettre quoi?
Merci................
Marsh Posté le 13-02-2008 à 14:15:49
Si ton lien est : detail_joueur.php?id=$id_joueur
=> Tu récupères ton résultat sur la page detail_joueur.php via la commande $_GET['id'] (vu que tu passes ton GET via la variable id)
Et dans ta page detail_joueur.php, tu affiches toutes les infos détaillés du joueur....
Citation : je voudrais afficher le résultat d'un seul joueur en cliquant sur le nom de ce joueur (pour lui envoyer ses résultats personnels par exemple) |
Marsh Posté le 13-02-2008 à 14:17:42
si tu fais:
bingojm a écrit :
|
c'est pas:
bingojm a écrit :
|
mais:
Code :
|
et ensuite, une requete dans ta base qui récup les infos WHERE idcollaborateur = $idcollaborateur
et voilou
PS: les variables GET même si elle sont des nombres, arrivent sous forme de string, donc un pti intval($_GET['id']) ça mange pas de pain, et gérer aussi, que si la requête ne renvoie rien (genre le visiteur qui irait directement sur l'URL de la page d'un collaborateur n'existant pas/plus ou autre bizarrerie du genre...) ben tu affiche que le collaborateur en question n'existe pas.
Pour savoir facilement si la requête a retourné quelque chose:
[code]if mysql_num_rows($res) > 0 //si tu es avec mysql biensur, sinon l'équivalent qui va bien[/cpp]
Marsh Posté le 13-02-2008 à 15:55:12
le intval permet aussi de securiser un minimum pour pas avoir d'injections sql
Marsh Posté le 14-02-2008 à 16:00:29
Salut,
Tout d'abord, merci pour ces conseils. Je comprends mieux...
Pour la première page, je laisse ainsi. (si j'ai bien compris)
Et pour la deuxième detail_joueur.php, j'ai mis ceci, mais ca n'est pas complet vu que jusque là ca ne donne rien.
Code :
|
Que dois-je mettre d'autre sur cette page?
Où dois-je mettre WHERE resultat= $resutat (cette syntaxe est bien exacte? je ne la comprends pas bien...)
Je pensais à un truc comme ca mais ca ne va pas:
Code :
|
Je suis sûr qu'il manque qqch pour cette deuxième page mais quoi? éclairez-moi svp. merci!
Marsh Posté le 14-02-2008 à 16:21:05
On va repartir de ton besoin :
bingojm a écrit : Salut à tous,
|
Tu as ta première page qui affiche les résultats "globaux" pour tous les joueurs (page liste_joueur.php)
bingojm a écrit : |
Là, tu veux une autre page pour visualiser le détail d'où les conseils que l'on te donne (créer une deuxième page : detail_joueur.php, passer la variable en GET, ....)
Aprés nous, on ne sait pas ce que tu veux y mettre, à toi de décider...
Pour répondre à ta question, si tu lances la page : http://monsite/detail_joueur.php?id=4
Alors ton code doit te renvoyer "4".
Marsh Posté le 14-02-2008 à 16:32:46
oui oui c'est bien ca. j'ai créé cette deuxième page detail_joueur.php.
Imaginons que je veux y afficher les mêmes résultats que sur la première page mais rien que ceux correspondants au joueur que j'ai sélectionné: nom, points, lieu.
Mais je ne vois pas comment je dois faire concrètement pour récupérer ces variables GET...
Comme ceci je me rapproche?
Code :
|
J'avais édité le message précédent le temps que tu répondes merci...
Aussi, lorsque je suis sur la première page et que je mets la souris sur un joueur, le lien est: http://monsite/fichiers/detail_joueur.php?id=
Est ce bien correct? je ne dois rien voir après le id=?
Marsh Posté le 14-02-2008 à 16:42:58
bingojm a écrit : Aussi, lorsque je suis sur la première page et que je mets la souris sur un joueur, le lien est: http://monsite/fichiers/detail_joueur.php?id= |
Le premier pb est là.... Tu dois voir qqch après "id=", tu dois voir l'id de ton joueur (celui qui est dans ta table). Il faut que tu t'arranges pour le récupèrer dans ta requete SQL (sur la première page) afin de l'afficher dans ton lien hypertexte...
Marsh Posté le 14-02-2008 à 17:01:28
ok... je n'arrive pas à récupérer la bonne info...
J'ai donc:
Code :
|
Marsh Posté le 14-02-2008 à 17:18:48
Tout simplement parce que ce n'est pas comme ca que l'on récupère une valeur d'une requete SQL
Pour récupérer la valeur, il faut rajouter l'id dans ta liste de champs "SELECT nom, points, lieu, idjoueur FROM production where idjoueur=id_joueur" (au passage la syntaxe SQL est , il faut mieux utiliser un inner join).
Par contre cela va te poser un problème dans ton bout de code (que au passage je trouve complètement idoit pour afficher trois colonnes):
Code :
|
Marsh Posté le 14-02-2008 à 18:20:07
en réalité, j'ai plus de colonnes que ca... j'ai simplifié ici.
mais j'ai bien rajouté l'id dans la liste de champs mais je n'arrive tjs pas à voir le lien complet!!! pourquoi??? j'ai tjs "detail_joueur.php?id=" puis plus rien....
Marsh Posté le 14-02-2008 à 18:22:04
essaye qqch comme $line['idjoueur']
Marsh Posté le 14-02-2008 à 18:31:40
non plus... voilà ce que j'ai:
syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING on line 63
Marsh Posté le 14-02-2008 à 19:05:48
Et à la ligne 63 de ton code, il y à quoi ?
En tout cas, si tu écris :
Code :
|
Il va te renvoyer tous les idjoueur....
Marsh Posté le 14-02-2008 à 19:19:31
Non, voilà ce que j'ai:
Code :
|
Est-ce censé être correct?
Marsh Posté le 14-02-2008 à 19:36:12
Non. Ton code est truffé d'erreur de syntaxe :
Code :
|
Ton code devient alors :
Code :
|
Marsh Posté le 14-02-2008 à 20:40:40
Super! j'ai fait une petite modif et ca marche.!!
Maintenant il m'envoie bien la valeur correspondante.
Revenons au problème de la 2è page si tu veux bien:
voilà ce que j'ai mis pour voir si cela fonctionne mais ce n'est pas le cas malheureusement:
Code :
|
le message d'erreur est le même que tout à l'heure.
Que faire?
Marsh Posté le 14-02-2008 à 21:45:04
bingojm a écrit : Super! j'ai fait une petite modif et ca marche.!!
|
Y'a un mysql_query en trop...
Nota : un bon moyen pour débuguer tout seul ton code est de tester d'où vient l'erreur :
Marsh Posté le 14-02-2008 à 22:26:21
Super, j'ai bien de l'affichage maintentant, mais...
J'ai bien le même nom du joueur, sauf que pour le reste des données, elles sont toutes affichées (les données de tous les joueurs comme si elles correspondaient toutes au même joueur, mais ce n'est pas le cas).
Je dois certainement préciser davantage mon WHERE non? mais je ne vois pas comment...
Marsh Posté le 14-02-2008 à 22:29:10
il manquerait pas un idjoueur=id_joueur de manière à avoir
Code :
|
Marsh Posté le 05-02-2008 à 23:55:50
Salut à tous,
Voici l'état actuel des choses:
Ceci me permet d'afficher les résultats de tous mes joueurs.
Maintenant, une fois que j'ai tous ces résultats qui s'affichent, je voudrais afficher le résultat d'un seul joueur en cliquant sur le nom de ce joueur (pour lui envoyer ses résultats personnels par exemple)
Mais comment puis-je intégrer un lien sur le nom de chaque joueur?
j'espère être clair...
Merci d'aider une nouvelle fois le petit débutant que je suis