Bonjour,
J'ai construis une galerie photo en PHP et j'ai inséré sous chaque photo une case radio 'Sélection' J'aimerai maintenant un bouton formulaire
qui envoie la liste des photos sélectionné (25 ni plus ni moins) par mail. Je n'ai pas vraiment idée de comment m'y prendre. Quelqu"un peut-il m'aider ? Merci.
Bonsoir,
(je vais partir du principe ou chaque image a un moyen de se différencier des autres en PHP un id présent en bdd par exemple)
il te suffirait donc de récuperer toute les images selectionner.
Ensuite je ferais un foreach pour attribuer a chaque image une variable.
($_POST)
Et après tu n'as plus qu'a faire un img src (si tu veux les affichers) dans le body de ta fonction mail.
Par exemple :
Si img_1 vaut 1 (quelle est selectionner) tu peux la traiter.
Je ne donne pas de code ou d'explications claire certe.
Je te donnes juste des pistes :D
Salut
une case radio 'Sélection'
un bouton formulaire qui envoie la liste des photos sélectionné
Attends,
je crois qu'il ne faut pas mettre un radio
ici,
mais plutôt un checkbox
Donne nous le code que tu as déjà fais aussi,
ça nous aide à comprendre là où tu coinces.
qui envoie la liste des photos sélectionné (25 ni plus ni moins)
On est obligé d'en sélectionner 25 ?
Autre chose :
je n'ai pas bien compris si tu veux "afficher" les images "dans le mail",
ou mettre les images en "pièces jointes" ?
Si c'est en "pièces jointes", c'est pas évident avec la fonction mail()
de PHP.
Peut-être que tu préférerai utiliser PHPMailer
.
Avec PHPMailer :
$email = new PHPMailer();
$email->Body = 'Un e-mail avec PHPMailer et une pièce jointe.';
$file_to_attach = 'path/to/file/image.jpg';
$email->AddAttachment( $file_to_attach , 'image.jpg' );
Avec mail() :
// clé aléatoire de limite
$boundary = md5(uniqid(microtime(), TRUE));
// Message
$msg = 'This is a multipart/mixed message.'."\r\n\r\n";
// Texte
$msg .= '--'.$boundary."\r\n";
$msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
$msg .= 'Content-transfer-encoding:8bit'."\r\n";
$msg .= 'Un message avec une pièce jointe.'."\r\n";
// Pièce jointe
$file_name = 'image.jpg';
if (file_exists($file_name))
{
$file_type = filetype($file_name);
$file_size = filesize($file_name);
$handle = fopen($file_name, 'r') or die('File '.$file_name.'can t be open');
$content = fread($handle, $file_size);
$content = chunk_split(base64_encode($content));
$f = fclose($handle);
$msg .= '--'.$boundary."\r\n";
$msg .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
$msg .= 'Content-transfer-encoding:base64'."\r\n";
$msg .= $content."\r\n";
}
Sources :
PHPMailer :
http://stackoverflow.com/questions/12301358/send-attachments-with-php-mail
mail() :
http://a-pellegrini.developpez.com/tutoriels/php/mail/#L2.4
(en particulier la partie "3.4 Mail simple avec pièce jointe")
Bonjour et merci de vos réponses. Voici le code, sachant que j'utilise un petit programme PHP du nom de Cube Portfolio pour construire mes galleries d'images. Le script de base est écrit en html, je l'ai re-construit en PHP pour construire dynamiquement la galerie. J'utilise des fonctions et classes maison pour récupérer différentes données EXIF et IPTC.
<?php
for ($i = 0; $i <= $numbfiles; $i++) {
echo ' <div class="cbp-item ' . $result->rscat($img[$i][url], $idp[id]) . '">' .
'<div class="cbp-caption">
<div class="cbp-caption-defaultWrap">
<a href="' . $img[$i][url] . '"' .
' class="cbp-lightbox"' .
' data-title="' . ($result->idp($img[$i][url], $idp[nom])) . ' | ' .
($result->idp($img[$i][url], $idp[description])) . ' | ' .
' TOUS DROITS RÉSERVÉS ' . ($result->idp($img[$i][url], $idp[©])) . '<br/>' .
($result->rc($result->idp($img[$i][url], $idp[id]))) . '">' .
'<img src="' . $img[$i][urlt] . '"' . ' title="' . ($result->idp($img[$i][url], $idp[nom])) . '"' . ' alt="' . $img[$i][alt] . '">' . '</a> <div id="compteur"></div>'
.
'</div>' .
'<div class="cbp-caption-activeWrap">
<div class="cbp-l-caption-alignCenter">
<div class="cbp-l-caption-body">
<div class="cbp-l-grid-projects-desc">' .
'<br/>' .
'<a class="gray2txt smalltxt" style="line-height:10px;"
href="' . $result->ruc($result->idp($img[$i][url], $idp[id])) . '">' .
($result->rc($result->idp($img[$i][url], $idp[id]))) . '</a>' .
'</div>
</div>
</div>
</div>
</div>
// Voici la partie que je souhaite développer. On ne doit pouvoir sélectionner que 25 images. Au-delà, un message d'erreur s\'affiche. Ensuite, j\'aimerai récupérer la liste des noms des fichiers sélectionné par mail ( basename($img[$i][url]) ) - Il faut donc un bouton d'envoie. Et pour compliquer le tout, seul un utilisateur avec privilège (mot de passe) pourra envoyer la sélection. Mot de passe au moment de l'envoie idéalement //
<form action="">
<div style="float:left;" class="checkbox">
<label>
<input type="checkbox" name="'.basename($img[$i][url]).'" id="selection"> Sélection
</label>
</div>
</form>
</div>';
} ?>