Php/mysql Notice: Undefined index: submit

parvn Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   -  
parvn Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   -
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 Statut Membre 42
 
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   Statut Membre Dernière intervention  
 
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 Statut Membre 42
 
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   Statut Membre Dernière intervention  
 
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 Statut Membre 42
 
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   Statut Membre Dernière intervention  
 
Merci beaucoup de votre aide, le probleme est resolu maitenant
0
parvn Messages postés 49 Date d'inscription   Statut Membre Dernière intervention  
 
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 Statut Membre 42
 
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   Statut Membre Dernière intervention  
 
Merci beaucoup, apres avoir ajoute cela et fait quelque retouche a mon code cela marche bien maintenant.
0