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

  FORUM HardWare.fr
  Programmation
  PHP

  Erreur de requete et formulaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur de requete et formulaire

n°1286783
mikedimoi
Posté le 18-01-2006 à 17:10:03  profilanswer
 

Salut !
 
Voici un morceau de mon code :

Code :
  1. $reponse = mysql_query("SELECT * FROM bulletin ORDER BY id" ); // Requête SQL   
  2.    
  3.    while ($donnees = mysql_fetch_array($reponse) )  {
  4. ..... [code]
  5. Jusqu'à là, pas de problème.
  6. Je veux alors ajouté un formulaire de facon à les classer :
  7. [code] <form action="bulletin.php" method="post">
  8. <select name="choix">
  9. <option value="id" >Choix 1</option>
  10.     <option value="id ASC"  selected="selected">Choix 1</option>
  11.     <option value="id DESC" >Choix 2</option>
  12.     <option value="titre" >Choix 2</option>
  13.    </select>
  14.    <input type="submit" value="Valider" />
  15. </form> 
  16.    <?
  17.    $classement = $_POST['choix'];
  18.    $reponse = mysql_query("SELECT * FROM bulletin ORDER BY $classement" ); // Requête SQL   
  19.    
  20.    while ($donnees = mysql_fetch_array($reponse) ) {
  21. ...


 
C'est à partir de là que je rencontre le probleme.
J'ai alors une erreur :

Citation :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\monchemin\bulletin.php on line 100


 
La ligne 100 étant : while ($donnees = mysql_fetch_array($reponse) )
 
Si je rajoute ("erreur req ".mysql_error()), j'ai alors :

Citation :


erreur req You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


 
A ce moment là, si je valide un champ du formulaire, tout marche normalement.
 
D'où vient ce probleme s'il vous plait ?

mood
Publicité
Posté le 18-01-2006 à 17:10:03  profilanswer
 

n°1286794
omega2
Posté le 18-01-2006 à 17:16:59  profilanswer
 

Il y a eu une erreur dans ta requette et tu ne vérifies pas si la requette c'est bien passé. Voilà d'où vient l'alerte (le "warning" ).
mysql_query retourne "false" en cas de probléme. A toi de vérifier si le résultat est égal à "false" pour savoir si ca n'a pas bien marcher.

n°1286807
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-01-2006 à 17:27:21  profilanswer
 

Fais un echo de ta requête SQL pour la lire déjà, tu verras peut être l'erreur directement.


---------------
Gamertag: CoteBlack YeLL
n°1286949
mikedimoi
Posté le 18-01-2006 à 19:03:23  profilanswer
 

Code :
  1. <form action="film1.php" method="post">
  2. <select name="choix">
  3. <option value="id" selected="selected">Choix 1</option>
  4.     <option value="id ASC" >Choix 2</option>
  5.     <option value="id DESC" >Choix 3</option>
  6.    </select>
  7.    <input type="submit" value="Valider" />
  8. </form>   
  9. <?php
  10. $classement = $_POST['choix'];
  11. mysql_connect("*****", "*****", "*****" ); // Connexion à MySQL
  12. mysql_select_db("download" ); // Sélection de la base
  13. $reponse = mysql_query("SELECT * FROM bulletin ORDER BY $classement" ); // Requête SQL
  14. echo $donnees['titre'];
  15. echo '</br>';
  16. mysql_close(); // Déconnexion de MySQL
  17. ?>


 
Voilà, rien de plus simple que çà mais pourtant toujours un probleme.
Lors du chargement de la page, rien est affiché.
Le formulaire fonctionne correctement ou il suffit que je recharge la page.
 
Si je remplace $classement par id alors ma requête est bien affichée.
 
 
L'erreur vient donc de la variable !
 
Note : j'ai aussi rajouté selected="selected" qui selectionnerait alors la valuer par defaut...rien ne change !


Message édité par mikedimoi le 18-01-2006 à 19:05:18
n°1286951
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-01-2006 à 19:06:39  profilanswer
 

Je t'ai demandé de faire un echo de requête SQL, pourquoi tu ne le fais pas ?
 
Et puis quand on fait une requête SQL on fait un "or die(mysql_error())" au minimum ... histoire d'avoir quelques infos ;)


---------------
Gamertag: CoteBlack YeLL
n°1286957
manustarfo​ot
Posté le 18-01-2006 à 19:12:29  profilanswer
 

d'ou vient ta variable $donnees['titre'] ????
il manque la creation du tableau avant

n°1286967
mikedimoi
Posté le 18-01-2006 à 19:18:16  profilanswer
 

Zut ! C'est en recopia,nt que j'ai oublié while ($donnees = mysql_fetch_array($reponse) ){

n°1286981
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-01-2006 à 19:29:13  profilanswer
 

BOn tu vas nous la mettre cette put*in de ligne de requête qu'on puisse voir où ça coince ??


---------------
Gamertag: CoteBlack YeLL
n°1287023
mikedimoi
Posté le 18-01-2006 à 20:05:23  profilanswer
 

Dj YeLL a écrit :

BOn tu vas nous la mettre cette put*in de ligne de requête qu'on puisse voir où ça coince ??


 
 
Tout est là !
 

Code :
  1. <form action="bulletin3.php" method="post">
  2. <select name="choix">
  3. <option value="id" selected="selected">Choix 1</option>
  4.     <option value="id ASC" >Choix 2</option>
  5.     <option value="id DESC" >Choix 3</option>
  6.    </select>
  7.    <input type="submit" value="Valider" />
  8. </form> 
  9.    <?
  10.    $classement = $_POST['choix'];
  11.    $sql = mysql_connect('*****', '*****', '****'); 
  12.          mysql_select_db('download', $sql);
  13.    $reponse = mysql_query("SELECT * FROM bulletin ORDER BY $classement" )or die ("erreur req ".mysql_error());
  14. // Requête SQL   
  15.    
  16.    while ($donnees = mysql_fetch_array($reponse) ) {
  17.    echo $donnees['titre'] .'</br>';
  18.      }
  19.    mysql_close(); // Déconnexion de MySQL   
  20.    ?>


Message édité par mikedimoi le 18-01-2006 à 20:05:41
n°1287029
Sh@rdar
Ex-PhPéteur
Posté le 18-01-2006 à 20:11:18  profilanswer
 

je tente le coup !!
 
au chargement initial la variable $_POST['choix'] est nulle, mais pas une fois qu'on a cliqué sur le bouton
 
maintenant débrouille toi la solution est là :)


Message édité par Sh@rdar le 18-01-2006 à 20:11:35

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
mood
Publicité
Posté le 18-01-2006 à 20:11:18  profilanswer
 

n°1287030
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-01-2006 à 20:12:03  profilanswer
 

Bon j'abandonne ... ma question me semblait pourtant simple ... tant pis [:spamafote]


---------------
Gamertag: CoteBlack YeLL
n°1287031
Sh@rdar
Ex-PhPéteur
Posté le 18-01-2006 à 20:13:35  profilanswer
 

Dj YeLL a écrit :

Bon j'abandonne ... ma question me semblait pourtant simple ... tant pis [:spamafote]


 
 
le problème aussi, du coup la ligne est inutile :D
 
il a un requête dans ce style : SELECT * FROM matable ORDER BY
 
forcément il manque qq chose :)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1287034
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-01-2006 à 20:16:18  profilanswer
 

Sh@rdar a écrit :

le problème aussi, du coup la ligne est inutile :D
 
il a un requête dans ce style : SELECT * FROM matable ORDER BY
 
forcément il manque qq chose :)


 
Ah parce que le form et le php sont sur la même page ? :ouch:  
 
