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

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1100833
mahuf
Posté le 29-05-2005 à 11:48:25  profilanswer
 

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 !

mood
Publicité
Posté le 29-05-2005 à 11:48:25  profilanswer
 

n°1100839
Master p
My new cock ring :D
Posté le 29-05-2005 à 12:20:31  profilanswer
 

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
n°1100842
Berceker U​nited
PSN : berceker_united
Posté le 29-05-2005 à 12:41:57  profilanswer
 

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

n°1100886
Killer_386
Posté le 29-05-2005 à 15:04:19  profilanswer
 

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 . '\'');


 

n°1100887
Killer_386
Posté le 29-05-2005 à 15:04:51  profilanswer
 

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

n°1100920
mahuf
Posté le 29-05-2005 à 16:19:36  profilanswer
 

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.

n°1100921
mahuf
Posté le 29-05-2005 à 16:21:01  profilanswer
 

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
n°1100936
Killer_386
Posté le 29-05-2005 à 17:06:23  profilanswer
 

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
n°1100998
Master p
My new cock ring :D
Posté le 29-05-2005 à 19:24:17  profilanswer
 

[: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
n°1101071
mahuf
Posté le 29-05-2005 à 21:14:45  profilanswer
 

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.

mood
Publicité
Posté le 29-05-2005 à 21:14:45  profilanswer
 

n°1101072
mahuf
Posté le 29-05-2005 à 21:15:05  profilanswer
 

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

n°1101097
Killer_386
Posté le 29-05-2005 à 21:42:08  profilanswer
 

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
n°1101103
Killer_386
Posté le 29-05-2005 à 21:44:15  profilanswer
 
n°1101110
Killer_386
Posté le 29-05-2005 à 21:49:17  profilanswer
 

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.

n°1101116
Berceker U​nited
PSN : berceker_united
Posté le 29-05-2005 à 21:52:33  profilanswer
 

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.

n°1101124
sircam
I Like Trains
Posté le 29-05-2005 à 22:04:55  profilanswer
 

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}
n°1101998
mahuf
Posté le 30-05-2005 à 18:05:59  profilanswer
 

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".


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

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

 

Sujets relatifs
Probleme d'insertion dans ma base de données[Mysql] Base de données trop grosse... [Résolu]
Fournisseur de données OLE DBProblème de code et Mysql !! Comprend rien !
Probleme de boucle et base de donneescration d'un bouton et association d'une fonction a ce code
Connectionà une base de données Ms sql en c++??Récupération données Mysql vers Mysql
Mise en forme du code et format affiché 
Plus de sujets relatifs à : Mise à jour de données, code qui marche pas


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