Problème Checkbox

Ludivine
Invité n'ayant pas de compte PHPfrance

05 déc. 2010, 17:16

Bonjour à tous.

Je rencontre un problème dans la création d'un formulaire de contact, avec checkbox.

Je suis débutante en PHP et après de multiples recherches, j'avoue être totalement perdue !

Voici mon formulaire :
<form name="formulaire" action="traitement.php" method="post" onSubmit="return verification()">
<table cellspacing="0">
<tr><td class="info">Votre nom : </td><td class="champ"><input name="nom" type="text" size="92" class="writein"></td></tr>
<tr>
  <td class="info">Votre Email :</td>
  <td class="champ">
<input name="email" type="text" size="92" class="writein"></td></tr>
  <td class="info">Sujet de votre message :</td>
  <td class="champ">
<input name="sujet" type="text" size="92" class="writein"></td></tr>
  <td class="info">Date de l'évènement :</td>
  <td class="champ">
<input name="date" type="text" size="92" class="writein"></td></tr>
  <td class="info">Lieu de l'évènement :</td>
  <td class="champ">
<input name="lieu" type="text" size="92" class="writein"></td></tr>
<tr><td class="subject">Photos souhaitées :</td><td class="liste">
<input name="photos[]" type="checkbox" value="Preparation de la mariee">Préparation de la mariée
<input name="photos[]" type="checkbox" value="Preparation des maries">Préparation des mariés
<input name="photos[]" type="checkbox" value="Mairie">Mairie
<input name="photos[]" type="checkbox" value="Eglise">Eglise<br>
<input name="photos[]" type="checkbox" value="Vin d'honneur">Vin d'honneur
<input name="photos[]" type="checkbox" value="Groupes">Groupes
<input name="photos[]" type="checkbox" value="Debut de soiree">Début de soirée
<input name="photos[]" type="checkbox" value="Soiree jusqu'à l'ouverture du bal">Soirée jusqu'à l'ouverture du bal<br>
<input name="photos[]" type="checkbox" value="Photos de couple pendant le mariage">Photos de couple pendant le mariage
<input name="photos[]" type="checkbox" value="Photos de couple avant ou apres le mariage">Photos de couple avant ou après le mariage</td></tr>
<tr><td class="contenu">Votre message</td><td class="contenant"><textarea name="texte" cols="80" rows="10" class="writein"></textarea></td></tr>
<tr id="nepasimprimer"><td class="lesboutons"><input name="annuler" type="reset" value="Annuler"></td><td>
<input name="soumettre" type="submit" value="Envoyer"></td></tr>
</form>
Et voici mon traitement.php :
<?

$adresse="<[email protected]>";

$from.="Nom : $nom\n \n";

$from.="Mail : $email\n \n";

$from.="Sujet : $sujet\n \n";

$from.="Date de l'énèvement : $date\n \n";

$from.="Lieu de l'évènement : $lieu\n \n";

$from.="Photos souhaitées : $photos\n \n";


$from.="Message : $texte\n";


if (mail($adresse,$texte,$from))

echo("<center><br><br><br><h2>Formulaire envoy&eacute; !</h2></center>");

else

echo("<center><br><br><br><h2>Probl&egrave;me &agrave; l'envoi du mail...d&eacute;sol&eacute; nous ne pouvons actuellement traiter votre demande</h2></font><br>Contactez nous plus <a href=\"mailto:<[email protected]>\">classiquement</a>");

?>
Mon problème : que puis-je faire pour recevoir par mail, les différentes propositions cochées ?
Que puis-je faire également pour avoir lors de la réception du mail, le nom de l'expediteur et le sujet du message en objet ? Car actuellement, lorsque je reçois un mail, je vois CGI-Mailer en expéditeur et le début du message, à la place de l'objet.

Merci d'avance pour votre aide qui me sera précieuse. :mrgreen:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 déc. 2010, 19:13

salut,

