Récupérer texte pour envoi par mail

Récupérer texte pour envoi par mail - PHP - Programmation

Marsh Posté le 31-07-2008 à 18:42:00    

Bonjour à tous,
 
j'ai envie de développer un service web sur la base d'une plate-forme Wordpress en y ajoutant des possibilités supplémentaires pour les visiteurs.
Je voudrais mettre en place en bas de chaque billet un champs pour envoyer le contenu textuel du billet par mail a l'adresse que le lecteur entrera dans ce champs.
 
L'adresse mail expéditrice sera celle du site du genre "admin@nomdedomaine.com" est sera prédéfinie à l'avance et le contenu du message aussi car se sera le texte du billet.
 
Étant très novice en php je m'en remet à vous, si vous avez des directions a me faire suivre je vous en remercie.
 
J'aimerais aussi pouvoir faire la même chose sur twitter ou autre service sociaux mais se serait abusé non ? :p
 
Merci par avance
Cordialement

Reply

Marsh Posté le 31-07-2008 à 18:42:00   

Reply

Marsh Posté le 31-07-2008 à 19:03:39    

Hé bien à première vue rien de dramatique.
 
Grosso-modo :
1. Tu trouves la page dans wordpress qui affiche les articles
2. Tu vas tout en bas et tu ajoute un formulaire (<form method='POST' action='envoi_article_par_email.php'></form> ) avec dedans une entrée de type texte (<input name='email' type='text' /> ), une entrée cachée (<input name='article_id' type='hidden' /> ) et un bouton d'envoi (<input type='submit' /> )
3. Tu créés le fichier envoi_article_par_email.php
4. Tu ouvres ce fichier
5. Dans ce fichier tu récupères la valeur de ton entrée texte (c'est à dire l'e-mail, avec $_POST['email']) et la valeur de ton champ caché (c'est à dire l'identifiant de l'article, avec $_POST['article_id']).
6. Tu récupère l'article via l'id (si tu ne sais pas comment faire tu peux carrément balancer l'article dans le champ caché. C'est moche, mais à la guerre comme à la guerre).
7. Tu envoies ton e-mail


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 31-07-2008 à 19:08:57    

Ok je vois ça.
 
Merci beaucoup

Reply

Marsh Posté le 31-07-2008 à 20:06:05    

bon j'ai compris le principe mais j'arrive pas a le mettre en place, je suis vraiment mauvais...

Reply

Marsh Posté le 01-08-2008 à 09:42:03    

Sur les 7 points de CyberDenix, qu'est ce que tu n'arrives pas à mettre en place?


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
Reply

Marsh Posté le 01-08-2008 à 12:29:42    

le 6 et 7, je n'arrive pas a récupérer l'article pour l'envoyer

Reply

Marsh Posté le 01-08-2008 à 14:52:42    

sur envoi_article_par_email, tu ajoutes:

Code :
  1. $idarticle = isset( $_POST['id_article'] ) ? $_POST['id_article] : '';
  2. $req = "select * from article where id_article = ".$idarticle;
  3. $resultat = mysql_query($req);
  4. ...


 
bien sur, il faut éviter de mettre * en précisant les champs qui t'intéressent. Apres, tu les récupères ($infoarticle = $result['nom_du_champ'] par exemple) et tu n'as plus qu'a te servir de la fonction mail() de php


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
Reply

Marsh Posté le 01-08-2008 à 14:58:57    

Tout à fait, le plus difficile étant de savoir quels sont les champs et tables SQL utilisées par WordPress.  
 
Normallement tu devrais avoir cette information dans le point 1., avec la page qui affiche les articles WordPress. Ben oui, pour afficher les articles il faut accéder à la base de données. Je te conseille donc de scruter le code de cette page attentivement afin de récupérer la partie qui t'intéresse, c'est à dire la sélection de l'article en base de données.
 
Après, l'envoi d'un e-mail, c'est simple comme bonjour.


Message édité par CyberDenix le 01-08-2008 à 14:59:21

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 01-08-2008 à 17:09:00    

cette page à le code suivant :

Citation :


<div class="post-date"><span class="month"><?php the_time('F')?></span><br /><span class="dayofmonth"><?php the_time('j')?></span></div>
 <h3 class="h1" id="post-<?php the_ID(); ?>"><a href="<?php the_permalink() ?>" rel="bookmark" title="Lien Permanent vers <?php the_title(); ?>"><?php the_title(); ?></a></h3>
 <div class="post-meta-top">
 <div class="auth"><span>Posté par <strong><?php the_author_posts_link(); ?></strong> @ <?php the_time('H:i'); ?></span></div>
 </div>
   
 <div class="clearboth"></div>  
 <!--content with more link-->
 <?php the_content('<p>Lire la suite ce cet article »</p>'); ?>


 
Il faut mettre "the_ID()" dans une variable ?
 ou "the_content()" ?
 

Reply

Marsh Posté le 01-08-2008 à 18:48:30    

Si tu veux prendre l'id, il te faudra :
$hidden = 'post-'.the_ID(); // Regarde bien, ya 'post-' juste devant !
Mais tu auras besoin de savoir faire une sélection en base avec cet id.
 
Sinon tu prends
$hidden =  the_content(); // C'est crade mais t'es à peu près sûr de réussir


Message édité par CyberDenix le 01-08-2008 à 18:48:59

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 01-08-2008 à 18:48:30   

Reply

Marsh Posté le 01-08-2008 à 18:51:22    

j'aime bien le "C'est crade mais t'es à peu près sûr de réussir", tu me connais mal :)
 
Même avec les bon outils parfois j'ai beaucoup de mal, et la c'est le cas ^^

Reply

Marsh Posté le 01-08-2008 à 20:48:29    

Par contre quand je met $hidden =  the_content(); ça m'affiche le contenu .

Reply

Marsh Posté le 01-08-2008 à 21:02:45    

Bon je crois que je vais abandonner et trouver quelqu'un qui me le fasse complètement parce que la je patauge malgré  vos conseils, j'y arrive pas.
 
ça parait tellement simple mais le php et moi c'est une longue histoire.
 
Merci malgré tout de vous être penché dessus.

Reply

Marsh Posté le 03-08-2008 à 15:24:26    

Hum, il y a une solution :
 

Code :
  1. ob_start();                    // On va rediriger toutes sorties d'écran vers un tampon
  2. the_content();                 // Cette fonction fait des sorties d'écran
  3. $hidden = ob_get_contents();   // On récupère le contenu du tampon
  4. ob_end_clean();                // On vide le tampon
  5.  
  6. // Maintenant, on a le contenu de l'article dans $hidden :)


Message édité par CyberDenix le 03-08-2008 à 15:27:53

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 03-08-2008 à 15:30:10    

J'ai trouvé :  
 
dans ma page avec le formulaire :
 
<form method='POST' action='mail.php'>
<input name='email' type='text' size="40" />
<textarea name='content'><?php the_content();?></textarea><br />
<input type='submit' />
</form>

 
 
et dans ma page mail.php :
 
<?php
$_POST['email'];
$_POST['content'];
$mail = $_POST['email'];
$content = $_POST['content'];
 
$headers ='From: "moi"<adresse@fai.fr>'."\n";
$headers .='Content-Type: text/html; charset="utf-8"'."\n";  
 
    if(mail($mail, 'Sujet', $content, $headers))
     {
          echo 'Votre message est bien envoyé;';
     
     }
     else
     {
          echo 'Votre message n'est pas envoyé;';
   
     }
 
?>

 
et j'ai masqué le textarea avec le CSS parce que si je lui met type="hidden" bah il est pas hidden


Message édité par Mc canard le 03-08-2008 à 15:30:59
Reply

Marsh Posté le 04-08-2008 à 13:23:52    

Tu n'as pas suivi ce que j'ai décrit ci-dessus.
 
Essaye avec :

Code :
  1. $out = '';
  2. $out .= '<form method=\'POST\' action=\'mail.php\'>';
  3. $out .= '  <input name=\'email\' type=\'text\' value=\'\' />';
  4. ob_start();                    // On va rediriger toutes sorties d'écran vers un tampon
  5. the_content();                 // Cette fonction fait des sorties d'écran
  6. $content = ob_get_contents();   // On récupère le contenu du tampon
  7. ob_end_clean();                // On vide le tampon
  8. $out .= '  <input name=\'content\' type=\'hidden\' value=\''.$content.'\' />';
  9. $out .= '  <input type=\'submit\' value=\'Envoyer cet article par e-mail\' />';
  10. $out .= '</form>';
  11. echo $out;


Message édité par CyberDenix le 04-08-2008 à 14:05:11

---------------
Directeur Technique (CTO)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed