Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

[RESOLU]aide pour la création d'un formulaire[php]


Messages recommandés

Posté(e) (modifié)

Bonjour tous. :P

Comme j'avance un peu dans mon travail, je change le topic au fur et à mesure.

 

Voilà, je voudrais mettre dans le site de mon mari, un formulaire de renseignement pour ses spectacles.

 

Je me base sur un topic précédent, mais comme il est en résolu, et déjà ancien, je pense mieux de commencer une nouvelle discution.

 

Je travaille avec frontpage, pour le prochain, je passerai par mozzila.

 

Voilà mon soucis.

Je prends les données du topic précédent (voir ici) et je ne sais pas trop ce que je fais; je découvre petit-à-petit (merci Ricco pour ta page)

Je travaille le code qui se trouve ici

Bon ma question: Dans mon code que j'ai fait grâce au post cité (est-il juste?), je ne trouve pas à bien mettre les conditions de renseignements.

 

a savoir, une page en retour si les champs ne sont pas remplis; par exemple si "faites votre choix" que j'ai mis dans les menus déroulant est toujours affiché. (y aurait-il moyen de le mettre en grisé par la même occasion?).

Et une page de réponse style "votre demande a été prise en considération, nous vous contacterons prochainement."

 

Je vous met le code que j'ai déjà écrit; je bloque vraiment sur les else et if et {}?

Si vous pouviez m'expliquez comment faire (ce que je préfère) ou me donner le code de fin du formulaire.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Commander un spectacle</title>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-15"/>
</head>
<body>

<form method="post" action="">
<p>
<label>Date du spectacle: <input type="text" name="date" /><br /><br /></label>

<label>Type de spectacle souhaité :<br />
<select name="type">
<option value="f">Faites votre choix </option>
<option value="dj">Animation musicale (DJ) </option>
<option value="close_up">Close-up</option>
<option value="clowns">Clowns</option>
<option value="cours_magie">Cours de magie</option>
<option value="cours_ventr">Cours de ventriloquie</option>
<option value="cours_ballons">Cours de ballons</option>
<option value="grandes">Grandes illusions</option>
<option value="magie_generale">Magie générale </option>
<option value="ballons">Sculpture de ballons</option>
<option value="rue">Spectacle de rue</option>
<option value="complet">Spectacle complet (50 minutes)</option>
<option value="ventriloquie">Ventriloquie</option>
<option value="autre">Autre : précisez dans commentaires</option>

</select>
<form method="post" action="">
<p>
<label>Type de fête:<br />
<select name="type">
<option value="f">Faites votre choix </option>
<option value="annif_enfant">Anniversaire enfant</option>
<option value="annif_adulte">Anniversaire d'adulte</option>
<option value="braderie">Braderie</option>
<option value="coktail">Coktail</option>
<option value="communion">Communion</option>
<option value="fete_annuelle">Fête annuelle</option>
<option value="fete_entreprise">Fête d entreprise</option>
<option value="fete_scolaire">Fête scolaire</option>
<option value="mariage">Mariage</option>
<option value="rue">Spectacle de rue</option>
<option value="seminaire">Séminaire d entreprise</option>
<option value="salon">Show dans un salon</option>
<option value="autre">Autre : précisez dans commentaires</option>

</select>
<form method="post" action="">
<p>
<label>Type de salle:<br />
<select name="type">
<option value="f">Faites votre choix </option>
<option value="centre_cult">Centre culturel</option>
<option value="centre_sport">Centre sportif/associatif</option>
<option value="chapiteau">Chapiteau</option>
<option value="domicile">Domicile</option>
<option value="jardin">Jardin</option>
<option value="podium_ext">Podium extérieur</option>
<option value="restaurant">Restaurant</option>
<option value="rue">Rue</option>
<option value="salle_scene">Salle avec scène</option>
<option value="salle_sans">Salle sans scène</option>
<option value="autre">Autre : précisez dans commentaires</option>