pour ce qui est du titre du message et de l'expéditeur il faut que tu vois avec les paramètre additionnel de l’entête du mail. Il y a des exemples dans la doc => http://www.php.net

pour ce qui est du code php :
- Il ne faut pas utiliser $photo mais $_POST['photo'] ceci est le paramètre par défaut de php et t'éviteras un problème lors de mise a jour du serveur (php s'oriente vers la suppression de l'auto déclaration des variables).
- Utilise un foreach pour traiter les résultats coché, ou simplement un implode pour l'affichage rapide
$from.= 'Photos souhaitées : '.implode(',',$_POST['photos'])."\r\n";

@+
Il en faut peu pour être heureux ......

Ludivine
Invité n'ayant pas de compte PHPfrance

05 déc. 2010, 21:13

Merci beaucoup ! Maintenant je reçois bien les résultats par mail :D

Pour l'entête du mail, j'ai bien essayé :
$headers = 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
Mais l'expéditeur est toujours : CGI-Mailer
Et l'objet du message est toujours le début du texte et non le sujet.

Encore merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 déc. 2010, 05:17

montre nous ton nouveau code pour que l'on puisse voir ou tu en es.

@+
Il en faut peu pour être heureux ......

Ludivine
Invité n'ayant pas de compte PHPfrance

06 déc. 2010, 10:17

Voici mon fichier traitement.php :
$headers  = 'MIME-Version: 1.0' . "\r\n";

$headers = 'Content-type: text/html; charset=UTF-8' . "\r\n"; 

$adresse="<[email protected]>";


$sujet=stripslashes(utf8_decode($_POST['sujet']));
$date=stripslashes(utf8_decode($_POST['date']));
$lieu=stripslashes(utf8_decode($_POST['lieu']));
$texte=stripslashes(utf8_decode($_POST['texte'])); 


$from.="Nom : $nom\n \n";

$from.="Mail : $email\n \n";

$from.="Sujet : $sujet\n \n";

$from.="Date de l'énèvement : $date\n \n";

$from.="Lieu de l'évènement : $lieu\n \n";

$from.= 'Photos souhaitées : '.implode(', ',$_POST['photos'])."\n\n";

$from.="Message : $texte\n";



if (mail($adresse,$texte,$from))

echo("<center><br><br><br><h2>Formulaire envoy&eacute; !</h2></center>");

else

echo("<center><br><br><br><h2>Probl&egrave;me &agrave; l'envoi du mail... D&eacute;sol&eacute; nous ne pouvons actuellement traiter votre demande.</h2></font><br>Contactez nous plus <a href=\"mailto:<[email protected]>\">classiquement</a>");




?>
Merci :D

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 déc. 2010, 00:40

tu n'utilise pas d’entête précis dans ton code la !
regarde l'exemple de la doc
<?php
// multiple recipients
$to  = '[email protected]' . ', '; // note the comma
$to .= '[email protected]';

// subject
$subject = 'Birthday Reminders for August';

// message
$message = '
<html>
<head>
  <title>Birthday Reminders for August</title>
</head>
<body>
  <p>Here are the birthdays upcoming in August!</p>
  <table>
    <tr>
      <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
    </tr>
    <tr>
      <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
    </tr>
    <tr>
      <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
    </tr>
  </table>
</body>
</html>
';

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Mary <[email protected]>, Kelly <[email protected]>' . "\r\n";
$headers .= 'From: Birthday Reminder <[email protected]>' . "\r\n";
$headers .= 'Cc: [email protected]' . "\r\n";
$headers .= 'Bcc: [email protected]' . "\r\n";

// Mail it
mail($to, $subject, $message, $headers);?>
avec ça tu a tous ce qu'il te faut !

@+
Il en faut peu pour être heureux ......

Ludivine
Invité n'ayant pas de compte PHPfrance

07 déc. 2010, 20:26

Merci beaucoup :mrgreen: