Pages :
Bonjour,

J'essaye de développé un formulaire pour une campagne de recrutement, il est donc nécessaire que je récupère les données remplies par les usagers, mais problème je ne connais pas le PhP.

Alors par le biais des forum j'ai essayer divers solutions mais aucune ne semble fonctionner, pourquoi?

Si quelqu'un aurait un peu de temps pour guider un apprentis déterminer (4 jours de PhP sans aucune base de départ ^^' )

Voici les captures du HTML, puis du PhP... J'imagine que ça va piquer les yeux des confirmés et je m'en excuse.

<section id="contact">
                <form class="form" method="post" action="php/contactMail.php" enctype="multipart/form-data">
                    <fieldset>

                        <p>
                            <input type="text" name="name" id="name" required placeholder="Nom*" autofocus />
                        </p>
                        <p>
                            <input type="text" name="prenom" id="prenom" placeholder="Prénom" />
                        </p>
                        <p>
                            <input type="email" name="mail" id="mail" placeholder="Email*" required />
                        </p>
                        <p>
                            <input type="text" name="adress" id="adress" placeholder="Adresse" />
                        </p>
                        <p>
                            <input type="text" name="town" id="town" placeholder="Ville*" required />
                        </p>
                        <p>
                            <input type="text" name="postal" id="postal" placeholder="Code postal*" required />
                        </p>
                        <p>
                            <input type="text" name="birthday" id="birthday" placeholder="Date de Naissance*" required />
                        </p>
                        <p>
                            <input type="tel" name="tel" id="tel" placeholder="Téléphone" />
                        </p>
                        <!--<legend> Permis* :</legend>-->
                        <p id="btn">
                            <label for="subject">Permis</label>
                            <select id="subject" name="subject">
								<option>B</option>
								<option>D</option>
								<option>B+E</option>
                               <option>aucun</option>
                            </select>
                        </p>

                        <p id="button">
                          
                            <input  value="Envoyer " class="button" type="submit">
                        </p>
                    </fieldset>
                </form>
            </section>


<?php
/*
	********************************************************************************************
	CONFIGURATION
	********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'graphisme@palaco.fr';
 
// copie ? (envoie une copie au visiteur)
$copie = 'non'; // 'oui' ou 'non'
 
// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer.";
 
// Messages d'erreur du formulaire
$message_erreur_formulaire = "Vous devez d'abord envoyer le formulaire.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
 

/*
	********************************************************************************************
	FIN DE LA CONFIGURATION
	********************************************************************************************
*/

// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
{
	// formulaire non envoyé
	echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{
 
	// formulaire envoyé, on récupère tous les champs.
	$nom     = (isset($_POST['name']))     ? Rec($_POST['name'])     : '';
    $prenom  = (isset($_POST['prenom']))  ? Rec($_POST['prenom'])  : '';
	$email   = (isset($_POST['mail']))   ? Rec($_POST['mail'])   : '';
	$adress   = (isset($_POST['adress']))   ? Rec($_POST['adress'])   : '';
	$town = (isset($_POST['town'])) ? Rec($_POST['town']) : '';
    $postal = (isset($_POST['postal'])) ? Rec($_POST['postal']) : '';
    $birthday = (isset($_POST['birthday'])) ? Rec($_POST['birthday']) : '';
    $tel = (isset($_POST['tel'])) ? Rec($_POST['tel']) : '';
    $subject = (isset($_POST['subject'])) ? Rec($_POST['subject']) : '';
 
	// On va vérifier les variables et l'email ...
	$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
 
	if (($nom != '') && ($prenom != '') && ($email != '') && ($adress != '') && ($town != '') && ($postal != '') && ($birthday != '') && ($tel != '') && ($subject != ''))
	{
        
        
		// les 4 variables sont remplies, on génère puis envoie le mail
		$headers  = 'MIME-Version: 1.0' . "\r\n";
		$headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .
				'Reply-To:'.$email. "\r\n" .
				'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
				'Content-Disposition: inline'. "\r\n" .
				'Content-Transfer-Encoding: 7bit'." \r\n" .
				'X-Mailer:PHP/'.phpversion();
	
 
		// Envoi du mail
		$num_emails = 1;
		$tmp = explode(';', $cible);
		foreach($tmp as $email_destinataire)
		{
			if (mail($email_destinataire, $objet, $message, $headers, $destination))
                @unlink($destination);
				$num_emails++;
		}
 
		if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
		{
			echo '<script>alert("Message envoyé ! Redirection au clic sur le OK ");</script>';
        echo '<script>document.location.href = "../Contact.php";</script>';
		}
		else
		{
			echo '<script>alert("Envoie du mail échoué, veuillez réessayer. Redirection au clic sur le OK ");</script>';
        echo '<script>document.location.href = "../Contact.php";</script>';
		};
	}
	else
	{
		// une des 3 variables (ou plus) est vide ...
		echo '<script>alert("Vérifiez que tous les champs soient bien remplis et que votre email soit sans erreur. Redirection au clic sur le OK ");</script>';
        echo '<script>document.location.href = "../Contact.php";</script>';
	};
};// fin du if (!isset($_POST['envoi']))
?>


J'ai tenter de modifié un peu le code PhP voir si cela fonctionnais mieux... même résultat.

Merci d'avance
Bonjour,

Si tu fais un var_dump de tes variables :


var_dump($name, $prenom, etc.)
var_dump($_POST['name'], $_POST['prenom'], etc.)


tu as quoi ?

Je vois que tu utilise un fonction Rec, elle fait quoi a tes données ?

Cordialement,
Gandalf
Modifié par gandalfblanc (11 Jul 2017 - 12:07)
Bonjour Gandalf,

Alors en effet la fonction Rec n'est surement pas nécéssaire, je n'ai fais que recopier sans bien comprendre ^^' ...

Et les :
var_dump($name, $prenom, etc.)
var_dump($_POST['name'], $_POST['prenom'], etc.)

me donne un nouveau messsage d'erreur. Avant j'avais :
"Vous devez d'abord envoyer le formulaire." comme dans le PhP...
du coups je me demande si ça ne pourrais pas venir des mes champs, j'ai surement mal nommé...?

Et peut être que j'ai mal positionné mes variable. J'ai tester dans la en-dessous des champs de données.

En tout cas merci @gandalfblanc.
Bonjour.

Je fais peut-être erreur mais je ne vois pas quand vous créez la variable $_POST['envoi'] dont vous testez l'existence.

Smiley smile
Comment fait-tu le lien entre ton fichier html et ton fichier php ?
Quels sont les messages d'erreur exactement ?

@zelena, bien vu.
Modifié par gandalfblanc (11 Jul 2017 - 14:00)
Smiley confused

Je suis un peu perdu
la variable $_POST['envoi'] est au dessus des champs du formulaire non?

Encore une fois je ne connais rien en PhP j'avance à taton.

Quand au messages d'erreurs ce sont "Parse error" quand j’introduis tes variables
upload/1499775382-66537-capture.jpg

Mais avec le code actuelle il me renvoie le message du formulaire non rempli...
upload/1499775619-66537-capture2.jpg
même en enlevant les valeurs REC_ et isset

Pas facile d'aider un newbies, j'ai appris le HTML / CSS cette année et par moi même...
Merci pour votre attention vraiment
Smiley sweatdrop En effet non... Smiley confused je n'avais pas changé
Mais je vais remedier à cela.

Sinon mon code actuel reste le même que mon premier poste ^^'

	
49 - // On va vérifier les variables et l'email ...
50-	$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email 51 - entré
52 -
53 -	if (($nom != '') && ($prenom != '') && ($email != '') && ($adress != '') && ($town != '') && ($postal != '') && ($birthday != '') && ($tel != '') && ($subject != ''))
 {

Modifié par Jolan69 (11 Jul 2017 - 14:53)
Smiley rolleyes
avec les changement j'ai une erreur ligne 38
upload/1499778974-66537-capture3.jpg

et voilà mon code
upload/1499779007-66537-capture4.jpg

Smiley confused
je suis perdu.... au secours merci
Il faut mettre des ; après les instructions sinon ça ne peut pas fonctionner.
Modifié par bzh (11 Jul 2017 - 15:31)
Merci @bzh

En effet je n'ai plus les messages d'erreurs si ce n'est celui-ci :
upload/1499780334-66537-capture2.jpg

29 - if (!isset($_POST['envoi']))
La variable Post, dois-je lui supprimer le préfixe isset? ou la répéter ailleurs comme le suggérais
@Zelena... si oui où?
ha ha j'avance... à reculons. nouveau message d'erreurs :
NULL NULL NULL NULL NULL NULL NULL NULL NULL string(7) "Jolan69" string(7) "Joachim" string(15) "jnjll@gmail.com" string(14) "3, kekni kkhiu" string(12) "San-fancisco" string(5) "69000" string(10) "22/05/1987" string(10) "0608050204" string(1) "B"

L'envoi du mail a échoué, veuillez réessayer.


Help please
Jolan69 a écrit :
ha ha j'avance... à reculons. nouveau message d'erreurs :
NULL NULL NULL NULL NULL NULL NULL NULL NULL string(7) "Jolan69" string(7) "Joachim" string(15) "jnjll@gmail.com" string(14) "3, kekni kkhiu" string(12) "San-fancisco" string(5) "69000" string(10) "22/05/1987" string(10) "0608050204" string(1) "B"

L'envoi du mail a échoué, veuillez réessayer.


Help please


Ok, on avance.
ça veut dire que tu récupères bien les données dans la variable superglobal $_POST.
Du coup pour moi, c'est ta fonction rec qui fonctionne pas ou de façon inattendu dans ta création de variable.

essai ça (tu les copies après la ligne de la création de la variable $subject):

$nom     = (isset($_POST['name']))     ? $_POST['name']     : '';
$prenom  = (isset($_POST['prenom']))  ? $_POST['prenom']  : '';


et dit nous ce que donne :

var_dump($nom, $prenom);
echo '<br>';
var_dump($_POST['name'],$_POST['prenom']);
Un pas de plus Smiley lol

merci @gandalfblanc, avec ta première solution j'obtiens le message en boîte sui me dis que le mail est bien envoyé!!
.... Mais rien sur la boîte mail Smiley bawling

Du coups il faut que je remplace les champs
$nom     = (isset($_POST['name']))     ? $_POST['name']     : '';

par
var_dump($nom, $prenom);
echo '<br>';
var_dump($_POST['name'],$_POST['prenom']);

??

En tout cas merci j'ai la tête qui gonfle mais de voir des progrès ça fais plaisir
Reflechie juste un peu,

si tu remplace cette ligne
$nom     = (isset($_POST['name']))     ? $_POST['name']     : '';

par
var_dump($nom, $prenom);

cela veut dire que tu "supprimes" l'assignation de $nom... de ce fait elle n'existe plus, donc tu auras forcement une erreur sur ton var_dump qui te diras que $nom n'existe pas.
c'est juste la base de la programmation.

Après je sais que tu n'a que 4 jours de dev... du coup avant de te lancer dans du code comme un bourrin ^^ je pense qu'il faudrait mieux apprendre les bases.
Modifié par JENCAL (11 Jul 2017 - 17:14)
Tu as mis
$tmp = explode(';', $cible);


c'est quoi $cible ? je le vois null part... où bien je suis aveugle...
Smiley confused
Merci, je me rend compte que c'est compliqué d'expliquer à un néophyte ^^

Le truc c'est que je n'ai pas le choix, je suis stagiaire et c'est le travail qu'on m'a assigné, la patronne compte sur moi...

upload/1499845073-66537-capture6.jpg

je vais donc le virer plutôt que bêtement recopié ^^ merci @Jencal
si tu supprimes $tmp tu vas avoir un soucis ici

foreach($tmp as $email_destinataire)
		{
			if (mail($email_destinataire, $objet, $message, $headers, $destination))
                @unlink($destination);
				$num_emails++;
		}


De manière générale, avant d'utiliser une variable, il faut la déclarer (donc la créer et lui donner une valeur).
Je vois que tu utilises dans la fonction mail de php la variable $message, mais où la déclares-tu ?

si tu fais un

var_dump($message);

avant le foreach tu as quoi comme retour à l'écran.
Modifié par gandalfblanc (12 Jul 2017 - 09:59)
Smiley sweatdrop

Je suis en train de lire des tutos sur les bases du PhP parce que là je nage... Comme disais @Jencal mieut vaux commencé par la première marche

@gandalfblanc en effet la suppression du tmp n'a pas été concluant mais je ne peut pas t'éclaire te dire... je vais poncer le tuto et après je comprendrais. Parce que au final ni $objet, $message, $headers, $destination ne sont déclarer je pense...

Après avec :
var_dump($message);


ça ne change pas grand chose sinon un message derrière la boîte de dialogue upload/1499847136-66537-capture7.jpg

Smiley eek
Pages :