FORMULAIRE qui cloche en PHP
Résolu
Lrt88
Messages postés
930
Date d'inscription
Statut
Membre
Dernière intervention
-
974_Vin's_974 Messages postés 547 Date d'inscription Statut Membre Dernière intervention -
974_Vin's_974 Messages postés 547 Date d'inscription Statut Membre Dernière intervention -
Bonsoir,
j'ai un soucis avec un formulaire sur mon site. Le problème c'est que dans les cases du formulaire, il m'écrit toujours
<b>Notice</b>: Undefined variable: nom in <b>\\\public_html\contact.php</b> on line <b>80</b>
pour chaque case avec évidemment une variable différente.
Souvent quand il y a ça, on doit mettre un isset mais je pensais que le " if($_POST) " suffisait.
Voici le code (en majorité copier-coller d'un site de partage de code)
<?php
if($_POST){
//Récupération des données du formulaire----------------------------
$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
$mail = mysql_real_escape_string(htmlspecialchars($_POST['mail']));
$sujet = mysql_real_escape_string(htmlspecialchars($_POST['sujet']));
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
//------------------------------------------------------------------
//Gestion des erreurs de saisie-------------------------------------
$erreurs = array();
if( empty($nom)) $erreurs = "il manque votre nom";
if( empty($mail)) $erreurs = "il manque votre adresse email";
if( empty($sujet)) $erreurs = "il manque le sujet";
if( empty($message)) $erreurs = "il manque votre message";
//------------------------------------------------------------------
if(empty($erreurs)) {
$from = $mail;
$reply = $from;
$to = "fjc@fucam.ac.be"; //Mettez l'email de destination ici
//Mise en forme du contenu au format HTML-----------------------
$contenu = "message de : ".$nom;
$contenu .= "<br /> Message: <br />";
$contenu .= $message;
//--------------------------------------------------------------
//Entêtes de formatage de l'email en mode HTML------------------
$headers = 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
$headers .= 'From: '.$from."\n";
$reply = $headers."Reply-to: ".$reply."\n";
//---------------------------------------------------------------
//Déclenchement de l'email et reroutage vers une autre page-----
$resultat = mail($to, $sujet, $contenu, $reply);
if($resultat) {
echo "email envoyé";
} else {
echo "Echec de l'envoi de l'email";
}
} else {
$texte_erreur = implode("<br />",$erreurs);
print $texte-erreur;
}
}
?>
ensuite ZONE HTML sans intérêt
et voici le code mon formulaire
----------------------------------------------------------------
<form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
<strong><u> Formulaire de contact par email</u></strong><br/>
<label for="nom"> Votre nom: </label><br /><input type="text" name="nom" value="<?php print $nom; ?>" ><br />
<label for="mail">Votre adresse email : </label><br /><input type="text" name="mail" value="<?php print $mail; ?>" /><br />
<label for="sujet"> Sujet du message: </label><br /><input type="text" name="sujet" value="<?php print $sujet; ?>" />
<label for="message"> Votre message: </label><br /><textarea name="message" rows="10" cols="40">Votre message ici.</textarea><br />
<input type="submit" value="Envoyer" />
</form>
GRAND MERCI A TOUT CEUX QUI ESSYERONS DE M'AIDER
j'ai un soucis avec un formulaire sur mon site. Le problème c'est que dans les cases du formulaire, il m'écrit toujours
<b>Notice</b>: Undefined variable: nom in <b>\\\public_html\contact.php</b> on line <b>80</b>
pour chaque case avec évidemment une variable différente.
Souvent quand il y a ça, on doit mettre un isset mais je pensais que le " if($_POST) " suffisait.
Voici le code (en majorité copier-coller d'un site de partage de code)
<?php
if($_POST){
//Récupération des données du formulaire----------------------------
$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
$mail = mysql_real_escape_string(htmlspecialchars($_POST['mail']));
$sujet = mysql_real_escape_string(htmlspecialchars($_POST['sujet']));
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
//------------------------------------------------------------------
//Gestion des erreurs de saisie-------------------------------------
$erreurs = array();
if( empty($nom)) $erreurs = "il manque votre nom";
if( empty($mail)) $erreurs = "il manque votre adresse email";
if( empty($sujet)) $erreurs = "il manque le sujet";
if( empty($message)) $erreurs = "il manque votre message";
//------------------------------------------------------------------
if(empty($erreurs)) {
$from = $mail;
$reply = $from;
$to = "fjc@fucam.ac.be"; //Mettez l'email de destination ici
//Mise en forme du contenu au format HTML-----------------------
$contenu = "message de : ".$nom;
$contenu .= "<br /> Message: <br />";
$contenu .= $message;
//--------------------------------------------------------------
//Entêtes de formatage de l'email en mode HTML------------------
$headers = 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n";
$headers .= 'From: '.$from."\n";
$reply = $headers."Reply-to: ".$reply."\n";
//---------------------------------------------------------------
//Déclenchement de l'email et reroutage vers une autre page-----
$resultat = mail($to, $sujet, $contenu, $reply);
if($resultat) {
echo "email envoyé";
} else {
echo "Echec de l'envoi de l'email";
}
} else {
$texte_erreur = implode("<br />",$erreurs);
print $texte-erreur;
}
}
?>
ensuite ZONE HTML sans intérêt
et voici le code mon formulaire
----------------------------------------------------------------
<form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
<strong><u> Formulaire de contact par email</u></strong><br/>
<label for="nom"> Votre nom: </label><br /><input type="text" name="nom" value="<?php print $nom; ?>" ><br />
<label for="mail">Votre adresse email : </label><br /><input type="text" name="mail" value="<?php print $mail; ?>" /><br />
<label for="sujet"> Sujet du message: </label><br /><input type="text" name="sujet" value="<?php print $sujet; ?>" />
<label for="message"> Votre message: </label><br /><textarea name="message" rows="10" cols="40">Votre message ici.</textarea><br />
<input type="submit" value="Envoyer" />
</form>
GRAND MERCI A TOUT CEUX QUI ESSYERONS DE M'AIDER
A voir également:
- FORMULAIRE qui cloche en PHP
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Confirmer le nouvel envoi du formulaire err_cache_miss - Forum Google Chrome
8 réponses
Salut,
le mode strict est activé sur ton serveur, ca te remonte des erreurs pas forcement importantes mais c'est bien car permet d'être plus rigoureux :)
Tu as raison il faut bien faire un isset, mais dans ce cas la variable "$nom" est definie uniquement dans le bloc "if",
ce qui n'est pas le cas lors du premier affichage du formulaire,il faut donc reprendre les variables POST pour que le formulaire conserve les données lors d'une erreur.
De plus, je ne voit pas l'interet des "mysql_real_escape' ici, je l'ai ai retiré mais tu pourra les remettre,
a condition de vouloir stocker dans une base de données avec une connexion ouvrte a ce moment du script,
donc inutile si tu envoie simplement les données par mail comme dans ton code.
voila ce que cela donne :
bon courage :)
le mode strict est activé sur ton serveur, ca te remonte des erreurs pas forcement importantes mais c'est bien car permet d'être plus rigoureux :)
Tu as raison il faut bien faire un isset, mais dans ce cas la variable "$nom" est definie uniquement dans le bloc "if",
ce qui n'est pas le cas lors du premier affichage du formulaire,il faut donc reprendre les variables POST pour que le formulaire conserve les données lors d'une erreur.
De plus, je ne voit pas l'interet des "mysql_real_escape' ici, je l'ai ai retiré mais tu pourra les remettre,
a condition de vouloir stocker dans une base de données avec une connexion ouvrte a ce moment du script,
donc inutile si tu envoie simplement les données par mail comme dans ton code.
voila ce que cela donne :
<html> <head></head> <body> <?php if($_POST){ //Récupération des données du formulaire---------------------------- $nom = htmlspecialchars($_POST['nom']); $mail = htmlspecialchars($_POST['mail']); $sujet = htmlspecialchars($_POST['sujet']); $message = htmlspecialchars($_POST['message']); //------------------------------------------------------------------ //Gestion des erreurs de saisie------------------------------------- $erreurs = array(); if( empty($nom)) $erreurs[] = "il manque votre nom"; if( empty($mail)) $erreurs[] = "il manque votre adresse email"; if( empty($sujet)) $erreurs[] = "il manque le sujet"; if( empty($message)) $erreurs[] = "il manque votre message"; //------------------------------------------------------------------ if(empty($erreurs)) { $from = $mail; $reply = $from; $to = "fjc@fucam.ac.be"; //Mettez l'email de destination ici //Mise en forme du contenu au format HTML----------------------- $contenu = "message de : ".$nom; $contenu .= "<br /> Message: <br />"; $contenu .= $message; //-------------------------------------------------------------- //Entêtes de formatage de l'email en mode HTML------------------ $headers = 'MIME-Version: 1.0' . "\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\n"; $headers .= 'From: '.$from."\n"; $reply = $headers."Reply-to: ".$reply."\n"; //--------------------------------------------------------------- //Déclenchement de l'email et reroutage vers une autre page----- $resultat = mail($to, $sujet, $contenu, $reply); if($resultat) { echo "email envoyé"; } else { echo "Echec de l'envoi de l'email"; } die(); } else { $texte_erreur = implode("<br />",$erreurs); print "<b style='color:red'>".$texte_erreur."</b><br><br>"; } } ?> <form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data" name="form1" id="form1"> <strong><u> Formulaire de contact par email</u></strong><br/> <label for="nom"> Votre nom: </label><br /><input type="text" name="nom" value="<?php if (isset($_POST['nom'])) print $_POST['nom']; ?>" ><br /> <label for="mail">Votre adresse email : </label><br /><input type="text" name="mail" value="<?php if (isset($_POST['mail'])) print $_POST['mail']; ?>" /><br /> <label for="sujet"> Sujet du message: </label><br /><input type="text" name="sujet" value="<?php if (isset($_POST['sujet'])) print $_POST['sujet']; ?>" /> <label for="message"> Votre message: </label><br /><textarea name="message" rows="10" cols="40"><?php if (isset($_POST['message'])) print $_POST['message']; ?>Votre message ici.</textarea><br /> <input type="submit" value="Envoyer" /> </form> </body> </html>
bon courage :)
Les 3 lignes de code qui pause problème sont la 80 (dans la case 1)
La ligne 81 (dans la case 2)
la ligne 82 (dans la case 3)
les voici:
<label for="nom"> Votre nom: </label><br /><input type="text" name="nom" value="<?php if (isset($_POST['nom'])) print $_POST['nom']; ?>" ><br />
<label for="mail">Votre adresse email : </label><br /><input type="text" name="mail" value="<?php if (isset($_POST['mail'])) print $_POST['mail']; ?>" /><br />
<label for="sujet"> Sujet du message: </label><br /><input type="text" name="sujet" value="<?php if (isset($_POST['sujet'])) print $_POST['sujet']; ?>" />
La ligne 81 (dans la case 2)
la ligne 82 (dans la case 3)
les voici:
<label for="nom"> Votre nom: </label><br /><input type="text" name="nom" value="<?php if (isset($_POST['nom'])) print $_POST['nom']; ?>" ><br />
<label for="mail">Votre adresse email : </label><br /><input type="text" name="mail" value="<?php if (isset($_POST['mail'])) print $_POST['mail']; ?>" /><br />
<label for="sujet"> Sujet du message: </label><br /><input type="text" name="sujet" value="<?php if (isset($_POST['sujet'])) print $_POST['sujet']; ?>" />
Essaye ca, si ca marche pas jte donnerais une otre recette ... Le print il te servai a koi ???
<label for="nom"> Votre nom: </label><br /><input type="text" name="nom" value="<?php if (isset($_POST['nom'])) echo $_POST['nom']; ?>" ><br />
<label for="mail">Votre adresse email : </label><br /><input type="text" name="mail" value="<?php if (isset($_POST['mail'])) echo $_POST['mail']; ?>" /><br />
<label for="sujet"> Sujet du message: </label><br /><input type="text" name="sujet" value="<?php if (isset($_POST['sujet'])) echo $_POST['sujet']; ?>" />
<label for="nom"> Votre nom: </label><br /><input type="text" name="nom" value="<?php if (isset($_POST['nom'])) echo $_POST['nom']; ?>" ><br />
<label for="mail">Votre adresse email : </label><br /><input type="text" name="mail" value="<?php if (isset($_POST['mail'])) echo $_POST['mail']; ?>" /><br />
<label for="sujet"> Sujet du message: </label><br /><input type="text" name="sujet" value="<?php if (isset($_POST['sujet'])) echo $_POST['sujet']; ?>" />
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
oki j'essaie tout de suite,
le print sert quand la personne n'a pas entièrement rempli le questionnaire; l'echo est censé servir à remettre dans les cases ce que la personne a déjà rempli.
le print sert quand la personne n'a pas entièrement rempli le questionnaire; l'echo est censé servir à remettre dans les cases ce que la personne a déjà rempli.
T'as solution marche ! Grand merci
(ya encore des couilles dans mon formulaires mais ce premier problème est résolu. Pour les autres,je vais d'abord essayer de me débrouiller seul)
(ya encore des couilles dans mon formulaires mais ce premier problème est résolu. Pour les autres,je vais d'abord essayer de me débrouiller seul)