Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1746 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  appel d'une fonction dans une boucle ne se réalise qu'une fois

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

appel d'une fonction dans une boucle ne se réalise qu'une fois

n°1940116
begin
Posté le 12-11-2009 à 17:19:00  profilanswer
 

Bonjour,
 
Je crée en ce moment un formulaire d'envoi à plusieurs destinataires avec pièce jointe. J'ai utilisé la fonction ici:
http://www.phpcs.com/telecharger.aspx?ID=50607
Donc l'utilisateur se connecte sur www.monsite.com. Il remplit le formulaire d'envoi et les gens du groupe A comme destinataires.
Mon script récupère les mails dans la base de données dans la table groupe A et les stock dans un array; Puis il envoie les mails :  
 
 
foreach($deja as $mesmails){//envoyer un mail à chaque email présent dans le tableau
        if(strlen($mesmails)<1){
        //NE RIEN FAIRE
        }
        else{
    echo $mesmails;
         /*************************************************************************/
  include('fonctionMail.php');//c'est là que se trouve les fonctions que j'utilise
  $dest=$mesmails;
  $reponse=StripSlashes("Votre Message a &eacute;t&eacute; envoy&eacute; avec succ&egrave;" );
 
  $subject="{$_POST['subject']}";
 
  $msg="{$_POST['msg']}";
 
  $email="{$_POST['email']}";
 
  $NomFichier="{$_FILES["NomFichier"]}";
 
  $NomFichier_name="{$_FILES["NomFichier"]["name"]}";
 
  $email1="";
 
  $priority="1";
 
 
 
  $subject=StripSlashes($subject);
 
  $msg=StripSlashes($msg);
 
  $msg="Message :
 
  $msg";
 
  $m= new Mail; // create the mail
 
         $m->From( $email );
 
         $m->To( $dest);      
 
         $m->Subject( $subject );
 
         $m->Body( $msg);        // set the body
 
  if ($email1!="" ) {
 
          $m->Cc( $email1);
 
  }
 
          $m->Priority($priority) ;    
 
  if ($NomFichier_name!="" ) {
 
  //copy($NomFichier,"../upload/".$NomFichier_name);
 
  //chargement du fichier
 
  $uploaddir = '../upload/';
 
       $uploadfile = $uploaddir . basename($NomFichier_name);
 
  //copy($NomFichier,"../upload/".$NomFichier_name);
 
  //
 
  if (move_uploaded_file($_FILES['NomFichier']['tmp_name'], $uploadfile)) {
 
       echo "Le fichier est valide, et a &eacute;t&eacute; t&eacute;l&eacute;charg&eacute;
 
             avec succ&egrave;s. Voici plus d'informations :\n";
 
  } else {
 
       echo "Attaque potentielle par t&eacute;l&eacute;chargement de fichiers.
 
           Voici plus d'informations :\n";
 
  }
 
 
 
 
 
  //
 
  $m->Attach( "../upload/".$NomFichier_name, "application/octet-stream" );
 
  }
 
         $m->Send();  
 
      if ($NomFichier_name!="" ) {
 
  Unlink("../upload/".$NomFichier_name);   }  
 
  echo "$reponse";
 
   
 
  /**************************************************************************/    
 }
}
 
Le problème c'est que le mail est envoyé au premier mail trouvé puis cela s'arrête.
 
Auriez vous une idée? Merci pour votre aide.


Message édité par begin le 12-11-2009 à 17:19:59
mood
Publicité
Posté le 12-11-2009 à 17:19:00  profilanswer
 

n°1940134
stealth35
Posté le 12-11-2009 à 17:32:45  profilanswer
 

Code :
  1. //mon code


Message édité par stealth35 le 12-11-2009 à 17:32:54
n°1940137
begin
Posté le 12-11-2009 à 17:39:47  profilanswer
 

oups dsl, voici mon code
 

