Kob-One
49539 créatifs inscrits sur la plateforme KobOne

RSS Forums créatifs freelances KobOne Forums

 Rappel: En postant votre message vous reconnaissez avoir lu et accepté les règles d'utilisation de ce forum public.

[Résolu] - Formulaire PHP > Je m'arrache les cheuveux

Toutes vos questions concernant les formations, tarifs, salaires pratiqués par les webdesigners et le multimédia en général. Que vous soyez freelances, salariés, en portage salarial partagez vos expériencespersonnelles !

[Résolu] - Formulaire PHP > Je m'arrache les cheuveux

Message08/03/2010 22:23

Bonjour à tous,

Je ne sais pas si c'est bien ici que je peut poser ma question (mais je la pose quand même)

Je suis entrain de réaliser un site internet pour une chambre d'hôte, sur la page d'accueil
j'ai un petit module de réservation, avec un peut de !javascript! pour l'agenda et du PHP pour l'envoie des formulaire (2 mails 1 de confirmation pour le client et un de confirmation pour le responsable)
jusque la tout va bien les mail sont bien reçus aux adresse concerné etc ...

La ou le Shmilblik blok :p c'est pendant la vérification des informations :
Je voudrais que ce texte :



Erreur. Les champs suivants doivent être obligatoirement remplis :

Date d'arrivée non renseigné
Date de départ non renseigné
Votre civilité n'est pas renseigné
Votre nom n'est pas renseigné
Votre Prénom n'est pas renseigné
Votre adresse n'est pas renseigné
Votre code postal n'est pas renseigné
Votre ville n'est pas renseigné
Votre numéro de téléphone n'est pas renseigné
Votre mail n'est pas renseigné




s'affiche ou je le désire, c'est à dire à juste au dessus de chaque entrées du formulaire
ex :



Votre code postal n'est pas renseigné
Code postale : 



Et je voudrais aussi que ses information s'affiche uniquement si les champs ne sont pas rempli et que l'ont valide, hors elle apparaisse en permanence.

Voici le code de ma page concerné :



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"q
    "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <head>
    <link rel="shortcut icon" href="/dev/favicon.ico" />
        <title>Ressourcez vous aux épilobes - Chambre d'hôte - Accueil chez l'habitant eco responsable - Hautes Alpes - 38740 Le Désert en Valjouffrey</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css" media="screen">@import "/dev/epi.css";</style>

<META NAME="TITLE" CONTENT="Ressourcez vous aux épilobes - Chambre d'hôte - Accueil chez l'habitant eco responsable - Hautes Alpes - 38740 Le Désert en Valjouffrey">
<META NAME="AUTHOR" CONTENT="Créa Cube • www.crea-cube.fr">
<META NAME="OWNER" CONTENT="contact@crea-cube.fr">
<META NAME="SUBJECT" CONTENT="Chambre d'hôte • Accueil chez l'habitant éco responsable dans les Hautes Alpes • 38740 Le Désert en Valjouffrey">
<META NAME="RATING" CONTENT="Chambre D'hôte• Accueil chez l'habitant éco responsable">
<META NAME="DESCRIPTION" CONTENT="Les Épilobes est une chambre d'hôte qui vous acceuil pour un séjour de 3 à 6 jours avec au programme des journée à thèmes pour se ressourcer situé dans les Hautes Alpes au Désert en Valjouffrey">
<META NAME="ABSTRACT" CONTENT="Les Épilobes est une chambre d'hôte qui vous acceuil pour un séjour de 3 à 6 jours avec au programme des journée à thèmes pour se ressourcer situé dans les Hautes Alpes au Désert en Valjouffrey">
<META NAME="KEYWORDS" CONTENT="gerard jacquemin,martine jacquemin,crea cube,chambre d'hôte,accueil chez l'habitant,valjouffrey,éco responsable,séjours à thème,se ressourcer,le desert en valjouffrey,hautes alpes,alpes,montagne,épilobe,l'épilobe,les épilobes">
<META NAME="REVISIT-AFTER" CONTENT="10 DAYS">
<META NAME="LANGUAGE" CONTENT="FR">
<META NAME="COPYRIGHT" CONTENT="© Les épilobes">
<META NAME="ROBOTS" CONTENT="All">
<script type="text/!javascript!" src="/dev/i/mootools.js"></script>
  <script type="text/!javascript!" src="/dev/i/calendar.rc4.js"></script>
  <script type="text/!javascript!"> 
