message d'erreur inconnu

message d'erreur inconnu - PHP - Programmation

Marsh Posté le 14-02-2006 à 10:05:33    

Salut à tous!!
 
Voilà j'ai un message d'erreur sur des requetes sql, qui sont très longues.
 
j'ai mis or die (mysql_error()); à la fin de chaque requete. sinon ça ne m'affichait pas d'erreur.
 
voici ce que j'ai :  
 
"Column count doesn't match value count at row1"
 
c'est la première fois que je suis confronté à ce message.
quelqu'un peut-il m'expliquer ce que ça veut dire?
 
 
merci !!
 

Reply

Marsh Posté le 14-02-2006 à 10:05:33   

Reply

Marsh Posté le 14-02-2006 à 10:19:52    

a vue de nez je dirais que tu fais un select soit pour alimenter les valeurs d'un update ou d'un insert.
Et la tu n'as pas le bon nombre de colonnes dans ton select.

Reply

Marsh Posté le 14-02-2006 à 10:28:19    

j'ai bel et bien fait un select pour alimenter un insert.
je vais regarder le nombre de colonnes dans mon select merci!!

Reply

Marsh Posté le 14-02-2006 à 10:50:10    

anapajari a écrit :

a vue de nez je dirais que tu fais un select soit pour alimenter les valeurs d'un update ou d'un insert.
Et la tu n'as pas le bon nombre de colonnes dans ton select.


 
j'ai vérifié j'ai bien 98 champs à remplir, et 98 donnees qui le remplissent, à partir d'un select *.
donc il ya un problème persistant et je vois vraiment pas d'où ça vient.
 
ma table tp_1 fait 98 champs et ma table tp_historique en fait 99. Le seul champ supplémentaire est une date d'intégration qui n'est pas encore réalisée niveau php (juste un get date).
en fait tp_historique n'est juste qu'une copie de tp_fdv1 avec un champs supplémentaire, celui de la date. ma requete sql a peut-être moyen d'être simplifiée?  
 
je sais que c'est la requete 3 qui foire (apparemment car quand je lui vire le die mysql il n'y a plus d'erreur)
pouvez m'aider sur ce coup svp?
voici mon code :  

Code :
  1. <?
  2. mysql_connect("localhost", "root", "" );
  3. mysql_select_db("carte_demarchage" );
  4. //identifiant prédéterminé (normalement un $_POST mais bon c'est une page de test
  5. //selectionne l'identifiant de la table historisation
  6. $requete1 = mysql_query ('SELECT * FROM tp_fdv1')or die(mysql_error());
  7. //les identifiants sont mis en tableau pour la table historisation (fdv)  
  8. while ($donnees1 = mysql_fetch_array ($requete1))
  9. {
  10. //selectionne les identifiants de la table édition
  11. $requete0 = mysql_query ('SELECT * FROM tp_edition')or die(mysql_error());
  12. while ($donnees0 = mysql_fetch_array ($requete0))//while1 : boucle array table edition
  13. { //si l'identifiant de la table historisation(fdv)  est = à identifiant table edition
  14. if ($donnees0['Identifiant']==$donnees1['Identifiant'])
  15. {//$requete= mysql_query ('SELECT * FROM tablehistorisation');
  16. //$donnees = mysql_fetch_array($requete); //while2 array des donnes table historisation (fdv)
  17. //jusque là tout va bien
  18. //insere dans la table historique les donnees qui proviennent de la table historisation(fdv)  
  19. //requete 3 pb VALUES à completer depuis dateenvoicoliss
  20. $requete3= mysql_query ("INSERT INTO tp_historique (id, CodeRemettant, LibRemettant, CodeCRDec, LibCRDec, CodeAction, Identifiant, NumeroDemarcheur, NomNaissance, NomUsuel, Prenom, Sexe, DEX, LibDEX, CS, Lib_CS, Ligne1_CS, Ligne2_CS, CP_CS, Localite_CS, Pays_CS, GP, LibGP, DPT, LibDPT, Entite, LibEntite, Ligne1, Ligne2, CodePostal, Localite, Pays_Adresse, NatureOperations, DenominationSociale, Ligne1_PM, Ligne2_PM, CodePostal_PM, Localite_PM, Pays_PM, DateExpiration, CodeFonction, LibFonction, NomRTB, PrenomRTB, Ligne1adrRTB, Ligne2adrRTB, Ligne3adrRTB, DateTraitement, DateEditCarte, NumeroLR, DateEnvoiLR, EnvoiEnAR, DateEnvoiAR, DateRetAR, NumeroColiss, DateEnvoiColiss, DateRemiseColiss, DateRetDeclaHonneur, DateRetBordereauRemise, RemiseCarte, DatePrevRemiseCarte, NumCarteRetour, DateRetCarte, MotifNonRemise, MotifAutre, AbsenceMoins2Mois, AbsencePlus2Mois, Commentaire, DateIntegr, DatePublipostage, DateRelance, DateRepriseActivite, DateCartePerdue, DateDestructionCarte, DateEnvoiDemandeRetrait, CartePresente, VendeurSorti, DateSortiePerimetre, DateRenvoiBordereau, DateRetour2Bordereau, DateReclamCarte, DateRenvoiCarte, DateRemiseCarte, MotifBordIncorrect, DateRenvoiDeclaHonneur, MotifDeclaHonneurIncorrect, DateRetour2DeclaHonneur, DateRetourDemRetrait, MotifDemRetraitIncorrect, DateRenvoiDemRetrait, DateRenvoi2DemRetrait, DateRetour2DemRetrait, DateRetourBordRetrait, DateRenvoiBordRetrait, MotifBordRetraitIncorrect, MotifBordRetrait, MotifAutreBordRetrait, DateRet2BordRetrait) VALUES('', '".$donnees1['CodeRemettant']."', '".$donnees1['LibRemettant']."', '".$donnees1['CodeCRDec']."', '".$donnees1['LibCRDec']."', '".$donnees1['CodeAction']."', '".$donnees1['Identifiant']."', '".$donnees1['NumeroDemarcheur']."', '".$donnees1['NomNaissance']."', '".$donnees1['NomUsuel']."', '".$donnees1['Prenom']."',  '".$donnees1['Sexe']."', '".$donnees1['DEX']."', '".$donnees1['LibDEX']."', '".$donnees1['CS']."', '".$donnees1['Lib_CS']."', '".$donnees1['Ligne1_CS']."', '".$donnees1['Ligne2_CS']."', '".$donnees1['CP_CS']."', '".$donnees1['Localite_CS']."', '".$donnees1['Pays_CS']."', '".$donnees1['GP']."', '".$donnees1['LibGP']."', '".$donnees1['DPT']."', '".$donnees1['LibDPT']."', '".$donnees1['Entite']."', '".$donnees1['LibEntite']."', '".$donnees1['Ligne1']."', '".$donnees1['Ligne2']."', '".$donnees1['CodePostal']."', '".$donnees1['Localite']."', '".$donnees1['Pays_Adresse']."', '".$donnees1['NatureOperations']."', '".$donnees1['DenominationSociale']."', '".$donnees1['Ligne1_PM']."', '".$donnees1['Ligne2_PM']."', '".$donnees1['CodePostal_PM']."', '".$donnees1['Localite_PM']."', '".$donnees1['Pays_PM']."', '".$donnees1['DateExpiration']."', '".$donnees1['CodeFonction']."', '".$donnees1['LibFonction']."', '".$donnees1['NomRTB']."', '".$donnees1['PrenomRTB']."', '".$donnees1['Ligne1adrRTB']."', '".$donnees1['Ligne2adrRTB']."', '".$donnees1['Ligne3adrRTB']."', '".$donnees1['DateTraitement']."', '".$donnees1['DateEditCarte']."', '".$donnees1['NumeroLR']."', '".$donnees1['DateEnvoiLR']."', '".$donnees1['EnvoiEnAR']."', '".$donnees1['DateEnvoiAR']."', '".$donnees1['DateRetAR']."', '".$donnees1['NumeroColiss']."', '".$donnees1['DateEnvoiColiss']."', '".$donnees1['DateRemiseColiss']."', '".$donnees1['DateRetDeclaHonneur']."', '".$donnees1['DateRetBordereauRemise']."', '".$donnees1['RemiseCarte']."', '".$donnees1['DatePrevRemiseCarte']."', '".$donnees1['NumCarteRetour']."', '".$donnees1['DateRetCarte']."', '".$donnees1['MotifNonRemise']."', '".$donnees1['MotifAutre']."', '".$donnees1['AbsenceMoins2Mois']."', '".$donnees1['AbsencePlus2Mois']."', '".$donnees1['Commentaire']."', '".$donnees1['DateIntegr']."', '".$donnees1['DatePublipostage']."', '".$donnees1['DateRelance']."', '".$donnees1['DateRepriseActivite']."', '".$donnees1['DateCartePerdue']."', '".$donnees1['DateDestructionCarte']."', '".$donnees1['DateEnvoiDemandeRetrait']."', '".$donnees1['CartePresente']."', '".$donnees1['VendeurSorti']."', '".$donnees1['DateSortiePerimetre']."', '".$donnees1['DateSortiePerimetre']."', '".$donnees1['DateRenvoiBordereau']."', '".$donnees1['DateRetour2Bordereau']."', '".$donnees1['DateReclamCarte']."', '".$donnees1['DateRenvoiCarte']."', '".$donnees1['DateRemiseCarte']."', '".$donnees1['MotifBordIncorrect']."', '".$donnees1['DateRenvoiDeclaHonneur']."', '".$donnees1['MotifDeclaHonneurIncorrect']."', '".$donnees1['DateRetour2DeclaHonneur']."', '".$donnees1['DateRetourDemRetrait']."', '".$donnees1['MotifDemRetraitIncorrect']."', '".$donnees1['DateRenvoiDemRetrait']."', '".$donnees1['DateRenvoi2DemRetrait']."', '".$donnees1['DateRetour2DemRetrait']."', '".$donnees1['DateRetourBordRetrait']."', '".$donnees1['DateRenvoiBordRetrait']."', '".$donnees1['MotifBordRetraitIncorrect']."', '".$donnees1['MotifBordRetrait']."', '".$donnees1['MotifAutreBordRetrait']."', '".$donnees1['DateRet2BordRetrait']."')" )or die(mysql_error());
  21. //MARCHE PAS : met à jour les données de la table historisation(fdv) avec les donnees de la table edition pour l'identifiant =celui de la table fdv et edition  
  22. //supprime tout de tp_fdv1 pour l'identifiant sélectionné.
  23. $requete4= mysql_query ('DELETE * FROM tp_fdv1 WHERE Identifiant="'.$donnees0['Identifiant'].'"');
  24. //met à jour les données dans la table fdv1 pour l'identifiant d'intérêt
  25. $requete5= mysql_query ("INSERT INTO tp_fdv1 (CodeRemettant, LibRemettant, CodeCRDec, LibCRDec, CodeAction, Identifiant, NumeroDemarcheur, NomNaissance, NomUsuel, Prenom, Sexe, DEX, LibDEX, CS, Lib_CS, Ligne1_CS, Ligne2_CS, CP_CS, Localite_CS, Pays_CS, GP, LibGP, DPT, LibDPT, Entite, LibEntite, Ligne1, Ligne2, CodePostal, Localite, Pays_Adresse, NatureOperations, DenominationSociale, Ligne1_PM, Ligne2_PM, CodePostal_PM, Localite_PM, Pays_PM, DateExpiration, CodeFonction, LibFonction, NomRTB, PrenomRTB, Ligne1adrRTB, Ligne2adrRTB, Ligne3adrRTB, DateTraitement, DateEditCarte, NumeroLR, DateEnvoiLR, EnvoiEnAR, DateEnvoiAR, DateRetAR, NumeroColiss, DateEnvoiColiss) VALUES( '".$donnees0['CodeRemettant']."', '".$donnees0['LibRemettant']."', '".$donnees0['CodeCRDec']."', '".$donnees0['LibCRDec']."', '".$donnees0['CodeAction']."', '".$donnees0['Identifiant']."', '".$donnees0['NumeroDemarcheur']."', '".$donnees0['NomNaissance']."', '".$donnees0['NomUsuel']."', '".$donnees0['Prenom']."',  '".$donnees0['Sexe']."', '".$donnees0['DEX']."', '".$donnees0['LibDEX']."', '".$donnees0['CS']."', '".$donnees0['Lib_CS']."', '".$donnees0['Ligne1_CS']."', '".$donnees0['Ligne2_CS']."', '".$donnees1['CP_CS']."', '".$donnees0['Localite_CS']."', '".$donnees0['Pays_CS']."', '".$donnees0['GP']."', '".$donnees0['LibGP']."', '".$donnees0['DPT']."', '".$donnees0['LibDPT']."', '".$donnees0['Entite']."', '".$donnees0['LibEntite']."', '".$donnees0['Ligne1']."', '".$donnees0['Ligne2']."', '".$donnees0['CodePostal']."', '".$donnees0['Localite']."', '".$donnees0['Pays_Adresse']."', '".$donnees0['NatureOperations']."', '".$donnees0['DenominationSociale']."', '".$donnees0['Ligne1_PM']."', '".$donnees0['Ligne2_PM']."', '".$donnees0['CodePostal_PM']."', '".$donnees0['Localite_PM']."', '".$donnees0['Pays_PM']."', '".$donnees0['DateExpiration']."', '".$donnees0['CodeFonction']."', '".$donnees0['LibFonction']."', '".$donnees0['NomRTB']."', '".$donnees0['PrenomRTB']."', '".$donnees0['Ligne1adrRTB']."', '".$donnees0['Ligne2adrRTB']."', '".$donnees0['Ligne3adrRTB']."', '".$donnees0['DateTraitement']."', '".$donnees0['DateEditCarte']."', '".$donnees0['NumeroLR']."', '".$donnees0['DateEnvoiLR']."', '".$donnees0['EnvoiEnAR']."', '".$donnees0['DateEnvoiAR']."', '".$donnees0['DateRetAR']."', '".$donnees0['NumeroColiss']."', '".$donnees0['DateEnvoiColiss']."' ) " ) or die(mysql_error());
  26. }//while1
  27. }//if
  28. }//while2
  29. mysql_close();
  30. //penser à partir de la table fdv1 pour créer la tp edition et supprimer les champs inutiles...OK
  31. //traitement de la requete 4 : mettre à jour complètement les données (100 champs vides ou ceux qui restaient? à mon avis les vider.) donc : passer de update à delete et insert into tp_fdv1, plus rapide plutôt que spécifier les champs nuls.
  32. ?>


Message édité par flock86 le 14-02-2006 à 10:52:26
Reply

Marsh Posté le 14-02-2006 à 11:07:17    

C'est vraiment améliorable ton truc :o
 
j'ai un peu la flemme de tout regarder mais a vue de nez je ferais un truc dans le genre:

Code :
  1. $requete0 = mysql_query ('SELECT * FROM tp_edition')or die(mysql_error());
  2. while ($donnees0 = mysql_fetch_array ($requete0)){
  3.  $requete3= mysql_query("INSERT INTO tp_historique ( ... tous tes champs dans le bon ordre + la date ) select *, current date from tp_edition where Identifiant=".$donnees0['Identifiant']);
  4. ...
  5. }


Et tu fais pareil pour ta deuxieme requête!

Reply

Marsh Posté le 14-02-2006 à 11:10:53    

Mon dieu cette table.[:pingouino]
Si tu rentres tous les champs, pas besoin de tous les nommer, ce sera plus lisible.
bref, refais le compte, tu dois avoir spécifié plus de champs que tu ne donnes de valeurs, ou l'inverse.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 14-02-2006 à 11:22:47    

lol moi aussi je trouve que cette table est affreuse!!  
apparemment après 4 comptages j'ai 99 données pour 98 champs....
j'ai plus qu'à retrouver le  mauvais...
rhaaaaaa
un c'est pas drole d'être une bille, mais quand faut bosser sur ce genre de table...c'est un vrai cauchemar!!!
 
