Variable dans sql? lien dynamiques?

Variable dans sql? lien dynamiques? - PHP - Programmation

Marsh Posté le 18-09-2005 à 15:32:02    

Salut tout le monde,
Voila mon problème: j'ai donc un site de jeux vidéo et dans une table que l'on va appeller "jeux" il y a tous les jeux de mon site avec leurs informations. Moi je sais comment faire pour afficher sur une page tous les jeux vidéo. Mais j'aimerais en afficher un seul en fonction du lien sur lequel le visiteur à cliquez. Mais je ne sais pas comment faire? En faite je voudrais avoir un lien du type fiches.php?jeux=battlefield_2 par exemple. Mais comment faire pour que ce lien marche? J'ai pensé à mettre une variable dans le sql quand je sélectionne ma table mais ça ne marche pas ---> $ma_variable = mysql_query('SELECT * FROM jeux WHERE jeux=$jeux');
 
Voila donc mon problème. J'espère que vous avez compris et je vous remercie de bien vouloir prendre la peine de m'aider.  :)


Message édité par pitcauvet le 18-09-2005 à 15:33:45

---------------
Venez visiter mon site d'actualité des jeux vidéo de guerre ---> http://www.WarVideoGames.fr.tc
Reply

Marsh Posté le 18-09-2005 à 15:32:02   

Reply

Marsh Posté le 18-09-2005 à 15:53:27    

Qu'est-ce qui ne marche pas ?
 
Vu comme ça il a l'air de te manquer des concepts simples, parce que c'est un peu un problème de base, ce que tu décris...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-09-2005 à 16:08:35    

En faite j'aimerais savoir comment faut il faire pour afficher une seul entré d'une table sur une page en cliquant sur un lien.


---------------
Venez visiter mon site d'actualité des jeux vidéo de guerre ---> http://www.WarVideoGames.fr.tc
Reply

Marsh Posté le 18-09-2005 à 16:43:46    

Merci mais cela ne me dit pas comment faire?!


---------------
Venez visiter mon site d'actualité des jeux vidéo de guerre ---> http://www.WarVideoGames.fr.tc
Reply

Marsh Posté le 18-09-2005 à 16:46:34    

Ben pour afficher une seule entrée d'une table t'en sélectionnes qu'une dans ton SELECT. Avec un WHERE donc.
 
Et si "ça marche pas" (comme tu dis dans ton post de base), faut nous dire en quoi, on n'est pas devins. :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-09-2005 à 17:41:31    

"Ben pour afficher une seule entrée d'une table t'en sélectionnes qu'une dans ton SELECT"
Oui mais je veux pouvoir afficher un enregistrement en fonction du lien sur lequel j'ai cliqué.
Par exemple j'ai 2 liens:
---> jeux.php?après je sais pas Brothers In Arms
---> jeux.php?après je sais pas battlefield 2
Les deux liens amèneront sur la même page (jeux.php) mais ce ne sera pas les mêmes enregistrements.
 
voila merci de m'aider


---------------
Venez visiter mon site d'actualité des jeux vidéo de guerre ---> http://www.WarVideoGames.fr.tc
Reply

Marsh Posté le 18-09-2005 à 17:47:01    

Reply

Marsh Posté le 18-09-2005 à 19:18:12    

Non ce n'est pas ça que je veux faire. Car mes données sont dans une base de données. Je veux que en fonction du lien sur lequel on à cliquez sa affiche une ligne de ma table. Par exemple:
 
Je clique sur le lien Battlefield ---> j'arrive sur la page jeux.php avec la ligne de la table qui a le champs nom qui est "battlefild".
 
Je clique sur le lien Brothers In Arms ---> j'arrive sur la page jeux.php avec la ligne de la table qui a le champs nom qui est "brothers in arms".
 
PS: dans ma base de données il y a un table avec un jeu pour chaques ligne (enregistrement), et dans la ligne d'un jeu il y a toutes ses infos en colones (champs).


---------------
Venez visiter mon site d'actualité des jeux vidéo de guerre ---> http://www.WarVideoGames.fr.tc
Reply

