POST d'une variable définie dans un formulaire pr insertion ds BD

POST d'une variable définie dans un formulaire pr insertion ds BD - PHP - Programmation

Marsh Posté le 29-05-2006 à 10:37:24    

Bonjour, je débute en PHP et là je bloque sur un POST.
mon formulaire fait réference a un numero démarrant à 5800 dans ma base access.
je le recupère et lui attribue +1 (je ne sais pas mettre un auto_increment sur ma table en partant depuis autre chose que 0) pour l'afficher dans mon formulaire (echo $devis_calcule). Ensuite je voudrais le traiter et l'inserer dans ma base access.
j'ai donc :

Code :
  1. echo "Nouveau numéro de devis généré : D";
  2. $query="SELECT MAX(num_devis) +1 FROM devis";     // requete de selection d'une table
  3. $valeur= odbc_exec( $cnx, $query );               // execute la requete
  4. while( odbc_fetch_row( $valeur ) ) //tant que c pas la fin de la table
  5. $devis_calcule = odbc_result( $valeur, 1 );
  6. //{
  7.    //echo odbc_result( $valeur, 1 );
  8.    echo $devis_calcule;


 
Voici mon fichier add_devis.php qui me plante :

Code :
  1. //DONNEES RECUPEREES de formulaire_add_devis.php
  2. $devis=$_POST['$devis_calcule'];
  3. $designation=$_POST['designation'];
  4. $client=$_POST['client'];
  5. $filiale=$_POST['filiale'];
  6. $createur=$_POST['utilisateurs'];
  7. require ('include/connexion_base.php');
  8. $cnx = odbc_connect( $bd , $user, $password );
  9. if (!$cnx) echo "Impossible de se connecter à la base devis, veuillez contacter l'administrateur";
  10. $today = date (" j m Y" );
  11. $query  = "INSERT INTO devis (num_devis,designation,date,client,filiale,etude)";
  12. $query .= "VALUES ('$devis','$designation','$today','$client','$filiale','$createur') ";
  13. $result = odbc_do ($cnx,$query);
  14. if (!$result)
  15. echo "Ajout impossible";
  16. else
  17. echo "Ajout acceptée";
  18. odbc_close( $cnx);


 
Comme je le disais en intro je débute et je ne vois vraiment pas ou est le pb !
Quelqu'un peut-il me venir en aide urgemment SVP ??
Merci d'avance !!

Reply

Marsh Posté le 29-05-2006 à 10:37:24   

Reply

Marsh Posté le 29-05-2006 à 10:40:22    

et ça plante où ? quand ? comment ?


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 29-05-2006 à 10:42:07    

Je ne comprends pas bien, c'est quoi le problème exactement?
 
Tu veux insérer des nouvelles données aprés le numéro 5800?

Reply

Marsh Posté le 29-05-2006 à 10:47:40    

Pardon si je me suis mal exprimé :
quand je valide mon formulaire, j'ai ces messages d'erreurs :
 
"Notice: Undefined index: $devis_calcule in add_devis.php on line 13
 
