Non execution de requetes

Bonjour à tous.J'espère que vous vous éclatez bien.Moi,je suis en stage et je dois créer une base de données MySQL avec une interface PHP pour les enregistrements de la base,faire des stats sur la base...Le problème est que je n'arrive pas éxécuter mon code PHP(je travaille avec Easyphp Version 8.0).Je vous montre mon formulaire HTML :

<!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

Résumé de la discussion

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.

Bobot (l’IA à votre service)
  1. Modérateur
    Pas de quoi....
    A bientôt ^_^
    0
    1. C bon merci Kilian.Mon programme a marché grace a toi.Tes vraiment trop sympa .Merci beaucoup

      Mais le probleme c que j ai encore plein de pg en php a corriger
      Donc j aurais certainement d autres questions.
      En tout cas merci pour tout et je reviendrai tres prochainement sur ce site pour mes futues aventures en php
      @+ merci
      0
      1. Modérateur
        Pardon, ça fonctionne plutôt comme ça:
        $CASE_NO= (isset($_POST['CASE_NO'])) ? $_POST['CASE_NO']  : '';
        0
        1. Modérateur
          En ce cas , pour exemple on va prendre
          $CASE_NO=$_POST['CASE_NO']; 
          On considérant que CASE_NO est le nom d'une checkbox.
          Si cette checkbox n'est pas cochée tu auras une erreur.

          Donc pour faire court tu crées une condition avec un opérateur ternaire:
          (condition) ? (si oui) : (sinon)

          Donc:
          isset($_POST['CASE_NO']) ? ($CASE_NO=$_POST['CASE_NO'] ) : $CASE_NO='';

          Et tu retires le isset($_POST['CASE_NO']) du gros bloc de vérification d'avant....
          0
          1. en fait il fait le insert car j ai verifie sur dos mais j aimerais qu il ne m ecrive plus le message d erreur
            0
            1. non si je ne coche pas un checkbox il me met undefined index je sais pas pkoi
              0
              1. non si je ne coche pas un checkbox il me met undefined index je sais pas pkoi
                0
                1. Modérateur
                  Ok et l'entrée dans la base ne se fait pas?

                  En ce cas tape ceci dircetement dans ton client Mysql sous Dos:
                  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 ('5','dfd','fddf','','','YES','YES','YES','YES','YES','YES','','','23','','5','','dfdf') 
                  


                  Et regarde ce que donne l'erreur...

                  Et si tu ne coches pas un checkbox, son nom ne va pas jusque ta page Php? (Tu ne le retrouves pas dans le $_POST['nom_de_ta_checkbox'] ?
                  0
                  1. Salut
                    Jai regle le pb du ID_NO car dans ma base je l avais mis en tant que auto-increment donc il faut l enlever du INSERT INTO.
                    Il me reste le pb des checkbox a regler.
                    Merci de me repondre quand tu peux
                    0
                    1. Alors :

                      1)en fait ,a part le submit qui sert a rien ,les autres (Phone_Call,...)sont dans mon formulaire des checkbox HTML,si je les coches tous alors il n y a plus le message Undefined Index,mais moi je veux pas tous les cocher,donc comment je fais?

                      2)j ai enleve le config.inc qui (peut etre !)ne me sert pas a grand chose.

                      3)Il me met Erreur de syntaxe près de '('SEQ_CLIENT')-1,'rtrt','rtrtr','','','','YES','','','YES','',''' à la ligne 1 et j ai enleve
                      '('SEQ_CLIENT')-pour le remplacer par $ID_NO et la il n ' y a plus d'erreur mais moi je veux que l ID s incréménte tout seul.donc ???

                      Finalement je n ai plus de mess d erreur et ca me donne cela :

                      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 ('5','dfd','fddf','','','YES','YES','YES','YES','YES','YES','','','23','','5','','dfdf')

                      Que faire??
                      0
                      1. Modérateur
                        Ok, alors les Undefined index ce sont les index de tableau qui n'existent pas.
                        Donc dans ton code, $_POST['Submit'], $_POST['Phone_Call'] et les autres undefined index n'existent pas (à voir avec le formulaire)...

                        Le include(config.inc) ne marche pas (vérifier le chemin du fichier).

                        Pour le reste fais un echo sur ta requête, on verra ce que ça donne..

                        :-)
                        0
                        1. 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
                          @+
                          0
                          1. 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
                            @+
                            0
                            1. Modérateur
                              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....
                              0
                              1. 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
                                0
                                1. Modérateur
                                  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...
                                  
                                  0
                                  1. je vais eeseyer ce que tu m as dit
                                    Merci
                                    0
                                    1. Modérateur
                                      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
                                      0
                                      1. 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
                                        0
                                        1. Modérateur
                                          Vérifie bien que tu as ecris ton echo après avoir definis la variable
                                          $requeteCompRk ...
                                          0
                                          • 1
                                          • 2