Oui ben en effet d'accord ... je n'avais pas vu ça sous cet angle...


---------------
Gamertag: CoteBlack YeLL
n°1287036
Sh@rdar
Ex-PhPéteur
Posté le 18-01-2006 à 20:17:26  profilanswer
 

le détail qui tue
 

Citation :


A ce moment là, si je valide un champ du formulaire, tout marche normalement.  


 
:lol:


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1287041
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-01-2006 à 20:21:53  profilanswer
 

Sh@rdar a écrit :

le détail qui tue
 

Citation :


A ce moment là, si je valide un champ du formulaire, tout marche normalement.  


 
:lol:


 
Ah beh oui ... là c'est vrai que ... enfin voilà quoi...
 
Mais bon, quelle drôle d'idée de lancer une requête SQL à l'affichage d'une page ... sans tester si on demande bien la page par POST par exemple  [:spamafote]


---------------
Gamertag: CoteBlack YeLL
n°1287042
mikedimoi
Posté le 18-01-2006 à 20:23:09  profilanswer
 

Vous etes nés avec le PHP en sciences infuses ou l'avez vous appris ???
 
Merci  
 
@+

n°1287052
Sh@rdar
Ex-PhPéteur
Posté le 18-01-2006 à 20:27:58  profilanswer
 

pour finir t'as vu la coquille ou pas ?


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1287054
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-01-2006 à 20:29:48  profilanswer
 

Bah faut pas le prendre comme ça ... c'est pas une question de Php, c'est une question de logique ...
 
Mais y'a pas mort d'homme ;)
 
Fais un truc dans le genre :
 

Code :
  1. if(!isset($_POST)) {
  2.    $classement = 'id';
  3. } else {
  4.    $classement = $_POST['choix'];
  5. }


 
;)
 
++


---------------
Gamertag: CoteBlack YeLL
n°1287069
mikedimoi
Posté le 18-01-2006 à 20:43:50  profilanswer
 

Pour résumer, j'ai changé pour :

Code :
  1. <?
  2.    $classement = $_POST['choix'];
  3.      $sql = mysql_connect('*****', '****', '*****'); 
  4.          mysql_select_db('download', $sql);
  5.   $requete = 'SELECT titre FROM bulletin ORDER BY '.$classement;
  6. $reponse = mysql_query( $requete) or die ('Erreur SQL :<br />'.$requete.'<br />'.mysql_error()). // Requête SQL   
  7.    
  8.    while ($donnees = mysql_fetch_array($reponse) );
  9.     {
  10.    echo $donnees['titre'] .'</br>';
  11.      }
  12.    mysql_close(); // Déconnexion de MySQL   
  13.    ?>


 
L'erreur retournée est :
 

Citation :

Parse error: parse error, unexpected T_WHILE in d:\mes sites web\accueil\telecharge\film\film3.php on line 29


 

Citation :

Mais bon, quelle drôle d'idée de lancer une requête SQL à l'affichage d'une page ... sans tester si on demande bien la page par POST par exemple  


 
Ce n'est qu'un morceau de ma page.
En fait, je liste un repertoire, j'ajoute les fichier à la BDD....d'où la requête à l'affichage de la page.
 
Quel était le probleme à mettre le formulaire dans la même page ?
 

n°1287072
Sh@rdar
Ex-PhPéteur
Posté le 18-01-2006 à 20:45:21  profilanswer
 

le problème c'est que ta variable $_POST['choix'] (et donc $classement aussi puisque c'est une copie) ne vaut rien tant que tu n'as pas posté ton formulaire
 
donc la requête est incorrete, tout simplement


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1287079
manustarfo​ot
Posté le 18-01-2006 à 20:50:48  profilanswer
 

while ($donnees = mysql_fetch_array($reponse) );
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
pas de point virgule a la fin

n°1287082
manustarfo​ot
Posté le 18-01-2006 à 20:52:25  profilanswer
 

si ton form est ds la meme page de ton code php met cette ligne :
<form action="" method="post">

n°1287091
mikedimoi
Posté le 18-01-2006 à 20:58:03  profilanswer
 

manustarfoot a écrit :

si ton form est ds la meme page de ton code php met cette ligne :
<form action="" method="post">


 
Je l'avais déjà mis çà.
 
Tout ce qu'il me manquait, c'était de donner une valeur à ma variable.
J'étais en train de chercher du côté de

Citation :

empty

, qui me semble etre la même chose (rattrapez moi si je me trompe).
 
Je comprends maintenant l'astuce que je ne connaissais pas.
 
Dernière question à laquelle vous ne m'avez pas repondu :
-Quel est le problème à mettre le formulaire dans la même page ?
 
Je vous remercide donc à tous de votre aide.
 
 

n°1287095
Sh@rdar
Ex-PhPéteur
Posté le 18-01-2006 à 20:59:39  profilanswer
 

à ton niveau aucun, quand tu trouvera ça plus pratique autrement, c'est qu'il sera temps pour toi de passer à l'étape suivante :)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1287103
mikedimoi
Posté le 18-01-2006 à 21:07:11  profilanswer
 

Merci pour ta reponse !!! :lol:  
 
J'ai bien mis :

Code :
  1. if(!isset($_POST)) {
  2.      $classement = 'id';
  3. } else {
  4.    $classement = $_POST['choix'];
  5.    }


 
