Update mysql / php

Bonjour,

J'execute une requete update via php. L'ensemble des champs se met a jour sauf 4.
Je ne sais pas pourquoi.
Lorsque j'affiche ma requete dans mon code php et copie/colle dans mon myphpadmin ca marche.

Mais pas via la commande php.

Merci de votre aide.
Configuration: Windows XP Internet Explorer 6.0

6 réponses

  1. Bonjour

    Quand tous le champs se mettent à jour sauf 4, c'est généralement que le programmeur est taureau ascendant scorpion.
    Sérieusement, comment veux-tu qu'on devine sans aucun autre élément ? Donne le morceau de ton programme qui fait cette mise à jour
    1. Oui Taureau c'est exactement ca :-)

      voila ma requete
      $sql = "UPDATE clients SET
      nom = '".$tosave['nom']."',
      adr1 = '".$tosave['adr1']."',
      adr2 = '".$tosave['adr2']."',
      adr3 = '".$tosave['adr3']."',
      zipcode = '".$tosave['zipcode']."',
      ville = '".$tosave['ville']."',
      contact = '".$tosave['contact']."',
      tel = '".$tosave['tel']."',
      codeagence = '".$tosave['codeagence']."',
      codeagenceD = '".$tosave['codeagenceD']."',
      codeagenceF = '".$tosave['codeagenceF']."',
      codeagenceA = '".$tosave['codeagenceA']."'
      coderoute = '".$tosave['coderoute']."',
      ucti = '".$tosave['ucti']."',
      contactcim = '".$tosave['contactcim']."',
      contactcog = '".$tosave['contactcog']."',
      com = '".$tosave['com']."',
      retourinfos = '".$tosave['retourinfos']."',
      imprimante = '".$tosave['imprimante']."',
      reseaux = '".$tosave['reseaux']."',
      import = '".$tosave['import']."',
      siret = '".$tosave['siret']."',
      codepartner = '".$tosave['codepartner']."',
      regroupement = '".$tosave['regroupement']."',
      remarques = '".$tosave['remarques']."',
      contact2 = '".$tosave['contact2']."',
      telcontact2 = '".$tosave['telcontact2']."',
      emailcontact2 = '".$tosave['emailcontact2']."',
      contactcom = '".$tosave['contactcom']."',
      telcontactcom = '".$tosave['telcontactcom']."',
      emailcontactcom = '".$tosave['emailcontactcom']."',
      emailcontactcim = '".$tosave['emailcontactcim']."',
      emailcontactcog = '".$tosave['emailcontactcog']."',
      cutofftime = '".$tosave['cutofftime']."',
      ebooking = '".$tosave['ebooking']."',
      scanner = '".$tosave['scanner']."',
      tarifs = '".$tosave['tarifs']."',
      balance = '".$tosave['balance']."',
      pcclient = '".$tosave['pcclient']."',
      midday = '".$tosave['midday']."',
      nbpostes = '".$tosave['nbpostes']."',
      unom = '".$tosave['unom']."',
      utel = '".$tosave['utel']."',
      uemail = '".$tosave['uemail']."',
      trackinghisto = '".$tosave['trackinghisto']."',
      trackingemail = '".$tosave['trackingemail']."',
      gestionref = '".$tosave['gestionref']."',
      idsecurise = '".$tosave['idsecurise']."',
      pumultisites = '".$tosave['pumultisites']."',
      manauto = '".$tosave['manauto']."',
      divers = '".$tosave['divers']."',
      contactemail = '".$tosave['contactemail']."',
      termanager = '".$tosave['termanager']."',
      respvente = '".$tosave['respvente']."',
      fichieras2 = '".$tosave['fichierAS2']."',
      priorite = '".$tosave['priorite']."',
      ftpserveur = '".$tosave['ftpserveur']."',
      ftplogin= '".$tosave['ftplogin']."',
      ftppassword= '".$tosave['ftppassword']."',
      ftpdirectory= '".$tosave['ftpdirectory']."',
      pdt= '".$tosave['pdt']."',
      formatEDI= '".$tosave['formatEDI']."',
      label= '".$tosave['label']."',
      documentation= '".$tosave['documentation']."',
      remarquesEDI= '".$tosave['remarquesEDI']."',
      marque1= '".$tosave['marque1']."',
      numserie1= '".$tosave['numserie1']."',
      numinventaire1= '".$tosave['numinventaire1']."',
      remarques1= '".$tosave['remarques1']."',
      marque2= '".$tosave['marque2']."',
      numserie2= '".$tosave['numserie2']."',
      numinventaire2= '".$tosave['numinventaire2']."',
      remarques2= '".$tosave['remarques2']."',
      marque3= '".$tosave['marque3']."',
      numserie3= '".$tosave['numserie3']."',
      numinventaire3= '".$tosave['numinventaire3']."',
      remarques3= '".$tosave['remarques3']."',
      marqueb= '".$tosave['marqueb']."',
      numserieb= '".$tosave['numserieb']."',
      numinventaireb= '".$tosave['numinventaireb']."',
      remarquesb= '".$tosave['remarquesb']."',
      marqued= '".$tosave['marqued']."',
      numseried= '".$tosave['numseried']."',
      numinventaired= '".$tosave['numinventaired']."',
      remarquesd= '".$tosave['remarquesd']."',
      marquea= '".$tosave['marquea']."',
      numseriea= '".$tosave['numseriea']."',
      numinventairea= '".$tosave['numinventairea']."',
      remarquesa= '".$tosave['remarquesa']."',
      marquet= '".$tosave['marquet']."',
      numseriet= '".$tosave['numseriet']."',
      numinventairet= '".$tosave['numinventairet']."',
      remarquest= '".$tosave['remarquest']."',
      datemodif= '".$tosave['datemodif']."',
      dtcreation= '".$tosave['dtcreation']."',
      dtfinparam= '".$tosave['dtfinparam']."',
      dtinstall= '".$tosave['dtinstall']."',
      statut= '".$tosave['statut']."'
      WHERE clients.id ='".$tosave['id']."'" ;

      // on envoie la requête
      //echo $sql;
      $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
      if (!$req) {
      $message = 'Erreur'; //. mysql_error() . "\n";
      echo $message;
      }

      Les champs codeagence;codeagenceD,codeagenceF,codeagenceA ne sont pas mis a jour.
      Les valeurs $data['codeagence'] ... renvoient bien une valeur a l'affichage.

      Merci
  2. Les valeurs $data['codeagence'] ... renvoient bien une valeur a l'affichage
    Très heureux de le savoir. Mais dans ta requête, c'est $tosave que tu utilises, pas $data.

    Peux-tu dé-commenter le echo $sql et recopier ici un exemple de la requête obtenue (en évitant les données confidentielles bien sûr) ?

    D'autre part, ton if (!$req) {
    $message = 'Erreur'; //. mysql_error() . "\n";
    echo $message;
    est totalement inutile. Si tu as une erreur, le "or die..." après le mysql_query t'aura fait quitter le script avant.
    1. Oui pardon c'est bien echo $tosave['codeagence'] qui affiche bien la valeur.

      voila le resultat du echo de la requete :

      UPDATE clients SET nom = 'LYNE', adr1 = 'lyne', adr2 = 'lyne', adr3 = 'lyne', zipcode = 'lyne', ville = 'lyne', contact = 'lyne', tel = 'lyne', codeagence = 'BOD', codeagenceD = '290', codeagenceF = '', codeagenceA = '', coderoute = 'lyne', ucti = 'lyne', contactcim = 'RENOULT', contactcog = 'lyne', com = 'FTP', retourinfos = 'OUI', imprimante = 'A4', reseaux = 'NON', import = 'SAISIE', siret = 'lyne', codepartner = 'lyne', regroupement = 'OUI', remarques = 'lyne', contact2 = 'lyne', telcontact2 = 'lyne', emailcontact2 = 'lyne', contactcom = 'lyne', telcontactcom = '', emailcontactcom = 'lyne', emailcontactcim = 'lyne', emailcontactcog = 'lyne', cutofftime = 'lyne', ebooking = 'OUI', scanner = 'NON', tarifs = 'OUI', balance = 'OUI', pcclient = 'OUI', midday = 'OUI', nbpostes = '1', unom = '', utel = '', uemail = '', trackinghisto = '', trackingemail = '', gestionref = '', idsecurise = '', pumultisites = '', manauto = '', divers = '', contactemail = 'lyne', termanager = 'lyne', respvente = 'lyne', fichieras2 = 'lyne', priorite = 'R5', ftpserveur = '', ftplogin= '', ftppassword= '', ftpdirectory= '', pdt= '', formatEDI= '', label= '', documentation= '', remarquesEDI= '', marque1= 'lyne', numserie1= 'lynee', numinventaire1= 'lyne', remarques1= 'lyne', marque2= '', numserie2= '', numinventaire2= '', remarques2= '', marque3= '', numserie3= '', numinventaire3= '', remarques3= '', marqueb= 'lyne', numserieb= 'lyne', numinventaireb= 'lyne', remarquesb= 'lyne', marqued= '', numseried= '', numinventaired= '', remarquesd= '', marquea= 'lyne', numseriea= 'lyne', numinventairea= 'lyne', remarquesa= 'lyne', marquet= '', numseriet= '', numinventairet= '', remarquest= '', datemodif= '2009-11-30', dtcreation= '', dtfinparam= '0000-00-00', dtinstall= '0000-00-00', statut= 'modif' WHERE clients.id ='22263'
  3. Cette ligne met bien à jour les champs codeagence, codeagenceD, codeagenceF et codeagenceA. Tu auras beaucoup de mal à me faire avaler le contraire.
    Comment vérifies-tu le contenu de ces champs avant et après la requête ? Avec phpmyadmin ou avec un script ?
    1. Je verifie de 2 facons.

      je recharge une page qui affiche l'ensemble des données. et dans phpadmin je regarde le contenu de la table juste apres l'execution de l'update.
  4. Tu peux affirmer que tous les champs sauf ces 4 sont bien mis à jour ? C'est à dire que tu as bien vérifié leurs valeurs avant ET après ? Ou au moins les champs immédiatement précédent (tel) et suivant (coderoute) ?
    C'est vrai que je n'ai pas l'expérience de la mise à jour simultanée d'une petite centaine de champs, mais j'ai vraiment du mal à imaginer un bug de mysql sur un simple UPDATE.
    Y a-t-il des apostrophes dans les valeurs que tu essayes de mettre à jour - ou peut-il y en avoir ?
    1. Normalement pas d'apostrophe seulement 3 Lettres les valeurs sont prises depuis une liste deroulante.
      J'ai fait l'essai egalement avec un update uniquement sur ces 4 champs et meme probleme...
  5. Ta table clients, elle a bien une définition ? Sans la donner toute, peux-tu donner la définition des 4 champs en question ?
    Peux-tu essayer
    UPDATE clients SET nom = 'machin', codeagence = 'ABC' WHERE clients.id ='22263'
    pour vérifier que dans la même requête, nom est mis à jour et pas codeagence ?