merci beaucoup de m'avoir filé une méthode plus propre. je connaissait pas "current".
bon ben j'ai plus qu'à recompter et vérifier les noms....
lol

Reply

Marsh Posté le 14-02-2006 à 11:50:43    

Dit moi, t'es sur que l'organisation de tes tables est bien conçu?
Avec plusieurs adresses dans ta table, des infos d'historique de paiment, l'identité de la personne, des informations relatives à un publipostage .... ca me semble être un bon gros bordel tout ça.
 
Ca serait surement mieux et surtout plus simple si tu faisais :
une table envoie,  
une table adresse,  
une table paiement/remboursement
une table personne  
...

Message cité 1 fois
Message édité par omega2 le 14-02-2006 à 11:51:17
Reply

Marsh Posté le 14-02-2006 à 12:00:35    

omega2 a écrit :

Dit moi, t'es sur que l'organisation de tes tables est bien conçu?
Avec plusieurs adresses dans ta table, des infos d'historique de paiment, l'identité de la personne, des informations relatives à un publipostage .... ca me semble être un bon gros bordel tout ça.
 
Ca serait surement mieux et surtout plus simple si tu faisais :
une table envoie,  
une table adresse,  
une table paiement/remboursement
une table personne  
...


 
Huum perso a vu de nez je dirais que c'est pour un système d'édition/génération de document et que le système doit être capable de ressortir l'état avec les données telles qu'elles étaient au moment de la dernière edition.
Alors il doit bien y avoir les 4 tables dont tu parles, mais ils stockent quand même un "photo" des données dans le gros bouzin au moment de l'édition.