window.addEvent('domready', function() { myCal = new Calendar({ date1: 'd/m/Y' }, { direction: 1, tweak: { x: 6, y: 0 }}); }); 
</script> 
  <script type="text/!javascript!"> 
window.addEvent('domready', function() { myCal = new Calendar({ date2: 'd/m/Y' }, { direction: 1, tweak: { x: 6, y: 0 }}); }); 
</script> 


<?php
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";
$msg_ok = "Votre demande a bien été prise en compte.";
$message = $msg_erreur;
$mail2 = "contact@crea-cube.fr";
define('MAIL_SUJET','Confirmation de votre réservation sur www.lesepilobes.fr');



// vérification des champs
if (empty($_POST['date1'])) 
$message .= "Date d'arrivée non renseigné<br/>";
if (empty($_POST['date2'])) 
$message .= "Date de départ non renseigné<br/>";
if (empty($_POST['mme'])) 
$message .= "Votre civilité n'est pas renseigné<br/>";
if (empty($_POST['nom'])) 
$message .= "Votre nom n'est pas renseigné<br/>";
if (empty($_POST['prenom'])) 
$message .= "Votre Prénom n'est pas renseigné<br/>";
if (empty($_POST['adresse'])) 
$message .= "Votre adresse n'est pas renseigné<br/>";
if (empty($_POST['cp'])) 
$message .= "Votre code postal n'est pas renseigné<br/>";
if (empty($_POST['ville'])) 
$message .= "Votre ville n'est pas renseigné<br/>";
if (empty($_POST['tel'])) 
$message .= "Votre numéro de téléphone n'est pas renseigné<br/>";
if (empty($_POST['mail'])) 
$message .= "Votre mail n'est pas renseigné<br/>";
// si un champ est vide, on affiche le message d'erreur 
if (strlen($message) > strlen($msg_erreur)) {

  echo $message;

// sinon c'est ok 
} else {

foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}


//Mail de confirmation
$sujet="RESERVATION RECU DU SITE WWW.LESEPILOBES.FR";
$message="//// RÉSERVATION RECUS DU $date1 AU $date2 ////

COORDONÉES DE LA PERSONNE QUI VIENT DE RESERVER
$mme $nom $prenom
$adresse
$cp
$ville
$tel
$mail

PENSEZ À RAPPELER POUR CONFIRMER !
BISOUS DADY ;)
";
$headers = "!from:! RESERVATION RECUS<contact@crea-cube.fr>n";
$headers2 = "!from:! Les Épilobes<contact@crea-cube.fr>n";
mail($mail2,$sujet,$message,$headers);





// préparation du corps du mail
$mail_corps = "Bonjour $mme $nom et bienvenue aux Épilobes";
$mail_corps .=  "
Vous venez de réservez votre séjour sur le site www.lesepilobes.fr
du $date1 au $date2 et nous vous en remercions.

Voici un récapitulatif de vos coordonées :

$mme $nom $prenom
$adresse
$cp
$ville
$tel
$mail

Nous prendrons contact avec vous dans les plus brefs délais pour confirmer la réservation

Un accompte de 30% du montant de la réservation
vous seras demander par chèque à l'ordre des Épilobes, envoyé à : 

Les Épilobes
Le desert en valjouffrey
38740 LE DÉSERT EN VALJOUFFREY

Nous nous feront un plaisir de vous accueillir au desert en Valjouffrey
le $date1, dans l'attente de vous reçevoir. 

Martine & Gérard • www.lesepilobes.fr";

// envoi du mail
if (mail($mail, MAIL_SUJET, $mail_corps,$headers2)) {

  //Le mail est bien expédié
  echo $msg_ok;
} else {

  //Le mail n'a pas été expédié
  echo 'Une erreur est survenue lors de l'envoi du formulaire par email';
}

}
?>




    </head>
    
    <body>
<div id="content">
        <div id="barre">
            <div id="hautdroit"></div>
        </div>
        
    <div id="fondvert">
        <div id="contenu">
            <div id="gauche">
                <div id="enseigne"></div>
                <img class="reservez" src="/dev/i/reservez.png">
                
                <div id="calendrier">
                <form method="POST" action="#" name="monform">
            
                Du : <input  id="date1" name="date1" type="text" /><br />
                Au : <input id="date2" name="date2" type="text" /><br /><br />
                
                M. <input type="checkbox" name="mme" value="M." checked="checked" />
                Mme <input type="checkbox" name="mme" value="Mme." checked="checked" /><br />
                Nom : <input type="text" name="nom"  size="21"><br />
                Prenom : <input type="text" name="prenom" size="21"><br />
                Adresse : <textarea name="adresse" rows="8" cols="19"></textarea><br />
                Code Postale : <input type="text" name="cp"  size="5"><br />
                Ville : <input type="text" name="ville"  size="21"><br />
                Téléphone : <input type="text" name="tel" size="21"><br />
                Mail : <input type="text" name="mail" size="21"><br />
                
<input type="submit" value="Envoyer">
<input type=reset value=Annuler>
</form>
                </div>
            </div>
    
    <div id="droite">
        <div id="photoete"></div>
    </div>
        </div>
    </div>
</div>
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    <div id="pied">
        <div class="epilobe"></div>
        <div class="chamoi"></div>
        <div class="vorze"></div>

    </div>

</body>
</html>





Et le lien direct de test (en avant première :p )
http://www.lesepilobes.fr/testphp/sommaire.php
Je me permet de vous demander cela car j'ai fait plusieurs recherche en vain !

Merci infiniment !
CreaCube
CreaCube

Rang 4
 
Messages: 60
Inscription: Mer 20 Oct 2010 10:55
Charlie • www.crea-cube.fr

Message08/03/2010 23:46

Heu ça ma l'air un peu brouillon
enfaite déjà il faudrait surement reprendre un peu la structure du code.
par exemple :
pour afficher les messages d'erreurs en gros à côté de la balise INPUT, il faudrait
pour faire simple mettre une balise SPAN avec la variable du message d'erreur, pour mieux faire ça serait d'injecter le code via !!!!javascript!!!!, que quand il y' à une erreur pour éviter d'encombrer inutilement le code.

Pour ne pas que tout le code s'affiche directement ce qui est normal dans ton cas car le formulaire n'a jamais été soumis donc tous les messages d'erreurs apparaissent parce que dans tes conditions tu le stipules.

Solution c'est de créer une variable de contrôle avant tes instructions pour que le code ne s'affiche pas si le formulaire n'a pas été jamais été soumis :

// si la variable poster date1 existe et bien affiche les message d'erreur ça ve dire que le formulaire à été posté
if(isset($_POST["date1"]){

// vérification des champs
if (empty($_POST['date1']))
$message_1 = "Date d'arrivée non renseigné<br/> ";
if (empty($_POST['date2']))
$message_2 = "Date de départ non renseigné
";
if (empty($_POST['mme']))
$message_3 = "Votre civilité n'est pas renseigné <br/>";
if (empty($_POST['nom']))
$message_3 = "Votre nom n'est pas renseigné<b r/>";
if (empty($_POST['prenom']))
$message_4 = "Votre Prénom n'est pas renseigné&l t;br/>";
if (empty($_POST['adresse']))
$message_5 = "Votre adresse n'est pas renseigné& lt;br/>";
if (empty($_POST['cp']))
$message_6 = "Votre code postal n'est pas r enseigné<br/>";
if (empty($_POST['ville']))
$message_7 = "Votre ville n'est pas renseigné< ;br/>";
if (empty($_POST['tel']))
$message_8= "Votre numéro de téléphone n'est&nb sp;pas renseigné<br/>";
if (empty($_POST['mail']))
$message_9= "Votre mail n'est pas renseigné< br/>";

// reste du code
}else{

}

j'ai changé un peu le code c'est un peu à l'arrache mais bon, au lieu de faire
<b>$message.=</b> qui te permet de rajouter tes valeurs dans une seul variables
j'en fait plusieurs pour que tu puisses les utiliser pour chaque champs.

exemple :

<input id="date1" name="da te1" type="text" /><span><?php echo $message-1; ?></span>


ainsi de suite avec le message-2 etc...

c'est un peu à l'arrache mais ça devrait marche, j'ai pas testé mais bon

en espérant que ça t'aura aidé

PS : les varaibles avec underscore

<p class="LIGNB">Message édité par : Cajoline / 08-03-2010 23:47</p> :b

<p class="LIGNB">Message édité par : Cajoline / 09-03-2010 01:08</p>

Message édité par : Cajoline / 09-03-2010 11:11
Cajoline
Cajoline

Rang 4
 
Messages: 43
Inscription: Mer 20 Oct 2010 10:55

Message08/03/2010 23:51

Regarde aussi sur le net il y'a bcp de cours sur la récup de formulaire en Php
ça peu t'aider aussi.
Cajoline
Cajoline

Rang 4
 
Messages: 43
Inscription: Mer 20 Oct 2010 10:55

Message09/03/2010 00:44

Bonsoir,

le doctype spécifie XHTML 1.0 Strict, alors qu'en fait non. (attr en minuscule).

Là il faut refaire la logique du code, je ne vois pas de solution propre rapide pour ton cas, le mieux est d'utiliser javascipt pour les formulaires en première passe et d'ensuite s'assurer une nouvelle fois des données avant autre traitements php (1 fois pour l'utilisateur, une 2ème fois pour la sécurité).

et à ta place j'utiliserai des tableaux au lieu des multiples variables..

et mettre tes conditions sur les input directement serai la solution la plus crade mais la plus rapide.. (3 conditions pour chaque input)

houba
PS : Cajoline utilise des noms de variables interdit..
PS2 : j'aimerai pas être le client :#
PS3 : C'est vraiment pas sérieux ton code là pour quelqu'un qui se dit développeur..

Message édité par : houba / 09-03-2010 00:50

Message édité par : houba / 09-03-2010 00:51
houba
houba

Rang 8
 
Messages: 664
Inscription: Mer 20 Oct 2010 10:55
Julien Berlemont - développeur web - http://www.jberlemont.fr en ce moment en CDI dév delphi / C# ;)

Message09/03/2010 01:06

Oui le code n'est pas très propre
c'est vrai, ça serait mieux de reprendre la logique

ps : oui il faut changer les noms des variables ds l'exemple lol pas $var-numero mais $var_numero :b

Message édité par : Cajoline / 09-03-2010 01:09

Message édité par : Cajoline / 09-03-2010 07:47

Message édité par : Cajoline / 09-03-2010 07:49
Cajoline
Cajoline

Rang 4
 
Messages: 43
Inscription: Mer 20 Oct 2010 10:55

Message09/03/2010 16:34

Merci pour votre aide Cajoline & houba !
Dur Dur de revoir la logique du code car j'ai mis des heures à en arriver la ! :p

Aprés les if (isset($_POST['date1'])) etc ...
Mon formulaire est envoyé même avec les champs vide et aussi chaque fois que je réactualise la page :(

J'en peut plus :' j'abandonne :paf
CreaCube
CreaCube

Rang 4
 
Messages: 60
Inscription: Mer 20 Oct 2010 10:55
Charlie • www.crea-cube.fr

Message09/03/2010 18:48

Envois moi si tu veux ton formulaire
et ton code
Cajoline
Cajoline

Rang 4
 
Messages: 43
Inscription: Mer 20 Oct 2010 10:55

Message09/03/2010 19:11

par MP :)
Cajoline
Cajoline

Rang 4
 
Messages: 43
Inscription: Mer 20 Oct 2010 10:55

Message09/03/2010 20:15

Dur Dur de revoir la logique du code car j'ai mis des heures à en arriver la ! :p
Sans logique, pas de développement. L'essence d'un bon code c'est la logique. Si après 30mins tu comprends pas ce que tu fais, recommence. Le but est d'avoir un code lisible quand le langage est de haut niveau (c'est un peu plus compliquer avec du bas niveau).

Et dessine ce que tu veux que le code fassent, tu y verras les incohérence. (c'est plus rapide à corriger, qu'une fois les 1200lignes écrite..)

Ensuite commence ton code par des commentaires, en pratique met juste les boucles / conditions en php et le reste des appels en commentaires. Puis tu traduis ces commentaires par les fonction php/utilisateur au fil du code. La logique rentrera petit à petit de cette façon.

Enfin, je dis ça si tu as envie approfondir :)

houba

Message édité par : houba / 09-03-2010 20:40
houba
houba

Rang 8
 
Messages: 664
Inscription: Mer 20 Oct 2010 10:55
Julien Berlemont - développeur web - http://www.jberlemont.fr en ce moment en CDI dév delphi / C# ;)

Message09/03/2010 20:29

Citation : houba
Et dessine pendant ce que tu veux que le code fassent, tu y verras les incohérence.


hein ? :-D
pixtronik
pixtronik

Rang 8
 
Messages: 1047
Inscription: Mer 20 Oct 2010 10:55

Retourner vers Forum général

 

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

 

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot] et 8 invités

 
 
Catégories
 
Dernières contributions sur le forum
 

 

cron