Code :
  1. foreach($deja as $mesmails){//envoyer un mail à chaque email présent dans le tableau
  2.         if(strlen($mesmails)<1){
  3.         //NE RIEN FAIRE
  4.         }
  5.         else{
  6.     echo $mesmails;
  7.          /*************************************************************************/
  8.   include('fonctionMail.php');//c'est là que se trouve les fonctions que j'utilise
  9.   $dest=$mesmails;
  10.   $reponse=StripSlashes("Votre Message a &eacute;t&eacute; envoy&eacute; avec succ&egrave;" );
  11.   $subject="{$_POST['subject']}";
  12.   $msg="{$_POST['msg']}";
  13.   $email="{$_POST['email']}";
  14.   $NomFichier="{$_FILES["NomFichier"]}";
  15.   $NomFichier_name="{$_FILES["NomFichier"]["name"]}";
  16.   $email1="";
  17.   $priority="1";
  18.   $subject=StripSlashes($subject);
  19.   $msg=StripSlashes($msg);
  20.   $msg="Message :
  21.   $msg";
  22.   $m= new Mail; // create the mail
  23.          $m->From( $email );
  24.          $m->To( $dest);     
  25.          $m->Subject( $subject );
  26.          $m->Body( $msg);        // set the body
  27.   if ($email1!="" ) {
  28.           $m->Cc( $email1);
  29.   }
  30.           $m->Priority($priority) ;   
  31.   if ($NomFichier_name!="" ) {
  32.   //copy($NomFichier,"../upload/".$NomFichier_name);
  33.   //chargement du fichier
  34.   $uploaddir = '../upload/';
  35.        $uploadfile = $uploaddir . basename($NomFichier_name);
  36.   //copy($NomFichier,"../upload/".$NomFichier_name);
  37.   //
  38.   if (move_uploaded_file($_FILES['NomFichier']['tmp_name'], $uploadfile)) {
  39.        echo "Le fichier est valide, et a &eacute;t&eacute; t&eacute;l&eacute;charg&eacute;
  40.              avec succ&egrave;s. Voici plus d'informations :\n";
  41.   } else {
  42.        echo "Attaque potentielle par t&eacute;l&eacute;chargement de fichiers.
  43.            Voici plus d'informations :\n";
  44.   }
  45.   //
  46.   $m->Attach( "../upload/".$NomFichier_name, "application/octet-stream" );
  47.   }
  48.          $m->Send(); 
  49.       if ($NomFichier_name!="" ) {
  50.   Unlink("../upload/".$NomFichier_name);   } 
  51.   echo "$reponse";
  52.  
  53.   /**************************************************************************/   
  54. }
  55. }

n°1940143
stealth35
Posté le 12-11-2009 à 17:52:47  profilanswer
 

ca dépend aussi comment est ta variable $deja au début
en plus dans ta boucle tu recharge le fichier a chaque fois,
 
tu devrai creer ton object Mail, avec tout dedan et dans ta boucle faire
 

Code :
  1. foreach($emails as $email)
  2. {
  3.    $mail->To($email);
  4.    $mail->Send();
  5. }

n°1940203
begin
Posté le 12-11-2009 à 21:42:44  profilanswer
 

Merci pour ton aide!
 
Pourrais-tu me dire à quel moment il y a une recharge de la page dans la boucle?
Je crois que c'est ça qui change tout. en effet, j'ai fait un echo des variables et j'ai vu qu'à la deuxième itération tous les $_POST sont vides.

n°1940219
stealth35
Posté le 12-11-2009 à 23:29:06  profilanswer
 

au moment ou tu fais move_uploaded_file, en plus cette fonction marche qu'un seul fois, puisque qu'elle surpime le fichier

n°1940259
rufo
Pas me confondre avec Lycos!
Posté le 13-11-2009 à 09:25:56  profilanswer
 

tu pourrais pas refaire l'indentation, parce que là, c'est pas facile à lire ton code.
Le premier truc que je vois, c'est que tu fais à chaque tour de boucle un include('fonctionMail.php'); ce qui sert à rien et pourrait être la cause de ton pb.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1940538
begin
Posté le 13-11-2009 à 15:44:58  profilanswer
 

Bjr,
 
Voici la seule solution que j'ai trouvé pour l'instant c'est mettre le unlink après la boucle foreach.
Vous pensez que ça a un incident?
 
Merci


Message édité par begin le 13-11-2009 à 15:45:13
n°1940567
rufo
Pas me confondre avec Lycos!
Posté le 13-11-2009 à 16:04:51  profilanswer
 

non, la bonne solution c'est de faire ce que t'as dit stealth35 : tu prépare le mail et son contenu en dehors de la boucle et après tu fais un boucle sur les adresses mails pour l'envoi


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  appel d'une fonction dans une boucle ne se réalise qu'une fois

 

Sujets relatifs
PHP5 / Serveur IIS : appel JAVA (chainage d'appel surcharge operator
arbre binaire/fonction recursif/lecture fichierlecture d'un flv (random)
lecture d'un .flv (fonction random)lecteur video + fonction random
Conditions en fonction de l'heure en PHP[RESOLU]Requête SQL: Afficher Gratuit/Payant en une seule fois
[SOAP]Appel d'une fonction depuis un client de web service 
Plus de sujets relatifs à : appel d'une fonction dans une boucle ne se réalise qu'une fois


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR