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. 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
    1. Merci à vous tout est rentré dans l'ordre.
  2. 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. 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.
      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. 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' ?
          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. 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
              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. Bonjour

                  Fais un echo htmlentites($sql); pour voir quelle requête est vraiment exécutée
                  1. Dans mon post je récupère cela :
                    nom_resp = jacque
                    datefacturation = 15-09-2008
                    dure = 6 jours
                    num_devis = 22