Page 1 sur 1

impossible de mettre à jour ma table

Posté : 30 janv. 2008, 15:42
par x@v
Bonjour,
je dois mettre une table à jour, mais ma requête renvoi une erreur ?
message d'erreur que j'affiche

Code : Tout sélectionner

Il y a une erreur à l'execution de cette requete de mis à jour table "Personne" : UPDATE personne SET `idPersonne`=1, `mailF`='', `mailH`='', `nomEntreprise`='pppppppp', `nomF`='ppppppppppp', `nomH`='ppppppppppp', `prenomF`='ppppppppppp', `prenomH`='pppppppppp', `marie`='', `commentaire`='pppppppppppppppsdfsdfsdf dxdsd ', `adresse`='pppppppppppp', `codePostal`='0', `ville`='pppppppp', `telDomicile`='pppppppppp', `telPortable`='ppppppppppp', `telBureau`='pppppp', `gardeF`='', `gardeH`='', `dateNaissanceF`='', `dateNaissanceH='ppppppppp'`, `nombreEnfantH`='2', `nombreEnfantF`='3', `proffessionF`='pppppppppp', `proffessionH`='ppppppppppp', `anglais`='', `espagnol`='', `allemand`='', `chinois`='', `italien`='', `autres`='', `niveauEtudeF`='pppppppppppppp', `niveauEtudeH`='ppppppppp', `auteur`='', `compositeur`='', `chanteur`='', `arrangeur`='', `batteur`='', `guitariste`='', `bassiste`='', `pianniste`='', `violoniste`='', `trombonne`='', `saxophoniste`='', `trompette`='', `dateInsertion`='1201699050', `modifier`=' 1201699050' where idPersonne =1 Il y a une erreur à l'execution de cette requete de mis à jour table "Personne" : UPDATE personne SET `idPersonne`=1, `mailF`='', `mailH`='', `nomEntreprise`='pppppppp', `nomF`='ppppppppppp', `nomH`='ppppppppppp', `prenomF`='ppppppppppp', `prenomH`='pppppppppp', `marie`='', `commentaire`='ppppppppppppppp', `adresse`='pppppppppppp', `codePostal`='0', `ville`='pppppppp', `telDomicile`='pppppppppp', `telPortable`='ppppppppppp', `telBureau`='pppppp', `gardeF`='', `gardeH`='', `dateNaissanceF`='', `dateNaissanceH='ppppppppp', `nombreEnfantH`='2', `nombreEnfantF`='3', `proffessionF`='pppppppppp', `proffessionH`='ppppppppppp', `anglais`='', `espagnol`='', `allemand`='', `chinois`='', `italien`='', `autres`='', `niveauEtudeF`='pppppppppppppp', `niveauEtudeH`='ppppppppp', `auteur`='', `compositeur`='', `chanteur`='', `arrangeur`='', `batteur`='', `guitariste`='', `bassiste`='', `pianniste`='', `violoniste`='', `trombonne`='', `saxophoniste`='', `trompette`='', `dateInsertion`='1201700648', `modifier`='1201700648' where idPersonne =1 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 'nombreEnfantH`='2', `nombreEnfantF`='3', `proffessionF`='pppppppppp', `proffessi' at line 2
ma requette :

Code : Tout sélectionner

$query = "UPDATE personne SET `idPersonne`=$article, `mailF`='$mailF', `mailH`='$mailH', `nomEntreprise`='$nomEntreprise', `nomF`='$nomF', `nomH`='$nomH', `prenomF`='$prenomF', `prenomH`='$prenomH', `marie`='$marie', `commentaire`='$commentaire', `adresse`='$adresse', `codePostal`='$codePostal', `ville`='$ville', `telDomicile`='$telDomicile', `telPortable`='$telPortable', `telBureau`='$telBureau', `gardeF`='$gardeF', `gardeH`='$gardeH', `dateNaissanceF`='$dateNaissanceF', `dateNaissanceH='$dateNaissanceH'`, `nombreEnfantH`='$nombreEnfantH', `nombreEnfantF`='$nombreEnfantF', `proffessionF`='$proffessionF', `proffessionH`='$proffessionH', `anglais`='$anglais', `espagnol`='$espagnol', `allemand`='$allemand', `chinois`='$chinois', `italien`='$italien', `autres`='$autres', `niveauEtudeF`='$niveauEtudeF', `niveauEtudeH`='$niveauEtudeH', `auteur`='$auteur', `compositeur`='$guitariste', `chanteur`='$chanteur', `arrangeur`='$arrangeur', `batteur`='$batteur', `guitariste`='$guitariste', `bassiste`='$bassiste', `pianniste`='$pianniste', `violoniste`='$violoniste', `trombonne`='$trombonne', `saxophoniste`='$saxophoniste', `trompette`='$trompette', `dateInsertion`='$time', `modifier`=' $time' where idPersonne =$article"; if (!$result) { echo 'Il y a une erreur à l\'execution de cette requete de mis à jour table "Personne" : <pre>'.$query.'</pre>'; echo mysql_error($lien).'<br>'; } $result=mysql_query($query, $lien);
Ma base

Code : Tout sélectionner

-- phpMyAdmin SQL Dump -- version 2.10.3deb1ubuntu0.1 -- http://www.phpmyadmin.net -- -- Serveur: localhost -- Généré le : Mer 30 Janvier 2008 à 14:40 -- Version du serveur: 5.0.45 -- Version de PHP: 5.2.3-1ubuntu6.2 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -- Base de données: 'agendaor' -- -- -------------------------------------------------------- -- -- Structure de la table 'admin' -- CREATE TABLE admin ( pseudo varchar(100) collate latin1_general_ci NOT NULL default '', passe varchar(20) collate latin1_general_ci NOT NULL default '' ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; -- -- Contenu de la table 'admin' -- INSERT INTO admin (pseudo, passe) VALUES ('jackyPseudo', 'jackyPasse'); INSERT INTO admin (pseudo, passe) VALUES ('xav', 'xav'); INSERT INTO admin (pseudo, passe) VALUES ('jacky', 'etoile'); -- -------------------------------------------------------- -- -- Structure de la table 'personne' -- CREATE TABLE personne ( idPersonne tinyint(11) NOT NULL auto_increment, mailF varchar(250) collate latin1_general_ci NOT NULL default '', mailH varchar(250) collate latin1_general_ci NOT NULL default '', nomEntreprise varchar(250) collate latin1_general_ci NOT NULL default '', nomF varchar(100) collate latin1_general_ci NOT NULL default '', nomH varchar(100) collate latin1_general_ci NOT NULL default '', prenomF varchar(100) collate latin1_general_ci NOT NULL default '', prenomH varchar(100) collate latin1_general_ci NOT NULL default '', marie varchar(3) collate latin1_general_ci NOT NULL, commentaire text collate latin1_general_ci NOT NULL, adresse varchar(250) collate latin1_general_ci NOT NULL default '', codePostal varchar(20) collate latin1_general_ci NOT NULL, ville varchar(200) collate latin1_general_ci NOT NULL, telDomicile varchar(20) collate latin1_general_ci NOT NULL default '', telPortable varchar(20) collate latin1_general_ci NOT NULL default '', telBureau varchar(20) collate latin1_general_ci NOT NULL default '', gardeF varchar(3) collate latin1_general_ci NOT NULL, gardeH varchar(3) collate latin1_general_ci NOT NULL, dateNaissanceF varchar(20) collate latin1_general_ci NOT NULL default '', dateNaissanceH varchar(20) collate latin1_general_ci NOT NULL default '', nombreEnfantH varchar(30) collate latin1_general_ci NOT NULL, nombreEnfantF varchar(30) collate latin1_general_ci NOT NULL, proffessionF varchar(100) collate latin1_general_ci NOT NULL default '', proffessionH varchar(100) collate latin1_general_ci NOT NULL default '', anglais varchar(100) collate latin1_general_ci NOT NULL, espagnol varchar(100) collate latin1_general_ci NOT NULL, allemand varchar(100) collate latin1_general_ci NOT NULL, chinois varchar(100) collate latin1_general_ci NOT NULL, italien varchar(100) collate latin1_general_ci NOT NULL, autres varchar(100) collate latin1_general_ci NOT NULL, niveauEtudeF varchar(100) collate latin1_general_ci NOT NULL default '', niveauEtudeH varchar(100) collate latin1_general_ci NOT NULL default '', auteur varchar(100) collate latin1_general_ci NOT NULL default '', compositeur varchar(100) collate latin1_general_ci NOT NULL default '', chanteur varchar(100) collate latin1_general_ci NOT NULL default '', arrangeur varchar(100) collate latin1_general_ci NOT NULL default '', batteur varchar(100) collate latin1_general_ci NOT NULL default '', guitariste varchar(100) collate latin1_general_ci NOT NULL default '', bassiste varchar(100) collate latin1_general_ci NOT NULL, pianniste varchar(100) collate latin1_general_ci NOT NULL default '', violoniste varchar(100) collate latin1_general_ci NOT NULL default '', trombonne varchar(100) collate latin1_general_ci NOT NULL default '', saxophoniste varchar(100) collate latin1_general_ci NOT NULL, trompette varchar(100) collate latin1_general_ci NOT NULL default '', dateInsertion varchar(250) collate latin1_general_ci NOT NULL default '', modifier varchar(250) collate latin1_general_ci NOT NULL, PRIMARY KEY (idPersonne), KEY nomH (nomH), KEY nomF (nomF) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; -- -- Contenu de la table 'personne' -- INSERT INTO personne (idPersonne, mailF, mailH, nomEntreprise, nomF, nomH, prenomF, prenomH, marie, commentaire, adresse, codePostal, ville, telDomicile, telPortable, telBureau, gardeF, gardeH, dateNaissanceF, dateNaissanceH, nombreEnfantH, nombreEnfantF, proffessionF, proffessionH, anglais, espagnol, allemand, chinois, italien, autres, niveauEtudeF, niveauEtudeH, auteur, compositeur, chanteur, arrangeur, batteur, guitariste, bassiste, pianniste, violoniste, trombonne, saxophoniste, trompette, dateInsertion, modifier) VALUES (1, 'sqdfgdsfdgdshf', 'kjnhbgvfcxvbhn', 'pppppppp', 'ppppppppp', 'ppppppppppp', 'ppppppppppp', 'pppppppppp', 'oui', 'ppppppppppppppp', 'pppppppppppp', '0', 'pppppppp', 'pppppppppp', 'ppppppppppp', 'pppppp', 'on', 'on', 'ppppppppp', 'ppppppppp', '2', '3', 'pppppppppp', 'ppppppppppp', '', '', '', '', '', '', 'pppppppppppppp', 'ppppppppp', '', '', '', '', '', '', '', '', '', '', '', '', '1201473314', '0'); INSERT INTO personne (idPersonne, mailF, mailH, nomEntreprise, nomF, nomH, prenomF, prenomH, marie, commentaire, adresse, codePostal, ville, telDomicile, telPortable, telBureau, gardeF, gardeH, dateNaissanceF, dateNaissanceH, nombreEnfantH, nombreEnfantF, proffessionF, proffessionH, anglais, espagnol, allemand, chinois, italien, autres, niveauEtudeF, niveauEtudeH, auteur, compositeur, chanteur, arrangeur, batteur, guitariste, bassiste, pianniste, violoniste, trombonne, saxophoniste, trompette, dateInsertion, modifier) VALUES (2, 'mmmmm', '', 'sdqfgds', 'mmmmmm', 'mmmmmmmm', 'mmmmm', 'mmmmmmmm', 'oui', 'mmmmmmmmmmmmm', 'mmmmm', '0', 'mmmmmm', 'mmmmmm', 'mmmmmmmm', 'mmmmmm', 'on', 'on', 'mmmmmmm', 'mm', '1', '3', 'mmmm', 'mmmmmmmm', 'mmmmm', 'mmmmmm', 'mmmmmm', 'mmmmmmmm', 'mmmmmm', 'mmmmmm', 'mmm', 'mmmm', 'on', '', 'on', '', 'on', '', '', 'on', '', 'on', '', '', '1201475288', '1201475288'); INSERT INTO personne (idPersonne, mailF, mailH, nomEntreprise, nomF, nomH, prenomF, prenomH, marie, commentaire, adresse, codePostal, ville, telDomicile, telPortable, telBureau, gardeF, gardeH, dateNaissanceF, dateNaissanceH, nombreEnfantH, nombreEnfantF, proffessionF, proffessionH, anglais, espagnol, allemand, chinois, italien, autres, niveauEtudeF, niveauEtudeH, auteur, compositeur, chanteur, arrangeur, batteur, guitariste, bassiste, pianniste, violoniste, trombonne, saxophoniste, trompette, dateInsertion, modifier) VALUES (3, 'uuuuuuuuuuuu', 'uuuuuuuuuu', 'uuuuuuu ', 'uuuuuuuu', 'uuuuuuuuuu', ' uuuuuu', 'uuuuuuuu', 'oui', 'uuuuuuuuuu\r\nuuuuuuuuuu\r\nuuuuuuuuu\r\nu', 'uuuuuuuu', '0', 'uuuuuuuuu', 'uuuuuuu', 'uuuuuuuu', 'uuuuuuuuu', '', 'on', 'uuuuuuuuuu', 'uuuuuuuuu', '1', '1', 'uuuuuu', 'uuuuuuu', 'uuuuuuu', 'uuuuuuuu', 'uuuuuuuu', 'uuuuuuuuu', 'uuuuuu', 'uuuuuuuu', 'uuuuuuuuuu', 'uuuuuuuuuu', 'on', 'on', 'on', 'on', 'on', 'on', '', 'on', 'on', 'on', 'on', 'on', '1201475787', '1201475787');
Merci[/code]

Posté : 30 janv. 2008, 15:58
par d0m
tu aurais pu sauter des lignes... c'est lourd une requête de cette taille en longueur.

l'erreur te dit ou il y a un prob :

Code : Tout sélectionner

...near 'nombreEnfantH`='2',...
tu regardes donc juste avant et tu vois :
`dateNaissanceH='$dateNaissanceH'`,
tu as mis ta cote trop loin...

