Mise à jour de données, code qui marche pas

Mise à jour de données, code qui marche pas - PHP - Programmation

Marsh Posté le 29-05-2005 à 11:48:25    

Bon voilà : j'ai créé un site avec un espace membre et un panneau d'administration qui permet de mettre à jour les informations des membres.
 
En l'occurrence, je fixe un niveau d'accès, un "grade", un pseudo, et une adresse email à chaque membre. J'ai créé un formulaire spécial pour que je puisse modifier ces données mais il ne fonctionne pas ... je suspecte la variable que j'ai placé dans le bouton d'activation d'en être à l'origine mais je ne sais pas comment régler le problème.
 
Page du formulaire :  
 

Code :
  1. include ('../config.php');
  2. $db = mysql_connect($base,$login,$password);
  3. mysql_select_db('table_utilisateurs',$db);
  4. $sql = 'SELECT * FROM table_utilisateurs';
  5. $req = mysql_query($sql);
  6. while ($data = mysql_fetch_assoc($req))
  7. {
  8. echo '<br /><form name="modif" action="grades2.php" method="post">';
  9. echo '<b><input type="text" name="pseudo" value="'.$data['pseudo'].'"></b>
  10. <br /><input type="text" name="email" value="'.$data['email'].'">
  11. <br /><input type="text" name="grade" value="'.$data['grade'].'">
  12. <br />Niveau actuel : '.$data['niveau'].' <select name="niveau"><option>0</option><option>1</option><option>2</option><option>3</option></select><br /><br />';
  13. echo '<input type="submit" value="'.$data['ID'].'" name="envoi"></form>';
  14. }
  15. mysql_close();


 
Page de réception des valeurs :
 

Code :
  1. $ID = $_POST['envoi'];
  2. $pseudo = $_POST['pseudo'];
  3. $grade = $_POST['grade'];
  4. $niveau2 = $_POST['niveau'];
  5. $email = $_POST['email'];
  6. include ('../config.php');
  7. $db = mysql_connect($base,$login,$password);
  8. mysql_select_db('table_utilisateurs',$db);
  9. $sql = 'UPDATE table_utilisateurs(pseudo,mdp,grade,niveau,email,ID) SET pseudo = "'.$pseudo.'", grade = "'.$grade.'", niveau = "'.$niveau2.'", email = "'.$email.'" WHERE  ID = "'.$ID.'"';
  10. $req = mysql_query($sql);
  11. echo "Vous avez fait la modification pour $ID <br />";
  12. echo "Nouvelles valeurs : $pseudo ; $grade ; $niveau ; $email";


 
(bien sûr tout est sécurisé avec des variables de sessions pour vérifier que la personne qui demande accès à la page soit bien un administrateur, ça fonctionne bien pour ça ^^)
 
Merci d'avance !

Reply

Marsh Posté le 29-05-2005 à 11:48:25   

Reply

Marsh Posté le 29-05-2005 à 12:20:31    

Code :
  1. $req = mysql_query($sql);


Teste la mysql_query :

Code :
  1. $req = mysql_query($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());


Perso, j'ai jamais utilisé une requête UPDATE de cette façon [:spamafote]
Aussi, précise ce qui se passe (Erreurs, affichage...)


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 29-05-2005 à 12:41:57    

C'est vrai qu'elle est un peut freestyle cette requete. :??:

Reply

Marsh Posté le 29-05-2005 à 15:04:19    

Il faut que tu fasse comme ça :
 

Code :
  1. // Comme tu le vois, il ne faut pas utiliser de variables sinon l'update ne se fera pas. Il faut la faire directement.
  2. mysql_query('UPDATE table_utilisateurs SET pseudo=\'' . $pseudo . '\', grade=\'' . $grade . '\', niveau=\'' . $niveau2 . '\', email=\'' . $email . '\' WHERE ID =\'' . $ID . '\'');


 

Reply

Marsh Posté le 29-05-2005 à 15:04:51    

Enfin... c'est plutôt comme ça que je les fais moi ... :whistle:

Reply

Marsh Posté le 29-05-2005 à 16:19:36    

Je sais pas, j'ai toujours fait mes requêtes en passant par une variable ... et ça a toujours bien marché.
 
Ça rend le code plus lisible je trouve. M'enfin, je vais essayer à ta façon.

Reply

Marsh Posté le 29-05-2005 à 16:21:01    

Citation :

Aussi, précise ce qui se passe (Erreurs, affichage...)


 
Ben il ne se passe rien d'anormal, justement. Tout s'affiche comme si tout se passait correctement, mais aucune mise à jour ne s'effectue.


Message édité par mahuf le 29-05-2005 à 16:21:32
Reply

Marsh Posté le 29-05-2005 à 17:06:23    

Ne passe pas par des variables :o.
En même temps, dis-moi si ça marche comme ça, car j'ai jamais essayé de faire mes updates avec... des variables :D.
 
EDIT : Tu passes par des variables lorsque tu fais des SELECT oui, mais pas pour ça ;).


Message édité par Killer_386 le 29-05-2005 à 17:07:17
Reply

Marsh Posté le 29-05-2005 à 19:24:17    

[:gratgrat] passer par des variables, c'est beaucoup mieux pour la lisibilité, quelque  soit la requête à effectuer.
 
T'as vérifié la valeur de la requête (par le die(), comme j'ai dit dans mon premier post)


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 29-05-2005 à 21:14:45    

J'ai bien essayé de vérifier, mais comme je l'ai dit, rien ...
 
Il fait tout comme si tout allait bien mais au moment de faire l'update, que dalle, tout reste normal.

Reply

Marsh Posté le 29-05-2005 à 21:14:45   

Reply

Marsh Posté le 29-05-2005 à 21:15:05    

Pour les variables : j'ai toujours fait comme ça et ça a toujours fonctionné.

Reply

Marsh Posté le 29-05-2005 à 21:42:08    

Pour faire une requête avec un SELECT oui, on passe par des variables.
Pour un UPDATE SET, DELETE FROM ou INSERT INTO je ne mets jamais de variables !
Est-ce que tu as quand même essayé ma solution mahuf ???


Message édité par Killer_386 le 29-05-2005 à 21:43:44
Reply

Marsh Posté le 29-05-2005 à 21:44:15    

Reply

Marsh Posté le 29-05-2005 à 21:49:17    

Allez, je suis vraiment très gentil !
 

Code :
  1. <?php
  2.    /* connexion à la base */
  3.    mysql_pconnect("localhost", "mysql_user", "mysql_password" ) or
  4.        die("Impossible de se connecter : " . mysql_error());
  5.    /* Requête de modification Update */
  6.    mysql_query("UPDATE mytable SET used=1 WHERE id < 10" );
  7.    printf ("Lignes modifiées : %d\n", mysql_affected_rows());
  8. mysql_query("COMMIT" );
  9. ?>


 
Ce script d'exemple est tiré de php.net.

Reply

Marsh Posté le 29-05-2005 à 21:52:33    

Que ça passe par un variable ou pas cela ne change strictement rien. Je passe par une variable afin de pouvoir faire un echo sur la requete en cas de probleme. Donc, faire une requete en passant par un variable ou pas cela ne change rien.

Reply

Marsh Posté le 29-05-2005 à 22:04:55    

Berceker United a écrit :

Que ça passe par un variable ou pas cela ne change strictement rien. Je passe par une variable afin de pouvoir faire un echo sur la requete en cas de probleme. Donc, faire une requete en passant par un variable ou pas cela ne change rien.


+1, c'est évident !


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 30-05-2005 à 18:05:59    

J'ai trouvé d'ou venait le problème : en fait c'est qu'il n'arrivait pas à reçevoir l'ID correctement, ce qui faisait qu'il envoyait la requête "dans le vide".

Reply

Sujets relatifs:

Leave a Replay

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