Problème écriture dans mysql

Résolu
Bonjour,
j'ai un problème avec une application que je suis en train de développer et je n'arrive pas à comprendre pourquoi.
J'ai une table sql qui est comme cela: TABLE `projet` (
`id_projet` varchar(10) NOT NULL,
`client_num` int(10) NOT NULL,
`nom_resp` varchar(20) NOT NULL,
`datedemande` date NOT NULL default '0000-00-00',
`designationprojet` varchar(255) NOT NULL,
`statusprojet` varchar(255) NOT NULL,
`conditions` varchar(255) NOT NULL,
`datefacturation` date NOT NULL default '0000-00-00',
`statusdossier` varchar(255) NOT NULL,
`article_num` varchar(30) NOT NULL,
`quanti` double NOT NULL,
`prix` float(8,2) NOT NULL,
`tot_art_htva` float(20,2) NOT NULL default '0.00',
`dure` varchar(255) NOT NULL,
`lieu` varchar(60) default NULL,
`type` varchar(255) default NULL,
PRIMARY KEY (`id_projet`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

quand je fais mon post je récupère qui sont celle-ci:
$num = isset($_POST['nom_resp'])?$_POST['nom_resp']:"";
$designation = isset($_POST['designationprojet'])?$_POST['designationprojet']:"";
$statusprojet = isset($_POST['statusprojet'])?$_POST['statusprojet']:"";
$conditions = isset($_POST['conditions'])?$_POST['conditions']:"";
$datefacturation = isset($_POST['datefacturation'])?$_POST['datefacturation']:"";
$id_projet = isset($_POST['id_projet'])?$_POST['id_projet']:"";
$article = isset($_POST['article_num'])?$_POST['article_num']:"";
$dev_num = isset($_POST['num_devis'])?$_POST['num_devis']:"";
$dure = isset($_POST['dure'])?$_POST['dure']:"";

et quand je fais mon update:
$sql = "UPDATE projet ( nom_resp, dure ) VALUES ( '$num', '$dure' ) WHERE id_projet = '$dev_num'";

mysql_query($sql) or die("Erreur mise à jour du projet<br/>$sql<br/>".mysql_error());

rien ne s'enregistre dans la base. Je ne comprends pas pourquoi. Avez vous une idée?

Merci

--

window XP
Configuration: Windows XP
Firefox 2.0.0.16

12 réponses

  1. Bonjour

    Fais un echo htmlentites($sql); pour voir quelle requête est vraiment exécutée
    0
    1. bien sûr !
      la syntaxe en mysql (comme indiqué dans le manuel mysql. L'as-tu lu avant de poster ici ?) est :
      UPDATE projet SET nom_resp='jacque', dure='6 jours' WHERE id_projet=22


      au passage, utilise mysql_real_escape_string, ça t'évitera des petits ennuis si les gens mettent des apostrophes (ou autres caractères bizarres) dans leur nom
      0
      1. Il ne s'agit pas d'essayer des syntaxes au hasard pour voir !
        Tu n'as sûrement plus la même erreur. Le message a forcément changé. Peux-tu indiquer le nouveau ?
        as-tu remis les apostrophes que je n'avais pas recopiées autour de '22' ?
        0
        1. Ouh la la ! qu'est ce c'est que tous ces backslashes ?
          N'aurais-tu pas utilisé du "addslashes" ou "mysql_real_escape_string" sans avoir bien compris leur rôle - donc leur utilisation ? Si c'est le cas, commence par les supprimer, et si après ça marche n'en déduit surtout pas que ces fonctions sont inutiles.
          0
          1. de plus, il y a une parenthèse qui traîne
            0
            1. Tu peux 'découper' la date à l'aide de la fonction substr et recoller les morceaux dans le bon ordre. Il y a sûrement mieux, mais personnellement c'est comme ça que je fais
              0
              1. Merci à vous tout est rentré dans l'ordre.
                0
            2. Dans mon post je récupère cela :
              nom_resp = jacque
              datefacturation = 15-09-2008
              dure = 6 jours
              num_devis = 22
              -1
              1. quel est l erreur du die qu il te donne
                -1
                1. l'erreur est la suivante:

                  Erreur mise à jour du projet
                  UPDATE projet ( nom_resp, dure ) VALUES ( 'jacque', '6 jours' ) WHERE id_projet = '22'
                  Erreur de syntaxe pr�s de '( nom_resp, dure ) VALUES ( 'jacque', '6 jours' ) WHERE id_p' � la ligne 1

                  -1
                  1. Même en mettant cette syntaxe:

                    UPDATE projet SET nom_resp='jacque', dure='6 jours' WHERE id_projet=22

                    j'ai la même erreur.
                    -1
                    1. Cette syntaxe c'est celle que j'ai mise au départ puis que j'ai modifié car elle ne fonctionnait pas.

                      Erreur:

                      Erreur mise à jour du projet
                      UPDATE projet SET nom_resp=\'jacque\', dure=\'6 jours\' ) WHERE id_projet = \'22\'
                      Erreur de syntaxe pr�s de '\'jacque\', dure=\'6 jours\' ) WHERE id_projet = \'22\'' � la ligne 1
                      -1
                      1. A je sais ce qui coince mais je ne sais pas comment le transformer. Dans la récupération de post j'ai datefacturation qui est de cette forme = jj-mm-aaaa alors que l'injection dans la bd doit se faire par =aaaa-mm-jj.
                        Comment je peut le transformer car des que je retire l'update de la datefacturation tout s'enregistre.
                        -1