</select>
<form method="post" action="">
<p>
<label>Dans les grandes salles, Patrick hubert travaille avec un micro; il faut donc une sonorisation.<br />
<label>Devons nous vous fournir:<br />
<select name="type">
<option value="f">Faites votre choix </option>
<option value="sono">Le matériel de sonorisation</option>
<option value="lumiere">Le matériel d eclairage</option>
<option value="tout">Les deux</option>
<option value="rien">Aucun des deux</option>
<option value="autre">Autre : précisez dans commentaires</option>
</select>
<br /><br />
</label>
<label>Nombre de spectateurs : <br />
<input type="text" name="nbre_spectateurs" /></label><br /><br />

<label>Age des spectateurs :<br />
<input type="text" name="age_spectateurs" /><br /><br /></label>
<label>Ville où se déroulera le spectacle :<br />
<input type="text" name="ville" /><br /></label>

<form method="post" action="">
<p>
<label>Pays:<br />
<select name="type">
<option value="f">Faites votre choix </option>
<option value="bel">Belgique</option>
<option value="fr">France</option>
<option value="lux">Luxembourg</option>
<option value="autre">Autre : précisez dans commentaires</option>
</select>

<br /><br />
<label>Votre budget : <br />
<input type="text" name="budget" /></label><label>Euros</label><br /><br />

<form method="post" action="">
<p>
<label>Préférez vous être joint par:<br />
<select name="type">
<option value="f">Faites votre choix </option>
<option value="mail">Mail</option>
<option value="tel">Téléphone</option>
</select>
<br /><br />
<label>E-mail : <br /><input type="text" name="mail" /><br /><br /></label>
<label>Téléphone (facultatif) : <br /><input type="text" name="telephone" /><br /><br /></label>
<label>Horaire pour vous joindre :<br />
<select name="horaire">
<option value="matin">Matin</option>
<option value="midi">Midi</option>
<option value="apres-midi">Après-midi</option>
<option value="soir">Soir</option>
</select>
<br /><br />

<label>Avez vous des questions ou des renseignements supplémentaires à nous fournir ?<br />
<textarea name="renseignements" rows="5" cols="80"></textarea>
<br /><br />
<label><strong>Vos coordonnées sont
confidentielles et ne seront transmises à personne. Elles
servent uniquement à entrer en contact avec vous. Par une
simple
demande de votre part, nous les retirerons de notre fichier.</strong>
<br />Veuillez remplir tous les champs merci.</label>
<input type="hidden" name="formulaire" value="ok"/>
<input type="submit" value="Envoyer" />
</p>
</form>
</body>
</html>

ps j'ai installé easyphp pour contrôler régulièrement mon travail.

Modifié par manly
  • 2 semaines après...

Posté(e)

up1.gif

Serait-ce une tâche si compliquée à laquelle je m'attèle ?

Ou n'aurais-je pas bien cherché dans les méandres du forum et que la réponse se trouve ailleurs ?

(en fait je comprends rien à ces else etc...):P

 

Panneau-Merci.gif

Posté(e)

Bonjour,

 

Tout d'abord, dans ton code, tu écris plusieurs fois "<form method="post" action="">" alors qu'il suffit de le mettre une seule fois en début de page. Ensuite, il faut que tu donnes un nom à chaque liste déroulante. Par exemple :

 

<select name="ListeChoix">
<option value="f">Faites votre choix </option>
<option value="dj">Animation musicale (DJ) </option>
<option value="close_up">Close-up</option>
<option value="clowns">Clowns</option>

 

 

Ensuite tu as deux possibilités : vérifier le formulaire avant de cliquer sur le bouton "envoyer" ou après. Si tu choisis de vérifier avant (ou pendant la saisie par l'utilisateur), il faut utiliser un langage coté client comme javascript. Si tu veux vérifier après, tu peux le faire avec php (je crois que c'est le langage que tu as choisis, d'après ton autre post).

Donc considérons que tu veuilles faire la vérif en php : pour chaque variable (chaque champ de ton formulaire en fait), il va falloir que tu vérifies si le champ est bien rempli. Et en fonction, tu affiches un message à ton utilisateur. Par exemple (très basique) :

 

<?php 
\\j'utilise une variable texte pour écrire un message
$texte = "";
if($_POST['ListeChoix']==""
{
$texte="Vous n'avez sélectionné de choix, merci de revenir en arrière et de corriger";
echo($texte);
else
{

\\mettre ici le traitement à effectuer sur les variables du formualire (envoie de mail par exemple)
\\ et prévenir l'utilisateur du résultat de l'envoi
echo("blabla")
}


?>

 

bon ça fait une éternité que j'ai plus fait de php, mais dans l'absolun l'idée est là.

j'espère avoir répondu à une partie de tes questions.

Posté(e)

Oui merci SanchoDellaVega, tu as déjà répondu à une partie de mes questions.

 

Tout d'abord, dans ton code, tu écris plusieurs fois "<form method="post" action="">" alors qu'il suffit de le mettre une seule fois en début de page.

Cette information ci me permettra déjà d'alléger mon code.

Ensuite, il faut que tu donnes un nom à chaque liste déroulante. Par exemple :

<select name="ListeChoix">

<option value="f">Faites votre choix </option>

<option value="dj">Animation musicale (DJ) </option>

<option value="close_up">Close-up</option>

<option value="clowns">Clowns</option>

ceci, si je me trompe je l'ai fait; où bien l'ais-je mal fait?

 

Si tu veux vérifier après, tu peux le faire avec php: pour chaque variable (chaque champ de ton formulaire en fait), il va falloir que tu vérifies si le champ est bien rempli. Et en fonction, tu affiches un message à ton utilisateur. Par exemple (très basique) :

 

<?php

\\j'utilise une variable texte pour écrire un message

$texte = "";

if($_POST['ListeChoix']==""

{

$texte="Vous n'avez sélectionné de choix, merci de revenir en arrière et de corriger";

echo($texte);

else

{

\\mettre ici le traitement à effectuer sur les variables du formualire (envoie de mail par exemple)

\\ et prévenir l'utilisateur du résultat de l'envoi

echo("blabla")

}

?>

Ben justement, c'est avec les else que je coince.

Est-ce que je dois reprendre chaque donnée et l'entrer dans else?

Et à part une ligne d'echo pour me rappeler le point que cela concerne, je dois juste mettre des {} après chaque else?

Ensuite, comment dire à mon programme que le choix faites votre choix, n'est pas un choix valide?

 

Enfin, je te remerci déjà pour tes réponses.

:P

  • Modérateurs
Posté(e)

Juste une petite réponse très partielle

 

Et à part une ligne d'écho pour me rappeler le point que cela concerne, je dois juste mettre des {} après chaque else ?

La syntaxe complète de l'instruction if, c'est :

 

if (condition)
then {action(s) si la condition est vraie}
else {action(s) si la condition est fausse}

Le mot then n'est pas obligatoire, et la branche else non plus. De sorte que, si tu n'as rien à faire exécuter à ton programme dans le cas où la condition est fausse, il te suffit d'écrire :

 

if (condition) {action(s) si la condition est vraie}

Posté(e)

Merci Dylav pour tes informations.

Je sais déjà ce que je vais faire ce week-end.

J'espère que j'y arriverai.

Mais je ne sais toujours pas s'il est possible de dire au programme que la condition faites votre choix n'est pas valide. Ou alors un espace blanc ?

Posté(e)

re

 

en fait tu as plusieurs solution :

 

soit tu fais un seul if dans lequel tu vérifies à l'aide de condition "ou" si tout tes champs sont bien remplis : inconvénient : tu ne peux pas indiquer à l'utilisateur quel est le champ non rempli.

ex :

 

if(empty($_POST['toto']) OR empty($_POST['titi']))
{
// si je rentre dans la condition, je ne sais pas si c'est toto ou titi qui est vide, mais je sais que le formulaire n'est pas rempli, donc je l'indique à l'utilisateur par un message général
}
else
// j'exécute mon code

 

 

autre solution :

 

je fais un if pour chaque champ de mon formulaire. Si je rentre dans la condition, je value un booléen. a la fin de mes différents if, je teste si mon booléen a changer d'état. Si c'est le cas, j'affiche un message détaillée à l'utilisateur, sinon j'exécute le code.

exemple :

 

$bool = true;
$message="Vous n'avez pas correctement rempli le(s) champ(s) suivant : ";
if (empty($_POST['toto'])
{
$bool = false;
$message = $message."toto";
}


if (empty($_POST['titi'])
{
$bool = false;
$message = $message.", titi";
}

// une fois que j'ai testé mes variables, ma valeur booléenne vaut forcément vrai ou faux, du coup je teste et j'agis en conséquence
if ($bool = false)
{
echo($message)
}
else
{
code à éxecuter
}

 

ce code est utilisable et pratique quand tu n'as que quelques champs obligatoires, mais pas si tu as beaucoup de champ dans ton formulaire (si tu as 15 champs je te laisse imaginer le bordel avec la solution ci-dessus).

par conséquent, on arrive à la troisième possibilité qui est la plus élégante si tu veux tester le remplissage de tous tes champs :

la boucle for each. C'est une boucle qui va parcourir tous les champs de ton formulaire, et donc à chaque champ tu pourras vérifier tes conditions.

if(!empty($_POST)) 
{ 
foreach($_POST as $cle=>$val) 
{ 
if(empty($val)) 
{ 
echo 'Le champ ',$cle,' est obligatoire.<br />'; 
} 
} 
} 
else 
{
//je mets mon code ici
}

 

bon je ne me suis jamais servi de ce for each donc je ne pourrais pas vraiment te décortiquer tout ça, mais une petite recherche google pourra te renseigner mieux que moi.

 

voilà bon courgae

Posté(e)

Merci Sanchodellavega.

De plus, grâce au lien, je peux définir des champs obligatoires ou non. :P

Ne me reste plus qu'à m'y atteler.

Et de trouver ensuite comment définir le choix "faites votre choix" comme entrée invalide.

J'y travaille ce week-end et vous tiendrai au courant.

:P

  • Modérateurs
Posté(e)
<select name="ListeChoix">

<option value="f" selected="selected">Faites votre choix </option>

<option value="dj">Animation musicale (DJ) </option>

<option value="close_up">Close-up</option>

<option value="clowns">Clowns</option>

Dans l'exemple sur lequel tu travailles avec SanchoDellaVega, ajoutons à une des balises <option> l'attribut selected, qui permettra de le présélectionner, laissant néanmoins au visiteur la latitude d'effectuer un autre choix.

 

Ainsi, au lieu de tester qu'aucun choix n'a été fait, tu émets une alerte lorsque le choix retenu est "Faites votre choix" ! C'est-à-dire if($_POST['ListeChoix']=="f") {message d'alerte} mais c'est probablement tout à fait équivalent à if($_POST['ListeChoix']=="") {message d'alerte} quand tu n'utilises pas l'attribut selected.

 

Tu peux aussi prédiriger ton visiteur vers un des choix proposés, par exemple celui que tu souhaites le plus lui voir explorer. Dans ce cas, tu peux faire l'économie de "Faites votre choix" et, au niveau de ton formulaire, tu es sûre que ton visiteur aura toujours fait un choix (même sans le faire exprès) ! Trop simple... :P

 

<select name="ListeChoix" size="3">

<option value="dj" selected="selected">Animation musicale (DJ)</option>

<option value="close_up">Close-up</option>

<option value="clowns">Clowns</option>

Là, j'ai ajouté à la balise <select> l'attribut size, qui détermine le nombre de lignes apparentes du menu déroulant, pour que ton visiteur comprenne bien qu'il existe plusieurs options !

 

Pour en savoir plus, je te propose par exemple le chapitre Formulaires HTML du site SELFHTML.

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...