Marsh Posté le 18-09-2005 à 19:58:37    

Et ben c'est exactement ça, tu passes le nom ou l'id (c'est mieux) du jeu par url, tu le récupères sur ta page et tu fais la requête en fonction...


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-09-2005 à 19:58:37   

Reply

Marsh Posté le 18-09-2005 à 20:47:19    

J'écris quoi?
 
$_GET['id'] = $id;
$retour = mysql_query('SELECT * FROM news WHERE id=$id');
while ($donnees = mysql_fetch_array($retour))
 
ou
 
$retour = mysql_query('SELECT * FROM news');
while ($donnees = mysql_fetch_array($retour))
 
???


---------------
Venez visiter mon site d'actualité des jeux vidéo de guerre ---> http://www.WarVideoGames.fr.tc
Reply

Marsh Posté le 19-09-2005 à 11:00:24    

A chercher dans la documentation php ou dans tout bon tutoriel (et même beaucoup de mauvais d'ailleur ) :

  • Mais qu'elle est donc la différence entre les chaines mises entre ' et celles mises entre "?


Désolé mais en voyant plusieurs fois par jour ce probléme sur le forum, j'en ai marre de donner toujours la même réponse.

Reply

Marsh Posté le 19-09-2005 à 11:03:10    

pitcauvet a écrit :

J'écris quoi?
 
$_GET['id'] = $id;
$retour = mysql_query('SELECT * FROM news WHERE id=$id');
while ($donnees = mysql_fetch_array($retour))
 
ou
 
$retour = mysql_query('SELECT * FROM news');
while ($donnees = mysql_fetch_array($retour))
 
???


$id = $_GET['id']; //C'est mieux
 WHERE id=$id'); =>$id arrive par GET, tu tiens pas a ta BDD toi...  :sweat:

Message cité 1 fois
Message édité par dwogsi le 19-09-2005 à 11:08:37

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 19-09-2005 à 11:25:28    

dwogsi a écrit :

$id = $_GET['id']; //C'est mieux
 WHERE id=$id'); =>$id arrive par GET, tu tiens pas a ta BDD toi...  :sweat:


 
 
A po pigé pourquoi tu marques ça ?
Heu j'aurai faire aussi un select * where id="monid".
 
pitetre qu'on peut faire du sql injection dans sa page vu la requete un peu pourrie, je me trompe ?
 
aulors verifier que $id est bien un entier

Reply

Marsh Posté le 19-09-2005 à 11:29:09    

La colone id, c'est un nombre ou un chiffre? (spa pareil)
Ca sert à rien de forcer mysql à perdre du temps en transtypage si c'est évitable facilement.

Reply

Marsh Posté le 19-09-2005 à 11:31:34    

On peut bien saisir ce qu'on veut dans l'url, donc moi ce que je fais lorsqu'il sagit d'une donnée qui doit forcément être numérique je fait un test dessus avec is_numeric() et ensuite pour être tout à fait certain qu'il n'y a pas de risque je met aussi un cou de mysql_real_escape_string(). On pourrait aussi mettre encore un cou de ceil() pour être certain d'avoir un entier.


Message édité par dwogsi le 19-09-2005 à 11:32:18

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 19-09-2005 à 11:36:49    

Toujours est il que son erreur est surtout dans sa façon d'utiliser les chaines entre '.

Reply

Marsh Posté le 19-09-2005 à 11:40:24    

Certes et si ya bien une chose que je déteste c'est de voir une variable directement dans une chaîne entre quote, moi je préfére:
 
$retour = mysql_query("SELECT * FROM `news` WHERE `id` = '".mysql_real_escape_string($id)."'" );


Message édité par dwogsi le 19-09-2005 à 11:40:51

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 19-09-2005 à 11:43:22    

Mieux :  
$retour = mysql_query('SELECT * FROM `news` WHERE `id` = "'.mysql_real_escape_string($id).'"');
 
(les ' comme délimiteurs de chaines et les " comme chaines niveau sql)

Reply

Marsh Posté le 19-09-2005 à 11:46:01    

Et en quoi c'est mieux?
J'veux élargir mes connaissances!


Message édité par dwogsi le 19-09-2005 à 11:46:29

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 19-09-2005 à 12:02:14    

paske si tu veux insérer du texte comme "l'arbre est joli" tu auras l'air bête si tu mets des '' comme délimiteur... alors qu'avec les "" ça passe nickel !!

Reply

Marsh Posté le 19-09-2005 à 12:04:14    

avec des ' comme délimiteur, php ne perdra pas son temps à chercher s'il y a des noms de variables dans la chaine ou des caractéres spéciaux (les \n et companie).
Avec des ", il les cherchera, s'il en trouve, il devra remplacer les nom de variables par la valeur de la variable, et s'il y a des caractéres spéciaux, il devra aussi les remplacer.
Finalement, php mettra plus de temps pour traiter cette chaine là même s'il n'y a rien à changer dedans et beaucoup plus de temps s'il doit y changer pleins de trucs.

Reply

Marsh Posté le 19-09-2005 à 12:10:51    

titione a écrit :

paske si tu veux insérer du texte comme "l'arbre est joli" tu auras l'air bête si tu mets des '' comme délimiteur... alors qu'avec les "" ça passe nickel !!

Par ce que si tu veux insérer des citations donc des chaines entouré de ", des symboles monétaires (le $ détermine le début d'un nom de variable qui sera rempalcé)ou si t'as des textes contennat des \ colé à un mot ca sera mieux? Parfois, même les {} dans une telle chaine entre " posent problémes.
Ca demande de penser à beaucoup plus de trucs quand tu tapes ton code en mettant les chaines entres ".
Les chaines entre " ne devraient idéalement servir qu'a une chôse : pour le rajout de caractéres spéciaux dans une chaine. C'est le seul cas où cette notation soit supérieure à l'autre.


Message édité par omega2 le 19-09-2005 à 12:11:29
Reply

Marsh Posté le 19-09-2005 à 12:18:32    

Ouai mais voilà tout mon prodblème, je sais bien que l'idéal est d'utiliser les ' puisqu'on donne moins de travail à php, cela dit avant de commencer à toucher au php j'étais sur d'autres langages qui eux n'acceptais pas les quotes simples. Et c'est pourquoi j'ai pris la facheuse habitude sur php d'utiliser tout le temps les doubles.
 
En passant les anciens langages dont je parle sont, par exemple, Basic sur amstrad 464+, QBasic, etc... La bonne époque!


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 19-09-2005 à 12:23:05    

L'époque des goto tu veux dire? :lol:
Mais bon, moi aussi, j'utilises des langages qui n'acceptent que des simples quotes et d'autres des doubles, là n'est pas le probléme, il faut juste arriver à prendre les bonnes habitudes en fonction des langages.

Reply

Marsh Posté le 19-09-2005 à 12:27:01    

Oui oui l'époque des goto ou tu devais indiquer le numéro de ligne! C'était géant!!! lol :D Faut que je fasse remarcher mon Amstrad avec les programme sauvegarder sur des cassettes audio, monumental!
 
Enfin bon cette histoire de quotes c'est quand même chiant! Vais essayer de m'habituer! Et sinon l'autre avec son problème il devient quoi?


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 19-09-2005 à 19:16:26    

Et sinon l'autre avec son problème il devient quoi?
Bin attends à cette heure ci je suis au lycée. Sinon je vous remercie car j'ai pu résoudre mon problème!!!  :)  
 

Code :
  1. $id = $_GET['id'];
  2. $retour = mysql_query('SELECT * FROM news WHERE id = "'.mysql_real_escape_string($id).'"');
  3. while ($donnees = mysql_fetch_array($retour))


 
Et sa marche nikel! Solution proposé par dwogsi et reprise par omega2, mais en tous cas merci  aux autres d'avoir cherché à résoudre mon problème! Bon bin maintenant je n'est plus qu'à aller programmer.....
 
Encore merci et à la prochaine....  :hello:  

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed