Requête PHP MySQL

Requête PHP MySQL - PHP - Programmation

Marsh Posté le 04-05-2006 à 04:30:20    

Bonjour,
 
Ayant débuté en php y a quelques jours, il y aura forcément des notions basiques que je n'aurais peut-être pas saisies.  
J'ai essayé de me documenter un peu partout et je voulais vous demander ce que vous en pensez du fichier recherche.php, parce qu'il ne fonctionne pas.
 
J'essaie de faire une simple requête qui consiste à afficher le champ "data" de la table "config" en fonction du hostname à rentrer dans un formulaire.
 
Merci pour vos remarques.
 
 
 
Voici un extrait de mon index.php:

Code :
  1. [...]
  2. <form enctype=\"multipart/form-data\" action=\"recherche.php\" method=\"post\" onsubmit='return verif_form_doc(this)'>
  3. Poste à chercher : <input name='hostname' type='text'>  <input type=\"submit\" value=\"OK \" />
  4. [...]


 
Le fichier recherche.php:

Code :
  1. <?php
  2. $hostname = $_POST['hostname'];
  3. $link = mysql_connect('localhost', 'root', '');
  4. if (!$link) {die('Impossible de se connecter : ' . mysql_error());
  5. }
  6. $db_selected = mysql_select_db('database', $link);
  7. if (!$db_selected) {
  8.    die ('Impossible de sélectionner la base de données : ' . mysql_error());
  9. }
  10. $query = sprintf("data FROM config WHERE hostname='%s' ",
  11.     mysql_real_escape_string($hostname));
  12. $result = mysql_query($query);
  13. while ($row = mysql_fetch_assoc($result)) {
  14.    echo $row['hostname'];
  15.  
  16. }
  17. ?>

Message cité 2 fois
Message édité par lynxia le 04-05-2006 à 12:25:47
Reply

Marsh Posté le 04-05-2006 à 04:30:20   

Reply

Marsh Posté le 04-05-2006 à 07:20:34    

lynxia a écrit :

Code :
  1. $query = sprintf("data FROM config WHERE hostname='%s' ",
  2.     mysql_real_escape_string($hostname));



Code :
  1. $query = sprintf("select data FROM config WHERE hostname='%s' ",
  2.     mysql_real_escape_string($hostname));


 

lynxia a écrit :

Ayant débutée en php y a quelques jours


Tu te débrouilles bien pour une débutante (j'en ai pas beaucoup vu qui savaient faire un "return(verifie_form(this))" en js ou qui pensaient de suite à utiliser "mysql_error()" )...

Message cité 2 fois
Message édité par Sve@r le 04-05-2006 à 07:22:24

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 04-05-2006 à 08:39:48    

Sve@r a écrit :

j'en ai pas beaucoup vu qui savaient faire un "return(verifie_form(this))" en js ou qui pensaient de suite à utiliser "mysql_error()"...


 
Normalement , tout bon tutoriel se doit d'en parler car c'est un moyen essentiel de déboguage ;)
Ptits conseil, commenter le code, et bien respecter les indentations.
 
Enfin , apprends a déclarer tes fonction et a les apeler, l'avantage etant que dans le scripts appelant ca sera beaucoup plus clair, et ton code plus propre ;)

Reply

Marsh Posté le 04-05-2006 à 08:45:39    

Sve@r a écrit :

Code :
  1. $query = sprintf("select data FROM config WHERE hostname='%s' ",
  2.     mysql_real_escape_string($hostname));


 
 
Tu te débrouilles bien pour une débutante (j'en ai pas beaucoup vu qui savaient faire un "return(verifie_form(this))" en js ou qui pensaient de suite à utiliser "mysql_error()" )...


sans parler de la très très bonne habitude d'utiliser un mysql_real_escape_string

Reply

Marsh Posté le 04-05-2006 à 09:34:56    

il est clair que c'est plaisant d'aider des personnes qui s'investisent vraiment...

Reply

Marsh Posté le 04-05-2006 à 11:58:48    

Merci pour ces conseils :)

Reply

Marsh Posté le 04-05-2006 à 12:00:05    

Rhaaaa les mecs. Ca aurait été un gars, ils auraient déjà trouvé 25 défauts :D

Reply

Marsh Posté le 04-05-2006 à 12:05:32    

FlorentG a écrit :

Rhaaaa les mecs. Ca aurait été un gars, ils auraient déjà trouvé 25 défauts :D


:o :o :o :o :o

Reply

Marsh Posté le 04-05-2006 à 12:11:22    

FlorentG a écrit :

Rhaaaa les mecs. Ca aurait été un gars, ils auraient déjà trouvé 25 défauts :D


Moi j'aimerais bien savoir d'ou vous tirer que c'est une fille, la seule chose qui pourrait le laisser croire c'est le:

lynxia a écrit :

Ayant débutée


et c'est une faute de français :o
 
 

Reply

Marsh Posté le 04-05-2006 à 12:15:29    

sépafo [:alarmclock119]

Reply

Marsh Posté le 04-05-2006 à 12:15:29   

Reply

Marsh Posté le 04-05-2006 à 12:26:07    

Pardon pour la faute, je corrige ça tout de suite ^^
 
Même si les filles sont en minorité en info, ça existe quand même :)
Bon la prog n'étant pas mon domaine de prédilection... (je suis plutôt dans les réseaux) je voulais un peu d'aide comme je sais qu'ici en général vous êtes super réactifs (bon tet pas forcément à 4h30 du matin ^^; quoique...)

Reply

Marsh Posté le 04-05-2006 à 12:33:42    

ya pas mal de noctambules quand meme :D

Reply

Marsh Posté le 04-05-2006 à 13:55:44    

anapajari a écrit :

Moi j'aimerais bien savoir d'ou vous tirer que c'est une fille, la seule chose qui pourrait le laisser croire c'est le:
 
et c'est une faute de français :o


Y a aussi le "etudiante" dans son profil qui pourrait etre un signe :o

Reply

Marsh Posté le 04-05-2006 à 14:04:52    

joce a écrit :

Y a aussi le "etudiante" dans son profil qui pourrait etre un signe :o


c'est vrai mais je ne passe pas non plus ma vie à étudier les profils des gens du forum, ni les arachnides d'ailleurs :o :o :o

Reply

Marsh Posté le 04-05-2006 à 14:56:32    

bon alors puisque vous aidez les filles :-))) ça mévitera de poster un nouveau message, je me suis arrêtée sur le "mysql_real_escape_string" j'ai :  
[code]$query_resultatenquete = "SELECT * FROM information WHERE nom = '$choix'"; [code]  
marche très bien
mais  
[code]$query_resultatenquete = "SELECT * FROM information WHERE nom = mysql_real_escape_string('$choix')"; [code]  marche pas ????
 
et puis je voudrais que la sélection ce fasse si au moins les 3 première lettre de $choix corresponde à "nom" .Merci

Reply

Marsh Posté le 04-05-2006 à 15:01:50    

jedebute75 a écrit :

bon alors puisque vous aidez les filles :-))) ça mévitera de poster un nouveau message, je me suis arrêtée sur le "mysql_real_escape_string" j'ai :  

Code :
  1. $query_resultatenquete = "SELECT * FROM information WHERE nom = '$choix'";

 
marche très bien
mais  

Code :
  1. $query_resultatenquete = "SELECT * FROM information WHERE nom = mysql_real_escape_string('$choix')";

 marche pas ????
 
et puis je voudrais que la sélection ce fasse si au moins les 3 première lettre de $choix corresponde à "nom" .Merci


Lecon 1: la concaténation -> http://www.phpdebutant.org/article55.php

Code :
  1. $query_resultatenquete = "SELECT * FROM information WHERE nom = ".mysql_real_escape_string($choix);


 
edit: grrr de balises imbriquées


Message édité par anapajari le 04-05-2006 à 15:04:33
Reply

Marsh Posté le 04-05-2006 à 15:10:29    

