Php/mysql Notice: Undefined index: submit

Bonjour,
Il y'a mon code sign.php pour inserer les donnees dans la base qui me renvoi cette erreure que je comprends pas:
Notice: Undefined index: submit in C:\Program Files\EasyPHP 2.0b1\www\training\application\sign.php on line 6

voici le code
sign.php

<?php
include "connection.php";
include ("usefulfunc.php");
$page_title = "Sign My Guest Book!!";
include "start_pag.php";
$submit=$_POST["submit"];
if ($submit == "Sign!"){
$errmsg = create_entry($name,$location,$email,$url,$comments);
if (empty($errmsg))
{
include "end_page.php";
exit;
}
}
?>

<form method=POST>
<table>
<?php

print_input_fields("name","location","email","url");
?>
<tr>
<td valign=top align=rigth><b>Comments:</b></td>
<td valign=top align=left><textarea name=comments cols=40 rows=4></textarea></td>
</tr>

</table>
<input type=submit name=submit value="Sign!">
<input type=reset name=reset value="Start Over">

</form>

Et voici la function create_entry pour analyser et inserer les donnees dans la base:

function create_entry($name,$location,$email,$url,$comments){
$errmsg = "";
if(empty($name)){
$errmsg .= "<li>you have to put in a name!\n";
}
if (empty($email)){
$errmsg .="<li>insert an email please\n";
}
else {
$query = "select * from guestbook where email = '$email'";
$result = safe_query($query);
if(mysql_num_rows($result) > 0) {
$errmsg .="<li>this email has already sign this guestbook.\n";
}
}
if (empty($errmsg)){
$query = "insert into guestbook"
."(name,location,email,url,comments) values "
."('$name','$location','$email','$url','$comments')";
$result = mysql_query($query);

?>
<h2>Thanks!!</h2>
<h2><a href="view.php">View Arly's Guest Book!!!</a></h2>
<?php

}
else{
include("sign.php");
}

}
?>

Merci d'avance pour votre reponse.
Configuration: Windows Vista
Firefox 3.0.13

9 réponses

  1. Merci beaucoup, apres avoir ajoute cela et fait quelque retouche a mon code cela marche bien maintenant.
    0
    1. OULA ...

      il te manque un return $errmsg; à la fin de la fonction ( pour récupérer l'erreur)
      0
      1. Il y 'a un autre probleme qui m'embette, j'ai lempression que ma function create_entry que voici:

        function create_entry($name,$location,$email,$url,$comments){
        $errmsg = "";
        if(empty($name)){
        $errmsg .= "<li>you have to put in a name!\n";
        }
        if (empty($email)){
        $errmsg .="<li>insert an email please\n";
        }
        else {
        $query = "select * from guestbook where email = '$email'";
        $result = safe_query($query);
        if(mysql_num_rows($result) > 0) {
        $errmsg .="<li>this email has already sign this guestbook.\n";
        }
        }
        if (empty($errmsg)){
        $query = "insert into guestbook"
        ."(name,location,email,url,comments) values "
        ."('$name','$location','$email','$url','$comments')";
        $result = mysql_query($query);

        ?>
        <h2>Thanks!!</h2>
        <h2><a href="view.php">View Arly's Guest Book!!!</a></h2>
        <?php

        }
        else{
        echo "operation failed\n";
        }

        }
        ?>

        quand j'utilise $errmsg="<li>you have.......\n" et if(empty($errmsg)){.....

        une fois que les valeures sont submit... via le code sign.php, n'execute pas les operations de verification si le
        $name a bien etait introduite ou si le $email existe deja il sort directement et viens a else pour m'aficher operation failed.
        aucune errore ne m'est affiche.

        voici sign.php
        <?php
        include "connection.php";
        include ("usefulfunc.php");
        $page_title = "Sign My Guest Book!!";
        include "start_pag.php";

        if(!empty($_POST['test'])){
        $errmsg = create_entry($_POST['name'], $_POST['location'], $_POST['email'] , $_POST['url'] , $_POST['comments']);
        if (empty($errmsg))
        {
        include "end_pag.php";
        exit;
        }
        }
        ?>

        <form method=POST>
        <table>
        <?php

        print_input_fields("name","location","email","url");
        ?>
        <tr>
        <td valign=top align=rigth><b>Comments:</b></td>
        <td valign=top align=left><textarea name=comments cols=40 rows=4></textarea></td>
        </tr>

        </table>
        <input type=submit name=submit value="Sign!">
        <input type=reset name=reset value="Start Over">
        <input type='hidden' name='test' value="ok" />
        </form>

        Merci d'avance pour l'aide
        0
        1. Merci beaucoup de votre aide, le probleme est resolu maitenant
          0
          1. utilise le $_POST pour récupérer tes valeurs :

            $errmsg = create_entry($_POST['name'],$_POST['location'],$_POST['email'],$_POST['url'],$_POST['comments']);
            0
            1. Merci bcp, je l'ai fait et avec submit le probleme est resolu mais il me viens presque le meme probleme avec les autres variables voici le message d'errore qui s'affiche:
              Notice: Undefined variable: name in C:\Program Files\EasyPHP 2.0b1\www\training\application\sign.php on line 8

              Notice: Undefined variable: location in C:\Program Files\EasyPHP 2.0b1\www\training\application\sign.php on line 8

              Notice: Undefined variable: email in C:\Program Files\EasyPHP 2.0b1\www\training\application\sign.php on line 8

              Notice: Undefined variable: url in C:\Program Files\EasyPHP 2.0b1\www\training\application\sign.php on line 8

              Notice: Undefined variable: comments in C:\Program Files\EasyPHP 2.0b1\www\training\application\sign.php on line 8

              Merci d'avance pour ton aide
              0
              1. que dans ton code sign.php, tu teste si le bouton à été cliqué ... mais comme je te dis, ça ne marche pas à tous les coups.

                rajoute donc dans ton formulaire :
                <input type='hidden' name='test' value="ok" />


                et remplace
                $submit=$_POST["submit"];
                if ($submit == "Sign!"){ 

                par :
                if( !empty( $_POST['test'] ) ){
                0
                1. tu peux etre un peu plus claire s'il te plait, car je suis just un debutant dans la programation php/mysql,
                  Que veux tu dire par tester $_POST['test']?
                  0
                  1. la clé submit n'hexiste pas dans le $_POST !

                    En fait, il est possible selon les navigateurs, et selon les circonstances, que les valeurs des input type submit ne passent pas. En plus la value du champs submit sers aussi à l"affichage, donc, le jour ou tu veux changer les Sign! par Go ... tu est obligé d'adapter le reste du code ...

                    Je te suggère de rajouter un
                    <input type='hidden' name='test' value="ok" />
                    


                    et de tester le $_POST['test']
                    C'est plus fiable ...
                    0