Reply

Marsh Posté le 14-02-2006 à 12:27:07    

voili voilou anapajari t'as tout compris
 
perso pour l'organisation de cette table...j'y suis pas pour grand chose...
ça bouge tout le temps, y'a pas de cahier des charges...bref...c'est le m..dier.
vivement la fin de ce cauchemar!!


Message édité par flock86 le 14-02-2006 à 12:29:32
Reply

Marsh Posté le 14-02-2006 à 12:27:07   

Reply

Marsh Posté le 14-02-2006 à 12:37:01    

Premiére fois que je rencontre l'utilisation d'une table sql pour une telle raison.
C'est vrai que dans un tel cas, une telle "organisation" se comprend.
 
 
Pour répondre à la question, la requette d'anapajari est trés bien mais si les deux tables ont les champs dans le même ordre et que le nouveau champs est à la fin, alors il n'y a pas besoin de nomer les 99 colones de la table tp_fdv1 ce qui simplifie encore plus.

Reply

Marsh Posté le 14-02-2006 à 13:16:40    

omega2 a écrit :

Premiére fois que je rencontre l'utilisation d'une table sql pour une telle raison.
C'est vrai que dans un tel cas, une telle "organisation" se comprend.


C'est que t'as jamais eu l'occasion de bosser sur un projet bien foireux ;)
J'ai vu ça sur un projet où la ged avait été oublié dès le debut. Donc pas d'archivage des documents générés. Et là le client qui sort: "Comment je fais pour re-générer mon edition de il y a 6 mois"...réponse:"Vous pouvez pas mais on va vous créer une ged, pour XXX K€" ... "Ah non s'trop cher!"  et l'idée de génie du cp/commercial/incompétent: "Et bin on va créé une table et on mettra tout dedans!!!"
 

omega2 a écrit :


Pour répondre à la question, la requette d'anapajari est trés bien mais si les deux tables ont les champs dans le même ordre et que le nouveau champs est à la fin, alors il n'y a pas besoin de nomer les 99 colones de la table tp_fdv1 ce qui simplifie encore plus.


tout a fait  :jap:


Message édité par anapajari le 14-02-2006 à 13:17:31
Reply

Marsh Posté le 14-02-2006 à 16:31:55    

MERCI pour vos conseils!!
je m'en suis tiré
tchao!!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed