Php/mysql Notice: Undefined index: submit

Fermé
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012 - 6 août 2009 à 10:23
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012 - 7 août 2009 à 14:18
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.
A voir également:

9 réponses

imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
6 août 2009 à 10:34
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
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012
6 août 2009 à 19:55
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
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
6 août 2009 à 21:46
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
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012
7 août 2009 à 08:42
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
7 août 2009 à 08:55
utilise le $_POST pour récupérer tes valeurs :

$errmsg = create_entry($_POST['name'],$_POST['location'],$_POST['email'],$_POST['url'],$_POST['comments']);
0
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012
7 août 2009 à 10:28
Merci beaucoup de votre aide, le probleme est resolu maitenant
0
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012
7 août 2009 à 11:23
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
imw Messages postés 233 Date d'inscription vendredi 17 juillet 2009 Statut Membre Dernière intervention 8 septembre 2011 42
7 août 2009 à 11:36
OULA ...

il te manque un return $errmsg; à la fin de la fonction ( pour récupérer l'erreur)
0
parvn Messages postés 49 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 7 mai 2012
7 août 2009 à 14:18
Merci beaucoup, apres avoir ajoute cela et fait quelque retouche a mon code cela marche bien maintenant.
0