Warning: odbc_do(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans l'instruction INSERT INTO., SQL state 37000 in SQLExecDirect in add_devis.php on line 29
Ajout impossible"

Reply

Marsh Posté le 29-05-2006 à 10:49:17    

$devis=$_POST['$devis_calcule'];  :sarcastic:
 
 


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 29-05-2006 à 10:53:31    

merci pour la reponse boulax
 
chuis pas tres bon je sais mais là !
si tu regardes mon formulaire, je fais un echo de cette variable et c'est cette variable que je veux traiter.
en elevant le $ j'obtins ce message (logique) :
Notice: Undefined index: devis_calcule in add_devis.php on line 13


Message édité par snp le 29-05-2006 à 10:53:54
Reply

Marsh Posté le 29-05-2006 à 10:54:58    

Fais voir le formulaire.

Message cité 1 fois
Message édité par sielfried le 29-05-2006 à 10:57:30

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

Marsh Posté le 29-05-2006 à 10:56:10    

t'as pas l'air de comprendre comment fonctionne un formulaire hein ?
 
$_POST['var'] suppose que dans ta page appelante tu as un formulaire en mode POST deja, et qu'ensuite tu aies un input dont le name='var' ce que manifestement n'est pas le cas chez toi.


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 29-05-2006 à 10:58:34    

sielfried a écrit :

Fait voir le formulaire.


 
le formulaire est cité plus haut, le voila en complet :
 

Code :
  1. <body>
  2. <?php
  3.  include('include/Banque.php');
  4.  $banque = new Banque;
  5. ?>
  6. <form method="POST" action="add_devis.php">
  7. <center>
  8. <!--------------------En tête----------------------->
  9. <hr />
  10. <span class="IntraBE3">NOUVEAU DEVIS</span>
  11. <hr />
  12. <!--------------------Fin de l'en tête----------------------->
  13.   <!--------------------Numero de devis récupéré de berennes.mdb/devis/num_devis----------------------->
  14.  
  15.   <br />
  16.   <br />
  17.   <br />
  18.   <u>
  19.   <span class="IntraBE2">
  20.   <?php
  21.  
  22.  
  23.   include('include/connexion_base.php');
  24. echo "Nouveau numéro de devis généré : D";
  25. $query="SELECT MAX(num_devis) +1 FROM devis";     // requete de selection d'une table
  26. $valeur= odbc_exec( $cnx, $query );               // execute la requete
  27. while( odbc_fetch_row( $valeur ) ) //tant que c pas la fin de la table
  28. $devis_calcule = odbc_result( $valeur, 1 );
  29. //{
  30.    //echo odbc_result( $valeur, 1 );
  31.    echo $devis_calcule;
  32.  
  33.    //}
  34.  
  35.     ?>
  36.   </span>  </u>
  37.  
  38.   <br />
  39.   <br />
  40.     <span class="IntraBE2">Désignation :</span>
  41.     <input type="text" name="designation" >
  42.     <br />
  43.     <span class="IntraBE2">Client :</span>
  44.   <input type="text" name="client" >
  45.   <br />
  46.    
  47.    
  48.    
  49.   <!--------------------Filiale----------------------->
  50.     <span class="IntraBE2">Filiale :</span>
  51.   <?php
  52.  
  53. $tabResultat = $banque->Filiale();
  54. print("<select name='filiale'>\n" );
  55. for($i=0; $i<sizeof($tabResultat); $i++){
  56.  print("<option value='".$tabResultat[$i][1]."'>".$tabResultat[$i][2]."</option>\n" );
  57. }
  58. print("</select><br />\n" );
  59. ?>
  60.    
  61.     <br />
  62.    
  63.    
  64.    
  65.       <!--------------------Créateur du devis------------------------>
  66.    
  67.       <span class="IntraBE2">Par :</span>
  68.   <?php
  69.   include('include/user.php');
  70.  $user = new user;
  71.    
  72.     $tabResultat_user = $user->utilisateurs();
  73. print("<select name='utilisateurs'>\n" );
  74. for($i=0; $i<sizeof($tabResultat_user); $i++){
  75.  print("<option value='".$tabResultat_user[$i][1]."'>".$tabResultat_user[$i][2]."</option>\n" );
  76. }
  77. print("</select><br />\n" );
  78. ?>
  79.   </p>
  80.   <p>
  81.     <input type="submit" class="IntraBE2" value="Enregistrer" >
  82.     <INPUT TYPE="reset" class="IntraBE2" VALUE="Reset">
  83.     </p>
  84. </center>
  85. </form>
  86. </body>


 
Et on ne se moque pas SVP !

Reply

Marsh Posté le 29-05-2006 à 11:01:13    

boulax a écrit :

t'as pas l'air de comprendre comment fonctionne un formulaire hein ?
 
$_POST['var'] suppose que dans ta page appelante tu as un formulaire en mode POST deja, et qu'ensuite tu aies un input dont le name='var' ce que manifestement n'est pas le cas chez toi.



---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 29-05-2006 à 11:01:13   

Reply

Marsh Posté le 29-05-2006 à 11:04:30    

je comprends pas trop ce que tu veux dire boulax...

Reply

Marsh Posté le 29-05-2006 à 11:05:49    

[:pingouino]


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 29-05-2006 à 11:07:59    

oui boulax, je suis un boulet....sorry

Reply

Marsh Posté le 29-05-2006 à 11:21:54    

Et si je te chies dessus tu ouvres grand la bouche en criant "encore ! encore !" ??? [:roane]


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 29-05-2006 à 11:29:57    

la reflexion de tout a l'heure etait pour moi. pour le dire simplement le boulet c moi. Je sais pas si c ça qui t'a vexé mais fo te calmer

Reply

Marsh Posté le 29-05-2006 à 11:35:39    

décidemment tu comprends rien [:psychokwak]


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 29-05-2006 à 11:40:26    

je suis vraiment DEBUTANT !
tt a l'heure :
"je comprends pas trop ce que tu veux dire boulax... "
et toi en guise d'explications/precisions :
"smiley"
"insulte"
"décidemment tu comprends rien"
 
je vois pas ce que je peux comprendre à tes reponses (même avec un DESS Informatique, option Ingénierie informatique en cours d'obtention).


Message édité par snp le 29-05-2006 à 11:42:13
Reply

Marsh Posté le 29-05-2006 à 11:41:13    

Bref, quelqu'un a-t-il une piste a m'indiquer SVP ?

Reply

Marsh Posté le 29-05-2006 à 11:47:17    

Ptin t'es en dess info et tu sais pas faire un formulaire HTML ? [:mlc]  
On t'as pas appris à lire non plus ? (Je demande parce que ma réponse est pourtant assez claire sur ton erreur)
 
Je précise aussi que ma reflexion de tout à l'heure visait à confirmer le fait que tu es un assisté sans grande estime de toi, vu que tu préfères passer pour un boulet et qu'on te donne une réponse toute faite plutot que de te bouger le cul pour acquérir des bases que, étant en dess, tu devrais maitriser depuis deja 2 ans au moins.
 
Encore une fois, la réponse a été donné, et plutot que de dire "je comprends pas" dire ce que tu ne comprends pas précisément, ça montrerait qu'au moins tu cherches à réflechir  vaguement.


Message édité par boulax le 29-05-2006 à 11:49:03

---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 29-05-2006 à 11:55:37    

je sais pas si il s'agit d'un pb de communication entre toi et moi ou si l'un de nous deux ne sais pas lire....
je ne suis pas en DESS mais je trouve que pr qq'1 (toi) qui y est, tu as une drole de façon de t'expliquer....
laisse tomber mais je trouve ça naze de devoir se prendre la tete sur un forum d'entre aide. Je galere assez tout seul ds mon coin pr comprendre comment marche le PHP et désolé mais je n'en connait pas encore ttes les subtilités de ce langage.
laisse tomber boulax, j'espere que quelqu'un de plus aimable et surtout plus compréhensif me filera un coup de main.

Reply

Marsh Posté le 29-05-2006 à 12:00:33    

Ah je me disais aussi [:moule_bite]
 
Bah ce qu'il te manque c'est un truc genre
 
<input type="hidden" name="devis_calcul" value="<? $devis_calcul?>" />
 
dans ton formulaire.
 


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 29-05-2006 à 13:57:26    

Merci boulax pour l'info. en effet je n'avais pas pensé à cette fonction. ça marche presque maintenant sauf que j'ai un nouveau msg d'erreur "Warning: odbc_do(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans l'instruction INSERT INTO., SQL state 37000 in SQLExecDirect in add_devis.php on line 29".
Pourtant ma connexion ODBC est bonne et j'ai pas l'impression que ma syntaxe soit mauvaise.
une idée ?

Reply

Marsh Posté le 29-05-2006 à 15:32:18    

Manque un espace avant VALUES ....
Ce genre d'erreur se voit tout de suite si tu debug un minimum par toi meme, genre en afficheant la requete qui a merdé...


---------------
Posté depuis des chiottes, sales. Me gusta.
Reply

Marsh Posté le 31-05-2006 à 15:13:42    

je reviens a la charge (je sais je suis un gros lourd) mais franchement, j'y comprends rien ! Je ne vois pas d'ou viennent mes erreurs.
voici donc mon code :
formulaire_add_devis.php

Code :
  1. <?php
  2.  
  3.  
  4.   include('../../include/connexion_base.php');
  5. //echo "Nouveau numéro de devis généré : D";
  6. $query="SELECT MAX(num_devis) +1 FROM devis";     // requete de selection d'une table
  7. $valeur= odbc_exec( $cnx, $query );               // execute la requete
  8. while( odbc_fetch_row( $valeur ) ) //tant que c pas la fin de la table
  9. $devis_calcule = odbc_result( $valeur, 1 );
  10. <input type="hidden" name="devis_calcule" value="<?php echo $devis_calcule" />;
  11. echo 'Nouveau numéro de devis généré : D'.$devis_calcule;
  12.     ?>


 
add_devis.php

Code :
  1. <?php
  2. //DONNEES RECUPEREES de formulaire_add_devis.php
  3. $devis=$_POST['devis_calcule'];
  4. $designation=$_POST['designation'];
  5. $client=$_POST['client'];
  6. $filiale=$_POST['filiale'];
  7. $createur=$_POST['utilisateurs'];
  8. $today = date (" j/m/Y" );
  9. require ('../../include/connexion_base.php');
  10. $query = 'INSERT INTO devis (num_devis,designation,date,client,filiale,etude)';
  11. $query .= "VALUES ('$devis','$designation','$today','$client','$filiale','$createur')";
  12. $result = odbc_do ($cnx, $query);
  13. if (!$result)
  14. echo "Ajout impossible.$today";
  15. else
  16. echo "Ajout acceptée";
  17. odbc_close( $cnx);
  18. ?>


 
Me renvoie les erreurs : Notice: Undefined index: devis_calcule in add_devis.php on line 13
 
Warning: odbc_do(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans l'instruction INSERT INTO., SQL state 37000 in SQLExecDirect in add_devis.php on line 27
Ajout impossible. 31/05/2006


Message édité par snp le 31-05-2006 à 15:46:20
Reply

Marsh Posté le 31-05-2006 à 18:41:56    

si j ai bien compris ton devis généré c est juste l index de ta table ?
ca se remplit tout seul pourquoi tu te prends la tete avec une requete inutile ?
 
enfin bon je connais pas odbc mais j imagine que ca doit exister quand meme :sweat:

Reply

Marsh Posté le 01-06-2006 à 09:08:11    

mIRROR a écrit :

si j ai bien compris ton devis généré c est juste l index de ta table ?
ca se remplit tout seul pourquoi tu te prends la tete avec une requete inutile ?
 
enfin bon je connais pas odbc mais j imagine que ca doit exister quand meme :sweat:


 
le pb c que mon n° de devis ne démarre pas de 0. Or, a moins que je dise une erreure, il n'est pas possible de faire un numero_auto avec autre chose qu'en commençant par 0.

Reply

Marsh Posté le 01-06-2006 à 09:24:50    

je viens de trouver ça en fait :
http://www.info-3000.com/access/nu [...] equeun.php
 
tres interessant !

Reply

Marsh Posté le 01-06-2006 à 09:35:46    

OK, ça marche mais g toujours ce fichu message d'erreur :
 
Warning: odbc_do(): SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe dans l'instruction INSERT INTO., SQL state 37000 in SQLExecDirect in add_devis.php on line 27
 
c'est pas une erreure de syntaxe quand même !!! je vois pas !

Reply

Marsh Posté le 01-06-2006 à 09:42:21    

resolu
Enfait le problème venait du fait que j'ai utilise un nom de champ dans ma table qui portait le nom "date", mot apparemment mot reservé en PHP. Je l'ai remplacé par date_creation et tout est rentré dans l'ordre !!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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