Non execution de requetes
kilian Messages postés 8675 Date d'inscription Statut Modérateur Dernière intervention -
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1"/>
<title>Formulaire HTML</title>
</head>
<body>
<!--Listing 2.1 - formu.html -->
<FORM action="records26.php" method="post">
<H1><FONT color=black>NEW RECORD</FONT></H1>
<fieldset>
<legend>Please enter your informations:</legend>
<BR><BR>Client Name :<INPUT type="text" name="Client_Name" size="20" maxlength="40"/>
Company Name : <INPUT type="text" name="Company_Name" size="20" maxlength="40"/><BR><BR>
Date :<INPUT size="6" name="Date">(AAAA-MM-JJ) Time : <INPUT size="6" name="Time" >(HH:MM)<BR><BR>
Location : <SELECT name="Location">
<OPTION value="1" selected><OPTION value="2">Australia<OPTION value="3">Austria
<OPTION value="4">Belgium<OPTION
value="5">Czech Republic<OPTION value="6">Denmark<OPTION value="7">France
<OPTION value="8">Germany<OPTION
value="9">Holland<OPTION value="10">India<OPTION value="11">Ireland<OPTION value="12">Italy<OPTION value="13">Malaysia<OPTION value="14">Norway<OPTION value="15">South Africa<OPTION value="16">South Korea<OPTION value="17">Spain<OPTION value="18">Sweden<OPTION value="19">Switzerland<OPTION value="20">Turkey<OPTION value="21">UK<OPTION value="22">US<OPTION value="23">Other</OPTION></SELECT><BR><BR>
Phone Call :<INPUT type="checkbox" name="Phone_Call" value="YES"> Repeat Call :<INPUT type="checkbox" name="Repeat_Call" value="YES"> Email Call :<INPUT type="checkbox" name="Email_Call" value="YES"><BR><BR>
Pre Sales :<INPUT type="checkbox" name="Pre_Sales" value="YES"> Post sales :<INPUT type="checkbox" name="Post_Sales" value="YES"><BR><BR>
DT INFO :<INPUT type="checkbox" name="DT_INFO" value="YES"> Software Type : <INPUT name="Software_Type"><BR><BR>
Version : <INPUT name="Version"> Other S/W&Version : <INPUT name="Other_Version"><BR><BR>
Time Taken(Mins) : <INPUT name="Time_Taken_Mins"> CASE NO : <INPUT name="CASE_NO"><BR><BR>
Comments : <textarea name="Comments" rows="5" cols="50"></textarea><BR><BR>
</fieldset>
<div align="center"><INPUT type="submit" name="submit" value="Valider"></div></FORM><BR><A
href="http://localhost/statistics.html">Cliquer ici pour
faire des recherches ou afficher les statistiques </A><BR><BR><A
href="http://localhost/res.html">Cliquer ici pour
faire des recherches sur un appel précis </A>
</body>
</html>
puis mon code php qui va avec:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1"/>
<title>Accuse de reception de formulaire</title>
</head>
<body>
<BODY background="fondecran.jpg" vlink="black">
<H1><font color="red"> Record</font></H1>
<?php
$connection=mysql_pconnect("localhost","root");
if (!$connection)
{
echo "Désolé,connexion au serveur impossible\n";
exit;
}
if (!mysql_select_db("s_c_l_s",$connection))
{
echo "Désolé,accès à la base impossible\n";
exit;
}
//recuperation des variables
if(isset($_POST["Submit"])){
if(isset($_POST["Client_Name"])){
if(isset($_POST["Company_Name"])){
if(isset($_POST["Date"])){
if(isset($_POST["Time"])){
if(isset($_POST["Location"])){
if(isset($_POST["Phone_Call"])){
if(isset($_POST["Repeat_Call"])){
if(isset($_POST["Email_Call"])){
if(isset($_POST["Pre_Sales"])){
if(isset($_POST["DT_INFO"])){
if(isset($_POST["Software_Type"])){
if(isset($_POST["Version"])){
if(isset($_POST["Other_Version"])){
if(isset($_POST["Time_Taken_Mins"])){
if(isset($_POST["CASE_NO"])){
if(isset($_POST["Comments"])){
if(isset($_POST["Post_Sales"])){
//$Client_Name =$_POST['Client_Name'];
//$Company_Name=$_POST['Company_Name'];
//$Date=$_POST['Date'];
//$Time=$_POST['Time'];
//$Phone_Call=$_POST['Phone_Call'];
//$Repeat_Call=$_POST['Repeat_Call'];
//$Email_Call=$_POST['Email_Call'];
//$Pre_Sales=$_POST['Pre_Sales'];
//$Post_Sales=$_POST['Post_Sales'];
//$DT_INFO=$_POST['DT_INFO'];
//$Software_Type=$_POST['Software_Type'];
//$Version=$_POST['Version'];
//$Other_Version=$_POST['Other_Version'];
//$Time_Taken_Mins=$_POST['Time_Taken_Mins'];
//$CASE_NO=$_POST['CASE_NO'];
//$Comments=$_POST['Comments'];
include("config.inc");
//requete pour la table Company_Rafik
$requeteCompRk="INSERT INTO company_rafik(ID_NO,Client_Name,Company_Name,Date,Time,Phone_Call,Repeat_Call,Email_Call,Pre_Sales,Post_Sales,DT_INFO,Software_Type,Version,Location,Other_Version,Time_Taken_Mins,CASE_NO,Comments) values (NEXTVAL('SEQ_CLIENT')-1,'$Client_Name','$Company_Name','$Date','$Time','$Phone_Call','$Repeat_Call','$Email_Call','$Pre_Sales','$Post_Sales','$DT_INFO','$Software_Type','$Version','$Location','$Other_Version','$Time_Taken_Mins','$CASE_NO','$Comments')";
$resultat1=mysql_query($requeteCompRk,$connection);
}}}}}}}}}}}}}}}}}}
if(isset($resultat1))//si la mise à jour s'est bien effectuée
{echo"<p><b>New record.</b></p>";exit();}
else
{echo "<p>Record not done".
"<p></p>".mysql_error()."<p></p>";
}
mysql_close();
?>
</body>
</html>
Et voila le resultat que j 'obtiens quand je charge mon programme php dans mon navigateur:
Record
Record not done
Par conséquent,j ai l'impression qu'il n'y a rien dans $resultat1(ou meme peut-etre dans les variables recuperees de HTML).
En tout cas, je sais pas quoi faire et ca serait vraiment super sympa de regarder a quoi ressemble mon erreur.
Merci d'avance.
Ethan67
31 réponses
- 1
- 2
Des difficultés persistantes à exécuter le code PHP et à enregistrer des enregistrements d'un formulaire HTML dans une base MySQL ont été rapportées, avec des notices d'index indéfinis et des erreurs de connexion. Les réponses suggèrent que les champs du formulaire ne passent pas systématiquement dans $_POST, et que des tests avec echo de la requête ou des vérifications isset pourraient localiser la cause. Plusieurs commentaires recommandent d afficher la requête générée (echo $requeteCompRk) pour diagnostiquer la syntaxe et les valeurs réelles, puis d assurer que les noms de champs correspondent et que le fichier config.inc existe. En complément, il est préférable de migrer vers une API de base de données moderne (mysqli ou PDO) et de valider les connexions et les requêtes dans un environnement local avant toute insertion.
-
salut
essaie de faire des "echo" de tes variables, pour voir si elles sont valides.
bonne chance -
Salut,
Tapes
echo $requeteCompRk;
Et tu pourras essayer la requête qui sera affichée sur ta page d'une manière plus directe (PhpMyAdmin, client Mysql etc...)
Tu sauras mieux d'ou vient l'erreur.
PS: Très lourde la partie avec les isset(), tu devrais essayer de condenser ça dans un truc plus simple....-
-
j ai fait echo $requeteCompRk mais maintenant il me met parse error a la derniere ligne du prog
Merci de me repondre qd vs pouvez et voici mon nouveau prog.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1"/>
<title>Accuse de reception de formulaire</title>
</head>
<body>
<BODY background="fondecran.jpg" vlink="black">
<H1><font color="red"> Record</font></H1>
<?php
$connection=mysql_pconnect("localhost","root");
if (!$connection)
{
echo "Désolé,connexion au serveur impossible\n";
exit;
}
if (!mysql_select_db("s_c_l_s",$connection))
{
echo "Désolé,accès à la base impossible\n";
exit;
}
//recuperation des variables
if(isset($_POST["Submit"]) AND isset($_POST["Client_Name"]) AND isset($_POST["Company_Name"]) AND isset($_POST["Date"]) AND isset($_POST["Time"]) AND isset($_POST["Location"]) AND isset($_POST["Phone_Call"]) AND isset($_POST["Repeat_Call"]) AND isset($_POST["Email_Call"]) AND isset($_POST["Pre_Sales"]) AND isset($_POST["DT_INFO"]) AND isset($_POST["Software_Type"]) AND isset($_POST["Version"]) AND isset($_POST["Other_Version"]) AND isset($_POST["Time_Taken_Mins"]) AND isset($_POST["CASE_NO"]) AND isset($_POST["Comments"]) AND isset($_POST["Post_Sales"]))
{
$Client_Name =$_POST['Client_Name'];
$Company_Name=$_POST['Company_Name'];
$Date=$_POST['Date'];
$Time=$_POST['Time'];
$Phone_Call=$_POST['Phone_Call'];
$Repeat_Call=$_POST['Repeat_Call'];
$Email_Call=$_POST['Email_Call'];
$Pre_Sales=$_POST['Pre_Sales'];
$Post_Sales=$_POST['Post_Sales'];
$DT_INFO=$_POST['DT_INFO'];
$Software_Type=$_POST['Software_Type'];
$Version=$_POST['Version'];
$Other_Version=$_POST['Other_Version'];
$Time_Taken_Mins=$_POST['Time_Taken_Mins'];
$CASE_NO=$_POST['CASE_NO'];
$Comments=$_POST['Comments'];
include("config.inc");
//requete pour la table Company_Rafik
$requeteCompRk="INSERT INTO company_rafik(ID_NO,Client_Name,Company_Name,Date,Time,Phone_Call,Repeat_Call,Email_Call,Pre_Sales,Post_Sales,DT_INFO,Software_Type,Version,Location,Other_Version,Time_Taken_Mins,CASE_NO,Comments) values (NEXTVAL('SEQ_CLIENT')-1,'$Client_Name','$Company_Name','$Date','$Time','$Phone_Call','$Repeat_Call','$Email_Call','$Pre_Sales','$Post_Sales','$DT_INFO','$Software_Type','$Version','$Location','$Other_Version','$Time_Taken_Mins','$CASE_NO','$Comments')";
echo "$requeteCompRk";
$resultat1=mysql_query($requeteCompRk,$connection);
mysql_close();
?>
</body>
</html>
-
-
il ne manque pas un } à la fin ?
regarde la ligne qu'il te donne dans le fichier. -
Tu as oublié de fermer le dernier bloc if....
PS: Encore posté en même temps.... :-(
Désolé Edoc... -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Merci beaucoup les gars,vous etes trop sympas.Jai fait ce que vous m avez dit et plus de message d erreur.
MAIS,ce script php sert a effectuer des nouveaux enregistrements dans la base de donnes de l'entreprise ou je travaille.Et quand je fais un test en faisant un nouvel enregistrement via le formulaire HTML correspondant ,ensuite je fais un "SELECT *FROM ..."sur DOS(via Mysql),il me met Empty set.Donc il n'ya pas eu d'enregistrement fait.
Par conséquent je ne sais pas si le script PHP récupère bien les donnees HTML
Merci de me répondre quand vous pouvez -
Comme je te le disais, le mieux est de faire un echo sur $requeteCompRk
Comme ça tu auras la requête générée par Php, tu pourras voir ce qu'il en est en la testant dirctement sous dos... -
j ai mis echo sur $requeteCompRk mais comment je la teste sur DOS?
Merci -
Sous Windows 2000 (et peut être Xp). Tu fais un copier sur ta requête.
Tu vas sous Dos, tu ouvres une session sur ton client Mysql et tu as juste à cliquer droit pour coller -
J ai fait ce que tu m as dit mais il me met erreur de syntaxe(je crois que c normal ,il ne connait pas $...)
Alors?
Merci -
Il faut que tu prennes le résultat d'un echo en Php, il te faut la requête interprétée par Php et non pas celle qui est écrite dans ton code...
-
Ecoute,quand je charge maintenant le fichier php sur le navigateur.
L interface m'affiche Record qui est le titre de mon fichier php.Mais pas de resultat de l'echo $requeteCompRk ,donc comment j observe la requete interpretee par PHP?
Merci,excuse moi je debute depuis 1 semaine en php,donc j ai un peu de mal
Merci beaucoup -
Vérifie bien que tu as ecris ton echo après avoir definis la variable
$requeteCompRk ... -
OUI j ai fait l echo avant .Ecoute, maintenat j ai fait un petit pg pour voir si le code recuperait bien les donnees html
Je te montre le code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Hello!</title>
</head>
<body>
<?php
$connection=mysql_pconnect("localhost","root");
if (!$connection)
{
echo "Désolé,connexion au serveur impossible\n";
exit;
}
if (!mysql_select_db("s_c_l_s",$connection))
{
echo "Désolé,accès à la base impossible\n";
exit;
}
if(isset($_POST["Client_Name"])){
$Client_Name =$_POST['Client_Name'];
echo "$Client_Name";}
mysql_close();
?>
</body>
</html>
et la ca marche il recupere bien les donnes
Je pense qu il y a plutot un pb sue le mysql_query()
Qu es tu en penses?
Merci -
Ben c'est pour ca qu'il faudrait voir ce que donne la requête, chose qu'on ne peut voir qu'avec un echo sur la variable qui contient ta requête....
Mais je crois que l'echo ne se fait pas parce qu'il est dans un bloc conditionnel. Et que ce bloc ne s'execute pas....
Tu dois avoir un isset() qui bloque tout, un champs pas rempli ou une erreur de syntaxe... Bref il ya une donnée $_POST qu ne passe pas là-dedans je pense:if(isset($_POST["Submit"]) AND isset($_POST["Client_Name"]) AND isset($_POST["Company_Name"]) AND isset($_POST["Date"]) AND isset($_POST["Time"]) AND isset($_POST["Location"]) AND isset($_POST["Phone_Call"]) AND isset($_POST["Repeat_Call"]) AND isset($_POST["Email_Call"]) AND isset($_POST["Pre_Sales"]) AND isset($_POST["DT_INFO"]) AND isset($_POST["Software_Type"]) AND isset($_POST["Version"]) AND isset($_POST["Other_Version"]) AND isset($_POST["Time_Taken_Mins"]) AND isset($_POST["CASE_NO"]) AND isset($_POST["Comments"]) AND isset($_POST["Post_Sales"]))
Bonne chance pour le trouver :-D -
-
Un ptit truc pour remplacer ce gros bloc de if, tu mets tous ces champs post dans un tableau:
$form_inputs=array('Submit','Client_Name','Company_Name','Date','Time') ;
Tu crées une variable booléenne nommée $tout_remplis
Puis avec foreach, tu crées une boucle qui vérifie chaque champs:$tout_remplis=True; // Par défaut on dit que tout est remplis foreach $form_inputs as $input { if (!isset($_POST[$input])) { $tout_remplis=False; //Un champs n'a pas été remplis } } // Si $tout_remplis=True alors continuer etc... -
Merci beaucoup pour ton truc.Mais,le insert into ne marche toujours pas.Jen ai marre j ai l impression qu il n y a pas de lien avec la base
Si tu me trouves une esquisse de solution ,je suis preneur.
Merci d avance -
Enlève ta condition avec les isset() juste pour faire un test (commente le avec ses accolades) pour laisser le bloc en dessous s'executer, comme ça on pourra voir ce que donne l'echo sur ta requête....
-
Super Kilian j ai fait ce que tu m as dit et ils me disent toutes ces erreurs:
Notice: Undefined index: Submit in c:\program files\easyphp1-82\www\rec3.php on line 39
Notice: Undefined index: Phone_Call in c:\program files\easyphp1-82\www\rec3.php on line 44
Notice: Undefined index: Email_Call in c:\program files\easyphp1-82\www\rec3.php on line 46
Notice: Undefined index: Pre_Sales in c:\program files\easyphp1-82\www\rec3.php on line 47
Notice: Undefined index: DT_INFO in c:\program files\easyphp1-82\www\rec3.php on line 49
Warning: main(config.inc): failed to open stream: No such file or directory in c:\program files\easyphp1-82\www\rec3.php on line 57
Warning: main(): Failed opening 'config.inc' for inclusion (include_path='.;C:/Program Files/EasyPHP1-82\php\pear\') in c:\program files\easyphp1-82\www\rec3.php on line 57
Notice: Undefined variable: Location in c:\program files\easyphp1-82\www\rec3.php on line 61
Erreur de syntaxe près de '('SEQ_CLIENT')-1,'rtrt','rtrtr','','','','YES','','','YES','',''' à la ligne 1
Tout ce bloc {
Erreur de syntaxe près de '('SEQ_CLIENT')-1,'rtrt','rtrtr','','','','YES','','','YES','',''' à la ligne 1} etant les donnees que j ai rentre dans le formulaire
C deja bien,comme ca on peut voir sur quelles erreurs on doit travailler
Merci de me repondre quand tu peux
@+ -
Super Kilian j ai fait ce que tu m as dit et ils me disent toutes ces erreurs:
Notice: Undefined index: Submit in c:\program files\easyphp1-82\www\rec3.php on line 39
Notice: Undefined index: Phone_Call in c:\program files\easyphp1-82\www\rec3.php on line 44
Notice: Undefined index: Email_Call in c:\program files\easyphp1-82\www\rec3.php on line 46
Notice: Undefined index: Pre_Sales in c:\program files\easyphp1-82\www\rec3.php on line 47
Notice: Undefined index: DT_INFO in c:\program files\easyphp1-82\www\rec3.php on line 49
Warning: main(config.inc): failed to open stream: No such file or directory in c:\program files\easyphp1-82\www\rec3.php on line 57
Warning: main(): Failed opening 'config.inc' for inclusion (include_path='.;C:/Program Files/EasyPHP1-82\php\pear\') in c:\program files\easyphp1-82\www\rec3.php on line 57
Notice: Undefined variable: Location in c:\program files\easyphp1-82\www\rec3.php on line 61
Erreur de syntaxe près de '('SEQ_CLIENT')-1,'rtrt','rtrtr','','','','YES','','','YES','',''' à la ligne 1
Tout ce bloc {
Erreur de syntaxe près de '('SEQ_CLIENT')-1,'rtrt','rtrtr','','','','YES','','','YES','',''' à la ligne 1} etant les donnees que j ai rentre dans le formulaire
C deja bien,comme ca on peut voir sur quelles erreurs on doit travailler
Merci de me repondre quand tu peux
@+
- 1
- 2