Posté : 30 janv. 2008, 16:19
par x@v
J'ai corrigé mais j'ai toujours l'erreur

Code : Tout sélectionner

`nombreEnfantH`='$nombreEnfantH', `nombreEnfantF`='$nombreEnfantF',
mesage d'erreur:

Code : Tout sélectionner

Il y a une erreur à l'execution de cette requete de mis à jour table "Personne" : [code]UPDATE personne SET `idPersonne`=3, `mailF`='uuuuuuuuuuuu', `mailH`='uuuuuuuuuu', `nomEntreprise`='uuuuuuu ', `nomF`='uuuuuuuuuu', `nomH`='uuuuuuuuuu', `prenomF`=' uuuuuu', `prenomH`='uuuuuuuu', `marie`='', `commentaire`='uuuuuuuuuu uuuuuuuuuu uuuuuuuuu u', `adresse`='uuuuuuuu', `codePostal`='0', `ville`='uuuuuuuuu', `telDomicile`='uuuuuuu', `telPortable`='uuuuuuuu', `telBureau`='uuuuuuuuu', `gardeF`='', `gardeH`='', `dateNaissanceF`='', `dateNaissanceH`='uuuuuuuuu', `nombreEnfantH`='1', `nombreEnfantF`='1', `proffessionF`='uuuuuu', `proffessionH`='uuuuuuu', `anglais`='', `espagnol`='', `allemand`='', `chinois`='', `italien`='', `autres`='', `niveauEtudeF`='uuuuuuuuuu', `niveauEtudeH`='uuuuuuuuuu', `auteur`='', `compositeur`='', `chanteur`='', `arrangeur`='', `batteur`='', `guitariste`='', `bassiste`='', `pianniste`='', `violoniste`='', `trombonne`='', `saxophoniste`='', `trompette`='', `dateInsertion`='1201702640', `modifier`='1201702640' where idPersonne=3
[/code]
désolé pour la requete mais un update ne doit pas se faire sur tous les champs ?
Merci

Posté : 30 janv. 2008, 16:32
par Truc
Le message est toujours exactement le même ?
un update ne doit pas se faire sur tous les champs ?
Non... si tu ne veux modifier qu'un seul champ alors tu ne listeras pas tous les autres

Code : Tout sélectionner

UPDATE table SET champ1 = 'valeur'
même si la table comporte 10 champs seul le champ1 sera modifié

les "apostrophes inversées" ` que tu as autour des noms de champs ne sont pas obligatoire voire même superflues.
A n'utiliser que si le nom du champ correspond à un mot clé réservé par MySQL.

Tu y verras déjà beaucoup plus clair après ;)

Posté : 30 janv. 2008, 16:34
par Ryle
Un update se fait sur les champs que tu as besoin de mettre à jour.. il est par exemple inutile dans ton cas de mettre à jour l'id du champ avec la même valeur :

Code : Tout sélectionner

SET `idPersonne`=3 ... WHERE idPersonne = 3
Tu peux très bien ne mettre à jour que deux champs de ton enregistrement

Code : Tout sélectionner

UPDATE personne SET `mailF`='uuuuuuuuuuuu', `mailH`='uuuuuuuuuu' where idPersonne=3
Par ailleurs, $result sera toujours faux si tu le test avant de l'avoir défini :
if (!$result) 
   { 
   echo 'Il y a une erreur à l\'execution de cette requete de mis à jour table "Personne" : <pre>'.$query.'</pre>'; 
   echo mysql_error($lien).'<br>'; 
   } 
    
   $result=mysql_query($query, $lien);
PS : A corriger également, la structure de ta table : une donnée de type date s'enregistre dans un champ de type date et pas varchar :) C'est quand même plus logique et ça te permet d'utiliser toutes les fonctions sql relatives aux dates

Posté : 30 janv. 2008, 16:42
par x@v
effectivement, je n'ai plus de message d'erreur mysql_error, mais la requete ne passe toujours pas ?
Il y a une erreur à l'execution de cette requete de mis à jour table "Personne" :

Code : Tout sélectionner

UPDATE personne SET idPersonne=3, mailF='uuuuuuuuuuuu', mailH='uuuuuuuuuu', nomEntreprise='uuuuuuu ', nomF='uuuuuuuuuu', nomH='uuuuuuuuuu', prenomF=' uuuuuu', prenomH='uuuuuuuu', marie='', commentaire='uuuuuuuuuu uuuuuuuuuu uuuuuuuuu u', adresse='uuuuuuuu', codePostal='0', ville='uuuuuuuuu', telDomicile='uuuuuuu', telPortable='uuuuuuuu', telBureau='uuuuuuuuu', gardeF='', gardeH='', dateNaissanceF='', dateNaissanceH='uuuuuuuuu', nombreEnfantH='1', nombreEnfantF='1', proffessionF='uuuuuu', proffessionH='uuuuuuu', anglais='', espagnol='', allemand='', chinois='', italien='', autres='', niveauEtudeF='uuuuuuuuuu', niveauEtudeH='uuuuuuuuuu', auteur='', compositeur='', chanteur='', arrangeur='', batteur='', guitariste='', bassiste='', pianniste='', violoniste='', trombonne='', saxophoniste='', trompette='', dateInsertion='1201703985', modifier='1201703985' where idPersonne=3
J'ai mis des sauts de lignes pour y voir plus clair
Existe t-il une requete pour compter le nombres de champs(pas les enregistrement) ?
c'est quelque chose comme cela
SHOWS COLUMNS FROM agendaor.personne

Posté : 30 janv. 2008, 16:48
par Ryle
Bah non... s'il n'y a pas d'erreur retournée par mysql_error(), c'est qu'il n'y a pas d'erreur SQL.

Alors je réitère :
Par ailleurs, $result sera toujours faux si tu le test avant de l'avoir défini :
if (!$result) // test de la valeur contenu dans $result
   { 
   echo 'Il y a une erreur à l\'execution de cette requete de mis à jour table "Personne" : <pre>'.$query.'</pre>'; 
   echo mysql_error($lien).'<br>'; 
   } 
    
   $result=mysql_query($query, $lien); // exécution de la requête et définition de $result 

Posté : 30 janv. 2008, 17:01
par x@v
ah,
merci
PS: c'est fou et dire que je cherche depuis une heure une erreur comme ça
=D> Ryle et merci au participant

Posté : 30 janv. 2008, 17:39
par Truc
D'où le faite de "bien" lire les messages parait que très souvent la solution est même donnée si si :-$

N'oublie pas le [Résolu] ;)