mouais ça marche pas chez moi :-((( sûr de sûr

Reply

Marsh Posté le 04-05-2006 à 15:20:11    

sinon je me repons si yen a que ça interresse pour la requete c'est LIKE% à priori (en tout cas ça marche)
 
sinon rien a faire pour mysql_real_escape_string c dingue...

Reply

Marsh Posté le 04-05-2006 à 15:21:36    

J'ai déjà vu qu'il fallait être connecté à mysql, genre :

$link = mysql_connect(....);
 
 
mysql_real_escape_string($choix, $link);


A vérifier toutefois

Reply

Marsh Posté le 04-05-2006 à 15:52:49    

ok merci!!! je test

Reply

Marsh Posté le 04-05-2006 à 16:47:19    

FlorentG a écrit :

J'ai déjà vu qu'il fallait être connecté à mysql, genre :

$link = mysql_connect(....);
 
 
mysql_real_escape_string($choix, $link);


A vérifier toutefois


 
Exact, le manuel étant notre ami (ahem...) :
 

Citation :

mysql_escape_string() est identique à la fonction mysql_real_escape_string() hormis le fait que mysql_real_escape_string() requiert une ressource de connexion et protège la chaîne en fonction du jeu de caractères courant. mysql_escape_string() ne demande pas de connexion comme argument, et ne resepecte pas le jeu de caractères courant.

Reply

Marsh Posté le 04-05-2006 à 21:16:16    

the_bigboo a écrit :

Normalement , tout bon tutoriel se doit d'en parler car c'est un moyen essentiel de déboguage ;)
Ptits conseil, commenter le code, et bien respecter les indentations.
 
Enfin , apprends a déclarer tes fonction et a les apeler, l'avantage etant que dans le scripts appelant ca sera beaucoup plus clair, et ton code plus propre ;)


 
Sinon j'ai pas très bien saisi... Tu pourrais préciser par rapport à la déclaration et à l'appel des fonctions stp?

Reply

Marsh Posté le 05-05-2006 à 00:00:28    

Par rapport à ma requête  
 

Code :
  1. $query = sprintf("select data FROM config WHERE hostname='%s'",
  2. mysql_real_escape_string($hostname));


 
J'aimerais modifié cette requête de sorte à ce que je puisse intégrer des %, je m'explique, j'aimerais pouvoir faire une recherche sur  "%$hostname%"
Savez-vous comment intégrer ces %?

Reply

Marsh Posté le 05-05-2006 à 00:32:16    

remplace le hostname par hostname LIKE '\%%s\%'", ...

Reply

Marsh Posté le 05-05-2006 à 08:01:53    

SELECT * FROM config WHERE hostname LIKE '%%s%'

Reply

Marsh Posté le 05-05-2006 à 10:16:44    

Merci ça fonctionne, je pensais pas que c'était aussi simple

Reply

Marsh Posté le 05-05-2006 à 15:54:31    

lynxia a écrit :

Merci ça fonctionne, je pensais pas que c'était aussi simple


SQL = Simple Query Lanquage :ange:

Reply

Marsh Posté le 05-05-2006 à 17:42:20    

the_bigboo a écrit :

SQL = Simple Query Lanquage :ange:


SQL=Structured Query Language !!! [:aloy] => http://www.google.fr/search?hl=fr& [...] DcountryFR


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 08-05-2006 à 03:27:41    


Méaculpa... J'avoue... Je me suis trompé, mais quand c'est bien structuré , c'est simple a utiliser ^^
 
( T'a vu comment je me suis rattrapé !! :whistle: :p )

Reply

Marsh Posté le 08-05-2006 à 11:40:47    

the_bigboo a écrit :

Méaculpa... J'avoue... Je me suis trompé, mais quand c'est bien structuré , c'est simple a utiliser ^^
 
( T'a vu comment je me suis rattrapé !! :whistle: :p )


 
Très jolie pirouette...
 
En plus, tu as des excuses parce qu'il y a des endroits où c'est écrit "Simple Query Language" => http://www.bonweb.com/glo_S.php


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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