begin process at 2012 05 31 18:47:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Divers

 > 

Urgent, le retour !!!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Urgent, le retour !!!

samedi 5 novembre 2005 à 13:30:44 | Urgent, le retour !!!

mitchbuck

Bonjour à tous !

Bon alors, je sais que j'ai fait marré la galerie avec mon premier pbl de "mail bombing", je vais encore en faire rire d'autres avec mon second pbl : je vais détailler pour que tout le monde comprenne.
Je propose aux internautes de s'inscrire à une newsletter : à ce moment là, je leur demande pour quel type de motos ils souhaitent être informés sur l'arrivée de nouvelles annonces. Je met les adresses mail dans une table "newsletter" ainsi que l'id du type de motos qui les intéressent.

Toutes les semaines (je ne sais pas encore quel jour je ferais ça), je vais envoyer un mail au format html à ceux qui sont inscrits. Je souhaiterais qu'ils reçoivent un mail personnalisé, style lorsqu'on s'inscrit sur un site d'emploi et qu'on reçoit les offres d'emploi correspondant à notre secteur d'activité. Là ils doivent recevoir les annonces de motos uniquement pour le type de motos pour lesquelles ils se sont inscrits.

Bon, jusque là je pense que vous avez compris.

Pour cela, j'utilise (je ne sais pas si c'est la meilleure solution) la fonction mail(). Voilà un bout de code (mais c'est pas propre, no comment !!!)

//---- Connexion à la base ------------------

<?php require_once('../../Connections/motoConnexion.php');
mysql_select_db($database_motoConnexion, $motoConnexion);

 //--- Là je récupère les emails, nom, prénoms et id des types de motos ---

$query_liste_news = "SELECT newsletter.idnewsletter, newsletter.email, newsletter.nom, newsletter.prenom, newsletter.idmoto, moto.nommoto FROM newsletter, motoWHERE moto.idmoto = newsletter.idmoto";
$liste_news = mysql_query($query_liste_news, $motoConnexion) or die(mysql_error());
$row_liste_news = mysql_fetch_assoc($liste_news);
$totalRows_liste_news = mysql_num_rows($liste_news);

//---- là je sais que c'est pas le bon endroit pour incrémenter mes adresses mail mais j'ai essayé ailleurs et on a vu le résultat...lol----------------

$i=0;
$email = mysql_result($liste_news, $i, "newsletter.email");

//------ là je récupère la date du jour --------------
$date = date("d/m/y");
?>

//------- là je commence ma boucle : tant que j’ai des adresses mails dans ma table «  newsletter », j’envoie des mails ------------

<?php do { ?>
<?

//---------- je récupère le nom, le prénom du destinataire du mail ----------------
$prenom = $row_liste_news['prenom'];
$nom = $row_liste_news['nom'];

//----------- je fais un test sur l’id moto --------------

// -------- si l’id moto est égal à 0 alors j’affecte le texte « Toutes catégories » à la variable $categorie et je fais un select pour récupérer les annonces de toutes catégories -----------


 if ($row_liste_news['idmoto']==0)
 {
  $categorie ="TOUTES CATEGORIES";
  $query_listeannonces = sprintf("SELECT annonce.titrean, annonce.idan, annonce.prixan, legal.envoinews FROM annonce, legal WHERE annonce.datean > legal.envoinews");
 }

// ---------- sinon je fais un select des annonces dont l’id moto est égal à celui de la table newsletter (choix du destinataire) ------------

 else
 {
  $categorie = $row_liste_news['nommoto'];
  $idmoto = $row_liste_news['idmoto'];
  $query_listeannonces = sprintf("SELECT annonce.titrean, annonce.idan, annonce.prixan, legal.envoinews FROM annonce, legal WHERE annonce.idmoto = '$idmoto'");
 } 

// ---------- là je récupère les résultats---------------

$listeannonces = mysql_query($query_listeannonces, $motoConnexion) or die(mysql_error());
$row_listeannonces = mysql_fetch_assoc($listeannonces);
$totalRows_listeannonces = mysql_num_rows($listeannonces);  

//------------- là j’indique les paramètres du mail----------------

// liste des destinataires du message
$adresse=$email;

// titre du message : zone sujet
$sujet="Les offres Motos ";

// contenu du message
$corps="
<HTML>
…………….
</HTML>
";

// Création de l'entête du message
// cette entete contient l'email de l'expéditeur ainsi que l'email pour la réponse.
$entete="Content-type:text/html\nFrom:contact@mondomaine.com\r\nReply-To:
contact@mondomaine.com";

// envoi du mail
mail ($adresse,$sujet,$corps,$entete);
?>

//-------- Ma boucle tant que ------------
<?php } while ($row_liste_news = mysql_fetch_assoc($liste_news)); ?>



MON PBL : là où je coince, c'est non seulement pour incrémenter les adresses mails, pour que ça envoie à chaque adresse email de ma table newsletter, mais j'aimerais (utopique ?) qu'ils aient chacun un mail personnalisé : je n'arrive pas à mettre une boucle dans le corps du mail (eh oui ! si y'a plusieurs annonces !!!). Bref, je suis dans la panade !!!
Toute aide ne sera en aucun cas superflue !!Merci !!!

samedi 5 novembre 2005 à 14:00:36 | Re : Urgent, le retour !!!

J_G

Re-salut !

"Toute aide ne sera en aucun cas superflue"
Alors je vais répondre...


Ton code est bien commenté, merci.
Perso, j'aurais fait comme ça : (allons y par étape)

/* 1 - Tu veux faire deux boucles imbriquées : */

// une boucle pour chacun des mail à envoyer
for( $i=0; $i<$I; $i++) {
  // une boucle pour consituer chaque mail à envoyer
  for( $j=0; $i<$J; $j++) {
  }
  // C'est ici que tu envoi le mail
  mailBombMe();
}


/* 2 - Alors il faut récupérer les info du nombre de mail à créer
// je met des noms fictifs
$query =
"SELECT
    addresseMail,
    nomDestinataire,
    ...,
    categorieMoto,
FROM 'newsletter'
WHERE ...?...;";

// je passe outre la gestion des erreurs
$res = mysql_query($query);
$I = mysql_num_rows($res); // le nombre de mail à envoyer
$data = mysql_fetch_assoc($res); //les info pour chaque mail
$catMoto = $data['categorieMoto']; // pour exemple


/* 3 - pour chaque mail, tu récupère les info qui doivent le constituer
// je met des noms fictifs
$query =
"SELECT
    nomMoto,
    prixMoto,
    ...
FROM 'tableDesAnnonces'
WHERE ...?...;";

// je passe outre la gestion des erreurs
$res = mysql_query($query);
$J = mysql_num_rows($res); // le nombre d'anonce à coller dans le mail
$data = mysql_fetch_assoc($res); //les info pour chaque annonce




Après... tu remet tout dans l'ordre :

/* etape 2 */
$I = ...

/* etape 1 */
for($i ...
   echo '<html>...'; // comence un nouveau mail
  
   /* etape 3 */
  $J = ...
  for($j...
     echo 'annonce ...'; // ecrit la liste des anonces du mail
  }
 
  echo '...</html>'; // fini le mail
 
  mail(); // envoi le mail
}
    
  

  
Est-ce suffisemment clair ?
samedi 5 novembre 2005 à 14:02:45 | Re : Urgent, le retour !!!

J_G

Etape 3 :

$query =
"SELECT
    nomMoto,
    prixMoto,
    ...
FROM 'tableDesAnnonces'
WHERE categorieMoto='$datMoto' AND ...?...;";
samedi 5 novembre 2005 à 17:23:01 | Re : Urgent, le retour !!!

mitchbuck

Ca m'a l'air pas mal ton code mais dans le corps du mail, je ne peux pas mettre de code php hormis des variables si ?

Je veux dire par là que le corps du mail commence comme ça :
$corps ="
<html>...<html>";

Mais entre les guillemets, je ne mets pas de guillemets nulle part (ni pour les images, exemple : src=http://www.mondomaine.com/images/image.gif ,...). J'arrive juste à mettre des variables php. Mais si je veux mettre une itération FOR ou WHILE bah il va me l'interpréter comme du texte...c'est un peu ça aussi mon pbl...

Est-ce que je me trompe ? Parce que pour ton script, tu mets une boucle (celle pour la liste des annonces) entre les guillements de la variable $corps, non ??

samedi 5 novembre 2005 à 17:31:54 | Re : Urgent, le retour !!!

FhX

Pas du tout, tu peux faire une boucle dans un contenu de mail. Mais tu n'as pas compris comment ca marchait.

Quand tu envoies le mail, tu envois une version HTML de ton mail. Tu peux y inclure un script PHP si tu veux mais qui sera interprété coté serveur AVANT l'envoi du mail !
Un peu comme quand tu utilises ton navigateur. Tu vois la partie HTML (le résultat), mais tu ne vois pas le traitement en PHP derrière.
Pour un mail c'est pareil ! Si tu veux faire un contenu genre dynamique dans un mail, suffit de faire comme d'hab :



$sql = "SELECT ....";
$query = mysql_query($sql);
 while ( $data = mysql_fetch_array($query) ) {
   $contenu = 'Youpiiiiii';
   $contenu .= $data['contenu'];
   $contenu .= '<br /> Meuhhhhh';
   mail ( 'adresse@email.com','sujet',$contenu,'headers');
 }

C'est tout bète hein :)

samedi 5 novembre 2005 à 17:37:15 | Re : Urgent, le retour !!!

mitchbuck

ok je comprend. Derniere petite question dû à mon manque de connaissance : si je veux afficher un tableau, c'est la fonction  mysql_fetch_array(), c ça nan ?
J'arrive pas trop à gérer cette fonction, si tu pouvais me dire 2 ou 3 mots dessus, merci beaucoup pour ton aide !!!


samedi 5 novembre 2005 à 17:55:29 | Re : Urgent, le retour !!!

J_G

Réponse acceptée !
nonononononon,
la fonction mysql_fecth_array te prend le premiere (prochaine) ligne du resultat de ta requete SQL et la transforme en un tableau PHP

Un tableau PHP... ça ne s'affiche pas. C'est un type de donnée, une structure pour manipuler des données.
genre :
$a = array(a,b,c);
echo $a[0]; // a
echo $a[2]; // c

en HTML, on fait des tableau comme ça:

<table>
  <tr> // nouvelle ligne
    <td> // nouvelle case
    </td>
  </tr>
  ...
</table>


donc pour afficher un tableau PHP, il faut formatter les info qu'il contient en HTML
Par exemple :
<table>
  <tr>
    <td>
<?php echo $a[0]; ?>
    </td>
  </tr>
  <tr>
    <td>
<?php echo $a[1]; ?>
    </td>
  </tr>
  <tr>
    <td>
<?php echo $a[2]; ?>
    </td>
  </tr>
</table>

Bon là c'est un exemple tout pourri, mais le principe y'est...



PS :

PHP et HTML s'emmèle avec joie !!!

html
html
html
html
<?php
php
php
php
?>
html
html
<?php php ?>
html
html
html

le tout s'en aucun problème...



Cette discussion est classée dans : mail, mysql, liste, news, newsletter


Répondre à ce message

Sujets en rapport avec ce message

extraire mail d' une liste dans mysql [ par Joleroy ] Bonjour,J' ai une table mysql comme ceci:-------------------------------------------------------- nom  - mails                   & liste deroulantes avec base de donnée mysql [ par El_Catalan_Francesco ] Bonjour a tous, voila je tente de realiser un site la et j'aimerais savoir comment faire pour afficher sous liste déroulantes cette requete: SELECT 'u Mettre un lien avec la fonction mail() [ par Monico9385 ] Bonjour tout le monde, je créé une newsletter pour mon site, et j'aimerai qu'à la fin du message il y ait un lien pour une éventuelle désinscription, E-mail de newsletter est considerer comme spam [ par elmekki ] Bonsoir,j'ai integré un newsletter dans mon site web et losrqueje fais des tests , je vois qu'il considere mon email de newsletter comme spam, savez v Placement de news [ par Anthotill ] Bonjour à tous !J'ai une page contenant des articles, et je souhaiterais que ces articles soient affiché par "ID" du plus grand au plus petit, a chaqu Probleme de récupération de valeur d'une liste déroulante... [ par maiatzky ] voila, je n'arrive pas à récupérer la valeur de ma liste déroulante ...PAGE DE SELECTION D'ADRESSE DANS LA LISTE: <H1&g Alimentation d'une liste déroulante via Mysql [ par Eric25 ] Bonjour, Mon code est tout simple et pourtant je n'arrive pas a trouver ce qui cloche . Je souhaite alimenter une liste déroulante à travers une requê problème dans un formulaire d'envoi de mail avec identification [ par Broack Dincht ] bonjour à tous et toutesj'ai un blème avec un code php.J'ai fais des codes ayant pour but d'identifier une parsonne afin de lui permettre d'envoyer un PHP/MySQL : liste déroulante dynamique [ par Suru_Verbal ] Bonjour à tous !Je réalise un petit projet en PHP avec une Base de Données MySQL.J'utilise des formulaires et je newsletter [ par simon0000 ] salut tous le mondecomment envoyer un e-mail en html a tous les e-mail d'un fichier textmerci


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales