Partage
  • Partager sur Facebook
  • Partager sur Twitter

Formulaire en HTML traité en PHP

Sujet résolu
21 septembre 2006 à 17:50:46

Salut ! :)

J'ai lu les cours sur les formulaires HTML puis PHP, j'ai fait le forum mais j'ai toujours pas compris...

J'ai fait un formulaire en HTML (je ne peux que le faire en HTML sur mon site), mais je voudrais qu'il me parvienne par mail sans que l'utilisateur ce retrouve avec un mail à envoyer, je voudrais que ça soit totalement automatique !

Voici un bout de mon formulaire qui devrai suffire pour les explications :

Citation : Code

<form type="text" name="Formulaire_GDT" action="mailto:webmaster@yishan-asso.com" method="post" enctype="text/plain">

<strong>Localisation</strong><br>
<ins>Pays</ins><input type="text" name="Pays" size="13"><br>
<ins>Région</ins><input type="text" name="Region"><br>
<ins>Département</ins><input type="text" name="Departement"><br>
<ins>Ville(s) principale(s) des rassemblements</ins><input type="text" name="Ville">

<input type="submit" value="Envoyer">
<input type="reset" value="Effacer">

</form>



J'ai donc 2 problèmes :
- je ne peux pas coder mon formulaire en PHP, mais je peux faire une page de traitement en PHP que je peux herberger sur mon site ;
- je n'ai pas du tout compris comment faire une page de traitement en PHP...


Est-ce que vous pouvez m'expliquer, avec mon formulaire ci-dessus, comment faire une page de traitement ?

Merci d'avance ! :)
  • Partager sur Facebook
  • Partager sur Twitter
21 septembre 2006 à 18:21:02

Citation : Mooztyk

J'ai fait un formulaire en HTML (je ne peux que le faire en HTML sur mon site)



Un formulaire est obligatoirement en HTML, de toutes façons. Seule la méthode de traîtement peut changer.

Lorsque tu valides un formulaire (HTML, donc), il est envoyé à la page indiquée dans l'attribut action de la balise form. Exemple :

<form method="post" action="page.php">


Ce formulaire sera envoyé à la page "page.php", qui sera donc ouverte dès que le formulaire aura été validé.

Cela créera automatiquement une variable par élément du formulaire. Ces variables seront de la forme suivante :

$_POST['nom_de_l_élément']

Exemple :

<form method="post" action="page.php">
<input type="texte" name="exemple" />
<input type="submit" value="Valider" />
</form>


créera une unique variable : $_POST['exemple'] (Le submit ne créera pas de variable, car il n'a pas d'attribut "name" dans cet exemple).

Les variables ainsi créée auront pour valeur ce qui a été indiqué dans le formulaire. Donc si tu écris Bonjour dans le input-text, tu auras :

$_POST['exemple']='Bonjour';


Qui sera créée automatiquement.

C'est tout pour le principe... À toi d'utiliser ensuite correctement ces variables pour faire ce que tu veux avec :p
  • Partager sur Facebook
  • Partager sur Twitter
21 septembre 2006 à 18:38:58

OK donc ma page PHP doit avoir un code qui récupère les variable et les envoie par mail puis redirige l'utilisateur à tel endroit ?!

Citation : Code

<?php
mailto('webmaster@yishan-asso.com', '$_POST['Pays'],$_POST['Region'],$_POST['Departement'], $_POST['Ville']')
?>

<html>

<script language="Javascript">
ID=window.setTimeout("window.location='http://www.yishan-asso.com/'", "1");
</script>

</html>



Pas de bourdes dans mon code ?

Merci :)
  • Partager sur Facebook
  • Partager sur Twitter
21 septembre 2006 à 18:59:49

Fonctionnement de la fonction mail() :

mail($destinataire,$sujet,$message);

'$_POST['Pays'],$_POST['Region'],$_POST['Departement'], $_POST['Ville']' étant entre apostrophes, ça sera écrit tel quel (La variable sera affichée, et non sa valeur). Pire : Il y a des apostrophes à l'intérieur des apostrophes. Comment savoir lesquels sont ouvrants, lesquels sont fermants ? => Parse error, le script ne fonctionnera pas du tout.

La redirection : Autant utiliser directement la fonction header() de Php, plutôt que d'envoyer une page au navigateur, lui disant de revenir aussitôt demander une autre page.

Exemple correct de code qui marchera bien :

<?php
$texte='Pays : '.$_POST['pays'].'
Région : '
.$_POST['region'].'
Département : '
.$_POST['departement'].'
Ville : '
.$_POST['ville']; //Texte mis en forme (C'est plus joli ^^ Mais à toi de voir ce que tu préfères :p )
mail('webmaster@yishan-asso.com','Envoi de Formulaire',$texte); //Envoi du mail
//header('Location:http://www.yishan-asso.com'); //Les liens absolus, c'est pas bien :p
header('Location:index.php'); //Les liens relatifs, c'est mieux ^^
?>


La fonction header('Location:...') ne fonctionne que si tu n'as rien affiché avant (Ce qui est le cas ici, puisque tu ne fais qu'envoyer un mail. Attention toutefois à ne pas sauter de lignes avant d'ouvrir la balise <?php, c'est considéré comme un envoi de texte (Hé oui, les espaces et les retours à la ligne, c'est du texte :p )

Pour terminer :

ID=window.setTimeout("window.location='http://www.yishan-asso.com/'", "1");


Peut se traduire plus simplement par :

window.location='index.html';


window.setTimeout(x,1) permet de dire "Exécute moi cette fonction dans 1 milliseconde". Autant exécuter la fonction soi-même immédiatement... Là encore, l'utilisation d'un lien relatif est recommandée, car tu ne changes pas de site (Lien absolu = changement de site (Nom de domaine) uniquement).

Dernière chose : j'utilise index.html, mais peut-être que ta page d'index, c'est index.php :p Change si nécessaire ^^
  • Partager sur Facebook
  • Partager sur Twitter
21 septembre 2006 à 19:10:06

Super merci ! J'essaye ça demain je te tiens au jus !
  • Partager sur Facebook
  • Partager sur Twitter
22 septembre 2006 à 9:48:38

Youpi trop fort ça marche :D:D:D:D:D:D:D:D:D

Reste à tout compléter et faire un tableau pour que le formulaire soit tout beau !
Je vais rediriger sur une page de remerciement ça sera plus pro !


Mille merci à toi ;):D
  • Partager sur Facebook
  • Partager sur Twitter
19 février 2024 à 18:33:12

Bonjour, je veux savoir comment lier chaque bouton à un formulaire différent sur la même page.

Pouvez-vous m'aider svp ?

  • Partager sur Facebook
  • Partager sur Twitter
19 février 2024 à 18:38:22

@StevenActry Bonsoir, merci de ne pas déterrer d'ancien sujet résolu pour une nouvelle question. Créer votre propre sujet en nous fournissant le code que vous avez écrit inséré sur le forum à l'aide du bouton code </> de la barre d'outil du forum.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Liens conseillés

Je ferme ici.

  • Partager sur Facebook
  • Partager sur Twitter