Formulaire email lié à db

Eléphanteau du PHP | 16 Messages

29 juin 2009, 21:33

Bonjour

Je suis entrain de réaliser un formulaire email en Php,
avec « nom », « prenom », « gsm_prive », « email », « message », « newsletter ».
Il y a aussi un menu déroulant en relation avec la db, qui permette de sélectionner un destinataire préalablement enregistré dans la db. Voici le code php :
<?php				
mysql_select_db($database_connect, $connect);
$result = mysql_query("SELECT id_ident, email, responsable_dossier FROM ident");
$menuDeroulant = '<SELECT>'; 
while ($row = mysql_fetch_object($result)) { 
    
      $menuDeroulant  .= '<OPTION value="'.$row->id_ident.'">'.$row->responsable_dossier.'</OPTION>'; 
}  

$menuDeroulant  .= '</SELECT>'; 

echo $menuDeroulant; 
?>
Jusque là pas de problème.
Lorsque le visiteur envoie l’email, je souhaite à la fois :
- enregistrer ses coordonnées,
- et envoyer l’email
J’ai essayé mais mon code ne fonctionne pas. Ca coince au niveau de l’envoi de l’email.
Voici le code :
<?php require_once('Connections/connect.php'); ?>
<?php
$colname_destinataire = "-1";
if (isset($_GET['id_ident'])) {
  $colname_destinataire = (get_magic_quotes_gpc()) ? $_GET['id_ident'] : addslashes($_GET['id_ident']);
}
mysql_select_db($database_connect, $connect);
$query_destinataire = sprintf("SELECT id_ident, email FROM ident WHERE id_ident = %s", $colname_destinataire);
$destinataire = mysql_query($query_destinataire, $connect) or die(mysql_error());
$row_destinataire = mysql_fetch_assoc($destinataire);
$totalRows_destinataire = mysql_num_rows($destinataire);

$email = "$destinataire";
$subject = "Formulaire réponse des critères de recherche pour le type de bien chez PUNCH ";
if($myFile=fopen("data.txt","r"))
{
while(!feof($myFile))
{
$myLine=fgets($myFile,255);
}
fclose($myFile);
}
while (list($key,$value) = each($HTTP_POST_VARS))
{
$message .="$key :  $value\n";
}
mail($email,$subject,$message,"from:demande $myLine");
?>
Comment dois-je faire pour déterminer l’email du destinataire, par rapport à l’id_ident sélectionné ?

Merci d’avance

Eléphanteau du PHP | 37 Messages

29 juin 2009, 23:21

et bien, dans ta requete SELECT, tu sélectionnes le mail de l'utilisateur souhaité, et tu t'en sert pour envoyer le mail...

après si ton soucis provient d'une erreur lors de l'exécution du script d'envoi, c'est qu'il faut configurer ton php.ini ;)

Eléphanteau du PHP | 16 Messages

29 juin 2009, 23:36

Je viens de retester!
J'ai ceci comme message d'erreur;

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampplite\htdocs\Site Punch\contact.php on line 27

alors je sais pas si c'est un problème dans mon code ou pas?
Une idée?

Eléphanteau du PHP | 37 Messages

30 juin 2009, 08:17

non, ton code à l'air de bien fonctionner, c'est la configuration de ton php.ini qui merde ;)

c'est pas bien compliqué à régler!!!
tu utilise wamp server?

Eléphanteau du PHP | 16 Messages

30 juin 2009, 09:58

j'ai installé xamp lite...
Qu'est ce que je dois faire comme modifications

Eléphanteau du PHP | 37 Messages

30 juin 2009, 10:08

alors, il faut que tu trouve le fichier php.ini
une fois que tu l'a trouvé, tu en fais une sauvegarde (sur ton bureau par exemple, en copier coller) de façon à toujours garder un original.
Ensuite tu édites le fichier php.ini (pas la sauvegarde) avec notepad par exemple, et tu recherches les lignes

Code : Tout sélectionner

[mail function] ; For Win32 only. SMTP = smtp.orange.fr smtp_port = 25 ; For Win32 only. sendmail_from = [email protected]
dans la partie "SMTP =" tu mets le smtp de ton fournisseur d'accès
tu trouveras les adresse SMTP à cette adresse --> http://www.commentcamarche.net/faq/suje ... cipaux-fai

ensuite, le port, tu laisse le 25

dans sendmail_from, tu rentre l'adresse avec laquelle tu souhaites envoyer le mail.

une fois cette modif faite, tu enregistres ton fichier php.ini, puis tu redémarres XAMPP, et la ça devrait fonctionner!!!

Eléphanteau du PHP | 16 Messages

30 juin 2009, 10:16

le prob c'est qu'il peut y avoir plusieurs personnes à qui le visiteur peut envoyer un email. Comment faire dans ce cas?
Je viens de démarrer mon ordi et depuis ce matin mon apache ne fonctionne plus :((

Eléphanteau du PHP | 37 Messages

30 juin 2009, 10:20

explique moi dans quelles conditions tu veux qu'un utilisateur envoi un mail?
la configuration du php.ini permet d'envoyer des mail au utilisateurs enregistrés dans la BD à partir d'une même adresse, l'adresse que tu aura pré-définis dans le php.ini avec le sendmail_from

ensuite dans ton traitement, il suffira que dans ta requête SELCET tu extrais le mail de l'utilisateur à qui tu souhaites envoyer le mail, et que tu le passe en paramètre à ta fonction mail()

si tu souhaites envoyer un mail à plusieurs personnes, tu fais une boucle for, ou while...

PS : question de choix sans doute, mais je conseille d'utiliser WAMPSERVER au lieu de XAMPP