Requete ne retournant aucune erreur mais pas executée ???!!!!

Requete ne retournant aucune erreur mais pas executée ???!!!! - PHP - Programmation

Marsh Posté le 09-01-2007 à 18:48:31    

Bonsoir...
cela fais quelque heures que je me creuse la tete sur un truc...  
voici la source de mon problème :  
 

Code :
  1. $inseng='INSERT INTO engager(iddossier,iddec) VALUES ("'.$iddossier[0].'","'.$iddec[0].'" )';
  2. mysql_query($inseng) or die ("Erreur Insertion Engager ".$inseng);


 
rien de plus basic me direz vous...
j'execute ma page et la stupeur : aucun problème, aucun retour... coup d'oeil dans ma base et la stupeur : la table engager est vide !
je fais un echo de ma requete, je copie colle le resultat dans l'executeur de requete de phpmyadmin : aucun souci, sa passe l'enregistrement est effectif...
que se passe t'il ?  
 
Merci !

Reply

Marsh Posté le 09-01-2007 à 18:48:31   

Reply

Marsh Posté le 09-01-2007 à 19:05:46    

T'es pas connecté sur la bonne BD, je sais pas ? [:dawa]
 
Sinon fais un mysql_insert_id juste après la requête pour voir.

Reply

Marsh Posté le 09-01-2007 à 19:16:20    

je fais 4 insert avant et ca passe nickel...
 
j'comprend rien.
 
 
voila le code complet :  
 

Code :
  1. // 1 CREATION DE DECISIONNAIRE
  2. mysql_query("LOCK TABLES decisionnaire WRITE" );
  3. mysql_query("SET AUTOCOMMIT = 0" );
  4. $insdec="INSERT INTO decisionnaire (iddecisionnaire,nomdecisionnaire,prenomdecisionnaire,datenaissdecisionnaire,teldecisionnaire,idcat1) VALUES ('','".$_POST['nomdec']."','".$_POST['predec']."','".$ddndec."','".$_POST['teldec']."','".$_POST['fonction']."')";
  5. mysql_query($insdec) or die ("Erreur Insertion Decisionnaire ".$insdec);
  6. $iddec = mysql_query("SELECT LAST_INSERT_ID()" )  or die ("Erreur Recup ID DECISIONNAIRE " );
  7. $iddec = mysql_fetch_array($iddec);
  8. mysql_query("COMMIT" );
  9. mysql_query("UNLOCK TABLES" );
  10. echo "le code decisionnaire est : ".$iddec['0'];
  11. $iddeci=$iddec['0'];
  12. // 2 CREATION ENTREPRISE  
  13. $insentre="INSERT INTO entreprise (n_siret,raison_sociale,denomination_commerciale,adresseentreprise,cpentreprise,villeentreprise,faxentreprise,gsmentreprise,forme_juridique) VALUES ('".$_POST['siret']."','".$_POST['rs']."','".$_POST['dc']."','".$_POST['adressentr']."','".$_POST['cpentre']."','".$_POST['villentr']."','".$_POST['faxentr']."','".$_POST['gsmentr']."','".$_POST['formeJ']."')";
  14. mysql_query($insentre)  or die ("Erreur Insertion Entreprise".$insentre);
  15. // 3.a CREATION DE DOSSIER
  16. mysql_query("LOCK TABLES dossier WRITE" );
  17. mysql_query("SET AUTOCOMMIT = 0" );
  18. $insdoss="INSERT INTO dossier(iddossier,datedebutdossier,datefindossier,comdossier,n_siret,idemploye,typevente,mtmensualite,duree,fml) VALUES ('','".$datedebdossier."','','".$_POST['com']."','".$_POST['siret']."','".$_POST['nomcom']."','".$_POST['rb']."','".$_POST['montant']."','".$_POST['dureemens']."','".$_POST['fml']."')";
  19. mysql_query($insdoss) or die ("Erreur Insertion dossier".$insdoss);
  20. $iddossier = mysql_query("SELECT LAST_INSERT_ID()" );
  21. $iddossier= mysql_fetch_array($iddossier);
  22. mysql_query("COMMIT" );
  23. mysql_query("UNLOCK TABLES" );
  24. $iddos=$iddossier['0'];
  25. // 3.b : RELATION ENGAGER (DOSSIER - DECISIONNAIRE)
  26. sleep(1);
  27. mysql_query("INSERT INTO engager VALUES('".$iddos."','".$iddeci."')" ) or die ("Erreur Insertion Engager ".$inseng);


 
il n'y a que engager qui passe pas pourtant kan j'execute la requete que me ressort le or die, elle passe nickel... c'est a rien coprendre...

Reply

Marsh Posté le 09-01-2007 à 19:21:04    

Il manque pas légèrement un commit ? [:pingouino]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 09-01-2007 à 19:23:40    

ca sert a quoi ? je l'utilise dans les requete précedente car je m'inspirais d'un tuto pour recuperer une clé auto increment...  
 
autrement j'ai toujours fais mes requetes sans faire de commit ...

Reply

Marsh Posté le 09-01-2007 à 19:25:09    

http://dev.mysql.com/doc/refman/5. [...] ommit.html


Message édité par sielfried le 09-01-2007 à 19:25:27
Reply

Marsh Posté le 09-01-2007 à 20:03:16    

merci ! ah les transactions ... j'avais entendu parler de cette notions mais n'ai pas encore eu de cours dessus.
En gros ca permet d'executer un lot de requete, et, si l'une d'elle foire, de tout remettre comme c'était avant l'execution du lot de requete ?
Si c'est ca, ca m'interesserai de savoir comment puis je l'appliquer sur mon  exemple...  
Oui j'ai lu la doc mySql... mais c'est pas forcemment très didactique pour quelqu'un qui ne connait pas le sujet :)

Reply

Marsh Posté le 10-01-2007 à 12:16:13    

tu as essayé ta requête en direct sur ton serveur mysql ? est ce que ta requête est exécutée ?

Reply

Marsh Posté le 10-01-2007 à 12:36:35    

Agmoh a écrit :

je fais un echo de ma requete, je copie colle le resultat dans l'executeur de requete de phpmyadmin : aucun souci, sa passe l'enregistrement est effectif...
que se passe t'il ?


chani_t a écrit :

tu as essayé ta requête en direct sur ton serveur mysql ? est ce que ta requête est exécutée ?


Visiblement oui, et visiblement le probléme est résolut.
 
scarface 2002 > Pour les transaction, c'est assez simple :
- tu ouvres une transaction ( en php, c'est mysqli_autocommit(false) ou la requette "BEGIN" )
- tu executes tes requettes
-si tu détectes une erreur, tu annule la transaction ce qui fait que la base ne tiendra compte de rien ( mysqli_rollback() ou la requette "ROLLBACK" ) ce qui annulera toutes tes requettes ou tu la valides ( mysqli_commit() ou la requette "COMMIT" ) ce qui rendra effectif les changements provoqué par tes requettes.

Reply

Marsh Posté le 10-01-2007 à 14:02:09    

omega2 a écrit :

Visiblement oui, et visiblement le probléme est résolut.
...


 
dans le style j'arrive aprés la bataille.. désolé pour le post :D

Reply

Sujets relatifs:

Leave a Replay

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