mise a jour de BD SQL en php avec "update"

mise a jour de BD SQL en php avec "update" - PHP - Programmation

Marsh Posté le 21-01-2009 à 13:42:09    

Bonjour,
 
Mon code ci-dessous me joue des tours: il s'exécute mais ne met pas jour ma base de donnée :??:
Je suis à peu près sûr que c'est une erreur de syntaxe, mais je ne la trouve pas.
 
Pourriez-vous m'aider s'il vous plait? :(  
 
mysql_connect("localhost", "root", "" ); // Connexion à MySQL
      mysql_select_db("projet" ); // Sélection de la base projet
      mysql_query('UPDATE "personne" SET Id_adresse=="' . addslashes($_SESSION[Id_adresse]) . '",
      N°_Portable="' . addslashes($_SESSION[num_port]). '",
      N°_Telephone="' . addslashes($_SESSION[num_fixe]). '",
      Email="' . addslashes($_SESSION[email]). '",
      Date_de_naissance="' . addslashes($_SESSION[datedenaissance]). '"  
      WHERE Id_personne="' .$_SESSION[idpersonne]. '"');
      mysql_close(); // Déconnexion de MySQL*/

Reply

Marsh Posté le 21-01-2009 à 13:42:09   

Reply

Marsh Posté le 21-01-2009 à 14:18:38    

eldran64 a écrit :

Bonjour,
 mysql_query('UPDATE "personne" SET Id_adresse=="' . addslashes($_SESSION[Id_adresse]) . '",
/


 
id_adresse==, ca peut venir de là ? :(  
Que dit le or die(mysql_error()) :??:  
 
Tes variables de sessions ne méritent-t-elles pas des quotes entre les crochets ? => ex : $_SESSION['var'] :o  
 
Moi perso j'aime pas faire les requêtes en utilisant des simplequotes.
 
Et je préfère stocker mes requêtes dans une variable, pour pouvoir la contrôler quand il y a des soucis. :)  
 
Alors voilà ce que ca donnerai :

Code :
  1. $query = "UPDATE personne
  2.   SET Id_adresse='" . addslashes($_SESSION['Id_adresse']) . "',
  3.   N°_Portable='" . addslashes($_SESSION['num_port']). "',
  4.   N°_Telephone='" . addslashes($_SESSION['num_fixe']). "',
  5.   Email='" . addslashes($_SESSION['email']). "',
  6.   Date_de_naissance='" . addslashes($_SESSION['datedenaissance']). "' 
  7.   WHERE Id_personne='" .$_SESSION['idpersonne']. "'";
  8. mysql_query()or die('Erreur SQL.<br />Requête : '.$query);


Une fois l'application déboguée, oublie pas d'enlever le or die(); :sarcastic:  
 
En espérant t'avoir aidé. :hello:


Message édité par jocastt le 21-01-2009 à 14:20:09
Reply

Marsh Posté le 21-01-2009 à 14:33:51    

Merci pour ton aide mais malheureusement mon navigateur me sort joyeusement:
 
Warning: Wrong parameter count for mysql_query() in C:\wamp\www\site_(projet)\Formulaire.php on line 209
 
Ce qui équivaut à ta dernière ligne.

Message cité 1 fois
Message édité par eldran64 le 21-01-2009 à 14:34:57
Reply

Marsh Posté le 21-01-2009 à 14:38:02    

eldran64 a écrit :

Merci pour ton aide mais malheureusement mon navigateur me sort joyeusement:
 
Warning: Wrong parameter count for mysql_query() in C:\wamp\www\site_(projet)\Formulaire.php on line 209
 
Ce qui équivaut à ta dernière ligne.


mysql_query($query)or die('blabla...');
J'ai oublié d'le mettre :whistle:

Reply

Marsh Posté le 21-01-2009 à 14:43:25    

jocastt a écrit :


mysql_query($query)or die('blabla...');
J'ai oublié d'le mettre :whistle:


 
Je viens de mettre le code suivant:
 
$query = "UPDATE personne
      SET Id_adresse='" . addslashes($_SESSION['Id_adresse']) . "',
      N°_Portable='" . addslashes($_SESSION['num_port']). "',
      N°_Telephone='" . addslashes($_SESSION['num_fixe']). "',
      Email='" . addslashes($_SESSION['email']). "',
      Date_de_naissance='" . addslashes($_SESSION['datedenaissance']). "'  
      WHERE Id_personne='" .$_SESSION['idpersonne']. "'";
      mysql_query($query)or die('blabla...');  
 
et le navigateur me dit blabla.
Donc je peux en déduire que ma requête est fausse? :sweat:

Message cité 1 fois
Message édité par eldran64 le 21-01-2009 à 14:47:09
Reply

Marsh Posté le 21-01-2009 à 14:46:23    

eldran64 a écrit :


Donc je peux en déduire que ma requête est fausse? :sweat:


Certes.
remplace ta ligne mysql_query() par

Code :
  1. mysql_query($query)or die('Erreur SQL.<br />Requête : '.$query);


 
Ca va afficher ta requête, copie/colle la ici, on pourra voir le problème. ;)  

Reply

Marsh Posté le 21-01-2009 à 14:49:47    

Et bien voilà la réponse du navigateur:
 
Erreur SQL.
Requête : UPDATE personne SET Id_adresse='2', N°_Portable='0612345678', N°_Telephone='0000000000', Email='pierre.dupont@hotmail.fr', Date_de_naissance='1985-11-26' WHERE Id_personne='2'
 
et voici ma base de donnée:
 Id_personne  Id_adresse  Nom     Prenom  N°_Portable    N°_Telephone  Email                               Date_de_naissance    Login   Mot_de_passe  
    2                   2         dupont   pierre   0612345678   0212345678     pierre.dupont@hotmail.fr     1985-11-26              pierre  dupont
 
Je vois pas d'où ça pourrait venir :ouch:

Message cité 1 fois
Message édité par eldran64 le 21-01-2009 à 14:56:43
Reply

Marsh Posté le 21-01-2009 à 14:57:04    

eldran64 a écrit :

Et bien voilà la réponse du navigateur:
 
Erreur SQL.
Requête : UPDATE personne SET Id_adresse='2', N°_Portable='0612345678', N°_Telephone='0000000000', Email='pierre.dupont@hotmail.fr', Date_de_naissance='1985-11-26' WHERE Id_personne='2'


 
La requête me semble bonne, :)  
Vérifie si tes champs s'appellent bien de la meme facon que dans ta requête.
on peut se poser la question notamment pour les champs qui commencent par N°, choisi plutôt des noms de champs sans caracteres spéciaux, tout en minuscule. par exemple : num_tel, email, num_port, id_adresse, id_perssonne, date_de_naissance...
 
Pour obtenir l'erreur de mysql. remplace:
mysql_query($query)or die('Erreur SQL.<br />Requête : '.$query);
par :
mysql_query($query)or die(mysql_error()); ;)  

Reply

Marsh Posté le 21-01-2009 à 14:59:41    

Mon navigateur vient de me dire:
No database selected
 
Requête :  
 
UPDATE personne SET Id_adresse='2', N°_Portable='0612345678', N°_Telephone='0000000000', Email='pierre.dupont@hotmail.fr', Date_de_naissance='1985-11-26' WHERE Id_personne='2'  
 
Base de donnée:
 
 Id_personne  Id_adresse  Nom     Prenom  N°_Portable    N°_Telephone  Email                               Date_de_naissance    Login   Mot_de_passe    
    2                   2         dupont   pierre   0612345678   0212345678     pierre.dupont@hotmail.fr     1985-11-26              pierre  dupont  
 
 
pourtant je sélectionne bien ma base quand je fais "UPDATE personne etc..." :pt1cable:
 
Sinon pour les caractères spéciaux je ne pense pas que cela vienne de là car je crée des entrées dans ma table sans problème...
 
Je sèche totalement....

Message cité 1 fois
Message édité par eldran64 le 21-01-2009 à 15:16:33
Reply

Marsh Posté le 21-01-2009 à 15:27:38    

eldran64 a écrit :

Mon navigateur vient de me dire:
No database selected
 
Requête :  
 
UPDATE personne SET Id_adresse='2', N°_Portable='0612345678', N°_Telephone='0000000000', Email='pierre.dupont@hotmail.fr', Date_de_naissance='1985-11-26' WHERE Id_personne='2'  
 
Base de donnée:
 
 Id_personne  Id_adresse  Nom     Prenom  N°_Portable    N°_Telephone  Email                               Date_de_naissance    Login   Mot_de_passe    
    2                   2         dupont   pierre   0612345678   0212345678     pierre.dupont@hotmail.fr     1985-11-26              pierre  dupont  
 
 
pourtant je sélectionne bien ma base quand je fais "UPDATE personne etc..." :pt1cable:
 
Sinon pour les caractères spéciaux je ne pense pas que cela vienne de là car je crée des entrées dans ma table sans problème...
 
Je sèche totalement....


Nodatabase selected ca veut dire qu'il ne trouve pas la base.
il faut que tu vérifies tes lignes au niveau de ces lignes là:
mysql_connect("localhost", "root", "" ); // Connexion à MySQL
mysql_select_db("projet" ); // Sélection de la base projet  
 
 :non: Attention de ne pas confondre base de données et table. la table, c'est celle que tu définis dans ta requête. (update TABLE set xx='yy');
(tu as d'ailleurs surement plusieurs tables dans la même base).
Vérifie donc que ta base se nomme bien projet, et que tes identifiants de connexion et ton serveur son corrects. ;)  

Reply

Marsh Posté le 21-01-2009 à 15:27:38   

Reply

Marsh Posté le 21-01-2009 à 15:31:32    

Tu as raison j'avais bien oublié de connecter correctement ma base. :D  
 
Mais maintenant j'obtiens encore autre chose! :sweat:  
 
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 '°_Portable='0612345678', N°_Telephone='0000000000', Email='pierre.' at line 3


Message édité par eldran64 le 21-01-2009 à 15:33:04
Reply

Marsh Posté le 21-01-2009 à 15:43:44    

° est un caractère spécial et les identifiants n'ont pas le droit de contenir des caractères spéciaux sans être entre guillemets (uniquement les guillemets inversé, ceux qui vont d'en haut à gauche vers en bas à droite, avec les réglages par défauts).  
 
Je te conseille de lire cette page là pour en savoir plus:
http://dev.mysql.com/doc/refman/5. [...] names.html
 
En gros, met des ' ` ' autour des noms de colonnes ou corrige les pour des noms plus simple à utiliser.

Reply

Marsh Posté le 21-01-2009 à 15:48:00    

J'ai mis "`" là où tu l'avais dit et....
ça marche! :)  
 
Bravo et merci à toi!!!!!
 
C'était super sympas! grâce à toi TOUT mon site fonctionne du tonnerre maintenant!!
 
Un grand MERCI!!! :bounce:

Reply

Sujets relatifs:

Leave a Replay

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