Formulaire en php/css

ViPHP
xTG
ViPHP | 7331 Messages

22 janv. 2012, 10:33

Pour pouvoir te répondre il nous faudra le script à jour.
Car ce n'est certainement pas avec le dernière script posté que tu envoies un email vu qu'il n'y a pas de fonction mail(). :)

xenno
Invité n'ayant pas de compte PHPfrance

22 janv. 2012, 19:17

Mon dernier code est celui ci :
<?php

if(empty($_POST))
{
        extract($_POST);
        $valid=true;
        $valid=(empty($nom) || empty($email) || !filter_var($email,FILTER_VALIDATE_EMAIL) || empty($message)) ?false:true;
        $erreurnom=(empty($nom)) ? 'Indiquez un nom' : NULL;
        $erreuremail=(empty($email) || !filter_var($email,FILTER_VALIDATE_EMAIL)) ?'Indiquez un email valide' : NULL;
        $erreurmessage=(empty($message)) ? 'Indiquez un message' : NULL;
        $valid = true;
        if($valid)
        {
                $nom=strip_tags($nom);
                $email=strip_tags($email);
                $message=strip_tags($message);
				
           
           
                try{
                                $bdd = new PDO('mysql:host=mysql51-50.perso;dbname=hlpicturessai','hlpicturessai', 'HJct6J9R') or die(print_r($bdd->errorInfo()));
                                $bdd->exec('SET NAMES utf8');
                }
           
                catch(Exeption $e){
                die('Erreur:'.$e->getMessage());
                }
           
                $req = $bdd->prepare('INSERT INTO contact (nom,email,message) VALUES (:nom,:email,:message)');
                $req->execute(array(':nom'=>$nom,':email'=>$email,':message'=>$message));
                $req->closeCursor();
           
           
                $to = '[email protected]';
                $subject = ucwords($nom).' vous envoi un message';
                $message = nl2br($message);
           
                $headers = 'From:'.$email."\r\n";
                $headers.='MIME-version: 1.0'."\r\n";
                $headers.='Content-type: text/html; charset=utf-8'."\r\n";
				
				if(mail($to,$subject,$message,$headers))
				{
					unset($nom);
					unset($email);
					unset($message);
				}
        }
}
?>
avec :
<h2 id="contact">Contact</h2>
  

 <div id="contenu">
 

 <form action="index.php" method="post">
 
 <?php if(isset($erreurnom)):?>
 <label class="error" for="nom"><?php if(isset($erreurnom)) echo $erreurnom;?>:</label>
 <input type="text" class="error" name="nom" value="<?php if(isset($nom)) echo $nom;?>" />
 <?php else:?>
  <label for="nom">Nom :</label>
 <input type="text" name="nom" value="<?php if(isset($nom)) echo $nom;?>" />
 <?php endif;?>
 
 
 
 <?php if(isset($erreuremail)):?>
 <label class="error" for="email"><?php if(isset($erreuremail)) echo $erreuremail;?>:</label>
  <input type="text" class="error" name="email" value="<?php if(isset($email)) echo $email;?>" />
 <?php else:?>
  <label for="email">Email :</label>
 <input type="text" name="email" value="<?php if(isset($email)) echo $email;?>" />
 <?php endif;?>

 
 <?php if(isset($erreurmessage)):?>
 <label class="error" for="message"><?php if(isset($erreurmessage)) echo $erreurmessage;?>:</label>
 <textarea class="error" name="message"><?php if(isset($message)) echo $message;?></textarea>
 <?php else:?>
  <label for="message">Message :</label>
 <textarea name="message"><?php if(isset($message)) echo $message;?></textarea>
 <?php endif;?>

 
 
 <input type="submit" value="Envoyer"/>
 
 </form>

 
 
 </div>

En fait pour tester j'ai enlevé tout les codes d'erreurs pour voir (si j'allais avoir la même chose que sur l'image poster plus haut)
ceux la :
<?php if(isset($erreuremail)):?>
 <label class="error" for="email"><?php if(isset($erreuremail)) echo $erreuremail;?>:</label>
  <input type="text" class="error" name="email" value="<?php if(isset($email)) echo $email;?>" />
 <?php else:?>

J'ai bien reçus un mail. Mais vide.

ViPHP
ViPHP | 2287 Messages

22 janv. 2012, 19:25

Problème de nommage de tes champs de formulaire (deux champs avec un attribut name="email" identique).

N'hésite pas à passer tes pages au validateur HTML (je sais bien, on a beau le conseiller, personne ne le fait jamais, et pourtant ça règlerait tellement de problèmes...) : http://validator.w3.org/
if(!@work()){ Nespresso(); } else { what(); }
______________________________

xénoo
Invité n'ayant pas de compte PHPfrance

22 janv. 2012, 19:38

W3C c'est pas seulement pour l'Html ? ma page php ne peut être testé.
Par contre peut tu m'expliqué l'erreur faite. J'ai vérifié le code et pourtant j'ai répété mot pour mot... ?

Merci au fait.

ViPHP
xTG
ViPHP | 7331 Messages

22 janv. 2012, 20:00

Sauf que le PHP c'est fait pour générer du HTML... Le code source que tu as via le navigateur ne contient pas de PHP, c'est celui là qui est testé au validateur.

Concernant ton erreur : tu as deux champs input nommé email...

xénoo
Invité n'ayant pas de compte PHPfrance

23 janv. 2012, 02:50

Ok. Comme dit j'ai suivis un tuto... je viens de revérifié, mon code est identique.
Tu a sans doute raison, peut tu m'éclaircir sil-te-plaît ?

ViPHP
xTG
ViPHP | 7331 Messages

23 janv. 2012, 09:55

Des éclaircissements sur quoi ? Ton erreur ou sur tes connaissances du fonctionnement de PHP ?

Pour ton erreur c'est très simple. Tu as un formulaire, tu as deux champs portant le même nom.
C'est comme quand tu livres une lettre et que deux personnes à l'adresse de livraison portent le même nom et le même prénom.
Comment savoir à qui la remettre ? Bah tu sais pas... Donc PHP il est pas plus intelligent que toi donc il l'a donne au dernier.
Dans ton formulaire le premier champs email n'est pas transmis à ta page PHP de ce fait.