Page 1 sur 1

email sous condition

Posté : 20 avr. 2006, 05:32
par Chile
Bonjour,
Je travaille mon site avec dreamweaver.
J'ai donc une page formulaire qui fait directement l'uptade sur ma base.
Le probleme est que je souhaite integrer une fonction email dans ce genre :
//L'envoi du mail
mail($email, $sujet, $msg, $Headers);
mais sans condition, l'email est envoyé a chaque fois qu'un voisiteur ouvre la page , sans necessairement remplir le formulaire ! :?

Comment puis je integrer ma fonction mail sur cette meme page ?

Re: email sous condition

Posté : 20 avr. 2006, 07:40
par jpaul
Je ne suis pas sur d'avoir bien compris : j'imagine que ton problème est que l'envoi du mail se fait même si le formulaire n'est pas rempli...

Pourquoi ne fais-tu pas l'envoi du mail au moment de l'update de la base ?

Au moment de la validation du formulaire, le script de traitement (qui enregistre dans la base) est appelé, c'est dans la séquence de code qui enregistre dans la base qu'il faut ajouter l'envoi du mail non ?

Posté : 20 avr. 2006, 15:14
par Chile
salut Jpaul,
Si c'est bien ca :wink:
Je voudrais bien faire l'envoie au moment de l'update, mais comment l'ecrire ?
ou dois je tout simplement l'inserer apres ca ?:
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  $updateSQL = sprintf("UPDATE clients_emails SET adresse=%s, clave=%s WHERE id=%s",
                       GetSQLValueString($_POST['adresse'], "text"),
                       GetSQLValueString($_POST['clave'], "text"),
                       GetSQLValueString($_POST['id'], "int"));

  mysql_select_db($database_Clients, $Clients);
  $Result1 = mysql_query($updateSQL, $Clients) or die(mysql_error());

Posté : 20 avr. 2006, 15:18
par jpaul
Effectivement, ça me semble assez propice comme endroit.
D'autant plus que j'ai bien vu l'ouverture d'un bloc après le if et qu'il ne semble pas être encore fermé à la dernière ligne que tu as jointe. C'est donc le bon bloc et si tu ajoutes ta fonction mail juste après le code affiché, ça devrait aller. Tu n'as pas essayé ?

Posté : 20 avr. 2006, 15:19
par Tictac
oui il te suffit de le mettre apres le code d'insertion dans la base de donnée
.

Posté : 20 avr. 2006, 15:58
par Chile
j'ai bien placé ma fonction mail comme ceci :
PHP: 
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) { 
  $updateSQL = sprintf("UPDATE clients_emails SET adresse=%s, clave=%s WHERE id=%s", 
                       GetSQLValueString($_POST['adresse'], "text"), 
                       GetSQLValueString($_POST['clave'], "text"), 
                       GetSQLValueString($_POST['id'], "int")); 

  mail($email, $sujet, $msg, $Headers); 

  mysql_select_db($database_Clients, $Clients); 
  $Result1 = mysql_query($updateSQL, $Clients) or die(mysql_error());  
avec mes variables un peu plus haut,
mais aucun envoie d'email se fait ! :cry:
merci de votre aide

Posté : 20 avr. 2006, 21:08
par Chile
arghhhhhh.... :?
je craque !!! j'essaye un peu tout mais rien a faire !!

Posté : 20 avr. 2006, 22:12
par FuR[i]OuS
Salut,

Montre peut etre le code au dessus... ?

Es tu sur que les variables passées dans mail() sont bonnes ?

:roll:

Posté : 20 avr. 2006, 22:27
par Chile
voici le script (partie haute)
pour les variables, elles sont bonnes je pense, car ca fonctionne si je pose sur une autre page)
<?php
// Les variables
$visiteur=$row_Recordset3['visiteur'];
$sujet=$row_Recordset4['sujet'];

$msg="<html>";
$msg .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><em>Question visiteur</em></strong><br />";
$msg .= "<br />";
$msg .= "<strong><em>Client:</em></strong>:<br />";
$msg .= "\t$visiteur\n<br />";
$msg .= "<strong><em>Sujet:</em></strong>:<br />";
$msg .= "\t$sujet\n<br />";
$msg .="<html>";

$email="[email protected]";
$sujet="Question";

$Headers  = "Content-Type:text/html;charset=iso-8859-1\n";
$Headers .= "Content-Transfer-Encoding: 8bit\n";

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  $updateSQL = sprintf("UPDATE clients_emails SET adresse=%s, clave=%s WHERE id=%s",
                       GetSQLValueString($_POST['adresse'], "text"),
                       GetSQLValueString($_POST['clave'], "text"),
                       GetSQLValueString($_POST['id'], "int"));

  mail($email, $sujet, $msg, $Headers);

  mysql_select_db($database_Clients, $Clients);
  $Result1 = mysql_query($updateSQL, $Clients) or die(mysql_error());

  $updateGoTo = "clientes_repmajemail.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
    $updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $updateGoTo));
}

Posté : 20 avr. 2006, 22:52
par FuR[i]OuS
essaye peut etre de commenter

Code : Tout sélectionner

header(sprintf("Location: %s", $updateGoTo));
peut etre que la redirection coupe l'envoi ? (si tu as testé ailleurs ton code et que ça marche l'erreur vient de ce qu'il y a autour...)

Posté : 20 avr. 2006, 23:45
par jpaul
A ta place, je ferais :
echo "<BR>Envoi mail":
echo "<BR>email=".$email;
echo "<BR>sujet=".$sujet;
echo "<BR>msg=".$msg;
echo "<BR>Headers=".$Headers;
  if (mail($email, $sujet, $msg, $Headers))
     {
     echo "<BR>Message accepté";
     }
     else
     {
     echo "<BR>Erreur à l'envoi";
     }
Pour vérifier

Posté : 21 avr. 2006, 18:45
par Chile
désolé la fonction email marchait tres bien !
par contre mon hebergeur(ovh), a qlqs problemes de saturations, et coupe par moment la fonction mail() :evil: