Update mysql / php

lyne -  
 le père -
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. le père
     
    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
    0
    1. lyne
       
      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
      0
  2. le père
     
    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.
    0
    1. lyne
       
      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'
      0
  3. le père
     
    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 ?
    0
    1. lyne
       
      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.
      0
  4. le père
     
    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 ?
    0
    1. lyne
       
      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...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. le père
     
    Comment sont définis ces champs ?
    0
    1. lyne
       
      c'est a dire ?
      0
  7. le père
     
    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 ?
    0