et j'ai cependant la même erreur :

Citation :


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\mes sites web\accueil\telecharge\film\film1.php on line 94


 
 :ange:

n°1287108
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-01-2006 à 21:12:18  profilanswer
 

Bon allez zou, avec ça ça devrait marcher :
 

Code :
  1. <form action="bulletin3.php" method="post">
  2.    <select name="choix">
  3.        <option value="id" selected="selected">Choix 1</option>
  4.        <option value="id ASC" >Choix 2</option>
  5.        <option value="id DESC" >Choix 3</option>
  6.    </select>
  7.    <input type="submit" value="Valider" />
  8. </form>
  9.  
  10.  
  11. <?
  12. if($_SERVER['REQUEST_METHOD'] != "POST" ) {
  13.    $classement = 'id';
  14. } else {
  15.    $classement = $_POST['choix'];
  16. }
  17.  
  18. $sql = mysql_connect('*****', '*****', '****');
  19. mysql_select_db('download', $sql);
  20. $reponse = mysql_query('SELECT * FROM `bulletin` ORDER BY ' . $classement) or die ("erreur req ".mysql_error());
  21. // Requête SQL  
  22. while ($donnees = mysql_fetch_array($reponse)) {
  23.    echo $donnees['titre'] .'</br>';
  24. }
  25. mysql_close(); // Déconnexion de MySQL  
  26. ?>


---------------
Gamertag: CoteBlack YeLL
n°1287111
mikedimoi
Posté le 18-01-2006 à 21:17:14  profilanswer
 

Merci beaucoup DjYell !
 
A vrai dire, je n'aurai pas trouver tout seul...d'où le but de mon post !
 
Cependant, pour ne pas avoir le même problème la prochaine fois, je vais me documenter sur

Code :
  1. if($_SERVER['REQUEST_METHOD'] != "POST" ) {


 
C'est en forgeant qu'on devient forgeron !  
 
Merci à toi et à ceux qui ont bien voulu m'aider

n°1287116
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-01-2006 à 21:20:57  profilanswer
 

De rien,
 
fais un
 

Code :
  1. print_r($_SERVER);


 
C'est une variable qui regorge de choses utiles ;)


---------------
Gamertag: CoteBlack YeLL
n°1287124
Sh@rdar
Ex-PhPéteur
Posté le 18-01-2006 à 21:26:18  profilanswer
 

explication pour $_POST
 
c'est un tableau contenant les variables transmises en méthode POST, hors, ce tableau est toujours défini (mais pas toujours rempli)
 
il aurait fallu faire if (!isset($_POST['choix'])) à la place ;)
 


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1287135
mikedimoi
Posté le 18-01-2006 à 21:34:42  profilanswer
 

Dj YeLL a écrit :

De rien,
 
fais un
 

Code :
  1. print_r($_SERVER);


 
C'est une variable qui regorge de choses utiles ;)


 
C'est un log de Hijackthis çà !!! :lol:  
 
Merci beaucoup !
 
Edit : Bien plus instructif en le faisant comme çà que par la moquerie !  :hello:


Message édité par mikedimoi le 18-01-2006 à 21:35:29
n°1287169
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-01-2006 à 22:29:54  profilanswer
 

Sh@rdar a écrit :

explication pour $_POST
 
c'est un tableau contenant les variables transmises en méthode POST, hors, ce tableau est toujours défini (mais pas toujours rempli)
 
il aurait fallu faire if (!isset($_POST['choix'])) à la place ;)


 
Tout à fait, j'y ai pensé juste après mon 1er message, puis il m'a semblé que la méthode "REQUEST_METHOD" était plus adaptée :)


---------------
Gamertag: CoteBlack YeLL
mood
Publicité
Posté le   profilanswer
 


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

  Erreur de requete et formulaire

 

Sujets relatifs
[RESOLU]erreur a l'affichage de mes pages?????Prob de variables php dans requête mysql
odbc access ds excel erreur de spécification !!!Caractères mal encodés après validation d'un formulaire
requete SQL[Perl] Erreur non-lvalue subroutine
[SGBD/SQL] Requete INSERT avec sous requete SQL et VALUESRequete qui se comporte bizarrement des qu'il y a plus d'une entrée
Requete selection aleatoire SQLFormulaire de vote en ligne + résultats !
Plus de sujets relatifs à : Erreur de requete et formulaire


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