email sous condition

Eléphant du PHP | 297 Messages

20 avr. 2006, 05:32

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 ?

Eléphant du PHP | 451 Messages

20 avr. 2006, 07:40

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 ?
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphant du PHP | 297 Messages

20 avr. 2006, 15:14

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());

Eléphant du PHP | 451 Messages

20 avr. 2006, 15:18

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é ?
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphant du PHP | 353 Messages

20 avr. 2006, 15:19

oui il te suffit de le mettre apres le code d'insertion dans la base de donnée
.

Eléphant du PHP | 297 Messages

20 avr. 2006, 15:58

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

Eléphant du PHP | 297 Messages

20 avr. 2006, 21:08

arghhhhhh.... :?
je craque !!! j'essaye un peu tout mais rien a faire !!

Eléphanteau du PHP | 12 Messages

20 avr. 2006, 22:12

Salut,

Montre peut etre le code au dessus... ?

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

:roll:

Eléphant du PHP | 297 Messages

20 avr. 2006, 22:27

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));
}

Eléphanteau du PHP | 12 Messages

20 avr. 2006, 22:52

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...)

Eléphant du PHP | 451 Messages

20 avr. 2006, 23:45

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
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphant du PHP | 297 Messages

21 avr. 2006, 18:45

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: