Chris Trierweiler,
il y a 11 ans
j'ai plusieurs messages d'erreurs identiques Notice: Undefined index: pos in C:\wamp\www\classement\script_mails.php on line 15
Ch0c4,
il y a 11 ans
Ch0c4,
il y a 11 ans
Salut,
J'espère que c'est pas ton vrai nom
bref
Pourquoi tu veux une page php par email alors que tu peux envoyer un email en html tout simplement en remplacent des caractère spéciaux par les valeurs que tu veux.
Exemple:
Mon email en html:
<table>
<tr>
<td>Nom</td>
<td>Nombre de client</td>
<td>Prix par client</td>
</tr>
<tr>
<td>%NOM_COMM_BASE%</td>
<td>%NOMBRE_CLIENT_BASE%</td>
<td>%PRIX_CLIENT_BASE%</td>
</tr>
</table>
Mon script php qui va envoyer le mail
// je récupère mais info en base
$var = $mesVariablesEnBaseSousFormeDeTableau
$message = file_get_content('email.html')
$message = str_replace('%NOM_COMM_BASE%', $var['nomCommercial'], $message);
$message = str_replace('%NOMBRE_CLIENT_BASE%', $var['nombreClient'], $message);
$message = str_replace('%PRIX_CLIENT_BASE%', $var['prixClient'], $message);
$to = 'commerciaux@omg.com';
$subject = 'Tu es virée';
mail($to, $subject, $message);
Et voila le tour est joué tu as remplacé tes variable par les bonnes valeurs et tu as envoyé ton mail .
ps: le tableau c'est la vie pour l'écriture d'un mail
Chris Trierweiler,
il y a 11 ans
Oui c'est mon nom.....
Par contre si je procéde comme ça je n'aurais pas l'aspect graphique de ma page index.php
Chris Trierweiler,
il y a 11 ans
et je voudrais que avec un simple clic sa envoi le classement à tout les emails de ma bdd de mes commerciaux car si je veux rajouter un commercial il faudra que je tape dans le code pour rajouter l'email.
Chris Trierweiler,
il y a 11 ans
j'ai un exemple avec un centre de karting on a fait une course et nous avons reçu par email ceci
http://hpics.li/f0b8edb
Ch0c4,
il y a 11 ans
C'est exactement ce que je t'ai montré mais tu n'as peut être pas compris mon exemple je vais recommencer mais en plus clair
ta table commercial (c'est un exemple, je vais pas la deviner) commercials
id | Nom | email
1 | Roger | roger@maboite.com
2 | Bertrand | bertrand@maboite.com
3 | Michel | michel@maboite.com
Les info sur les commerciaux benefices
id | Benef | commerciaux\_id
1 | 100 | 1
2 | 50 | 2
3 | 60 | 3
Le template de l'email à envoyer (donc ta page index.php mais sans variable, sans condition et sans boucle sans balise php quoi)
<table>
<tr>
<td>Nom</td>
<td>Bénéfice</td>
</tr>
<tr>
<td>%NOM_COMM%</td>
<td>%BENEFICE_BASE%</td>
</tr>
</table>
Le script php qui va envoyé le mail
$db = mysqli..... // je me connecte à la base
$monSelect = 'SELECT * FROM benefices b , commercials c WHERE b.commerciaux\_id = c.id';
$resultat = mysqli_query($db, $monSelect);
while($var = mysqli_fetch_assoc($resultat))
{
$message = file_get_content('index.php')
$message = str_replace('%NOM_COMM_BASE%', $var['Nom'], $message);
$message = str_replace('%BENEFICE_BASE%', $var['Benef'], $message);
$to =$var['email']
$subject = 'Tu es virée';
mail($to, $subject, $message);
}
Donc la ça va envoyer un mail à tous les commerciaux enregistré en base avec le bénéfice de chacun
Chris Trierweiler,
il y a 11 ans
Merci
hm d'accord par contre le c.id il sert à quoi ? car actuellement ma base resemble a cela
id | pos | agences | nom | prenom | email | elec | humain |
1 | 5 | Nantes|Toto | Pierre | pt@domaine.fr | 46446|454846 |
elec et humain ce sont des prix.
Ch0c4,
il y a 11 ans
c'était une relation entre la table commercials et benfices mais si tout est dans une seule table par besoin de faire la relation
Chris Trierweiler,
il y a 11 ans
D'accord, par contre il faut configurer le smtp en local ?
Ch0c4,
il y a 11 ans
Si tu veux envoyer un mail, il est préférable
Chris Trierweiler,
il y a 11 ans
Merci, par contre j'ai une erreur: Fatal error: Call to undefined function file_get_content() in C:\wamp\www\classement\script_mails.php on line 9.
Chris Trierweiler,
il y a 11 ans
j'ai trouver pour l'erreur par contre il ne recupére pas les infos dans la BDD j'ai un message d'erreur.
Underscreen,
il y a 11 ans
Bonjour !
Prend le reflexe de nous écrire le message d'erreur car on ne peut pas le deviner !
Chris Trierweiler,
il y a 11 ans
pardon en effet Notice: Undefined index: agence in C:\wamp\www\classement\script_mails.php on line 11
j'ai un peu remplacer le code de départ de Ch0c4 mon code resemble à ça:
<?php
$bdd = new PDO('mysql:host=localhost;dbname=classement','root',' ');
$request = $bdd->query('SELECT * FROM ca');
while($var = $request->fetchAll(PDO::FETCH_ASSOC))
{
$message = file_get_contents('mails.html);
$message = str_replace(%POS%, $var['pos'], $message);
$message = str_replace(%NOM_AGENCE%, $var['agence'], $message);
$message = str_replace(%NOM_NOM%, $var['nom'], $message);
$message = str_replace(%NOM_PRENOM%, $var['prenom'], $message);
$message = str_replace(%CHIFFRE_HUMAIN%, $var['humain'], $message);
$message = str_replace(%CHIFFRE_ELEC%, $var['elec'], $message);
$message = str_replace(%TOTAL_CHIFFRE%, $var['elec']+$var['humain'], $message);
$to = $var['email'];
$subject = 'test';
mail($to, $subject, $message);
}
?>
Underscreen,
il y a 11 ans
Ch0c4,
il y a 11 ans
Tu as oublié un "'" dans file_get_contents
$message = file_get_contents('mails.html');
tu dois mettre en quote les textes
$message = str_replace('%NOM_NOM%', $var['nom'], $message);
et @Underscore pas dans ce cas la le str_replace remplace le message dans le 3eme paramêtre de la fonction
$message = 'mon texte %MAVAR% et mon autre texte %MAVAR2%';
echo $message; // mon texte %MAVAR% et mon autre texte %MAVAR2%
$message = str_replace('%MAVAR%', 'bonjour', $message);
echo $message; // mon texte bonjour et mon autre texte %MAVAR2%
$message = str_replace('%MAVAR2%', 'Salut', $message);
echo $message; // mon texte bonjour et mon autre texte Salut
Chris Trierweiler,
il y a 11 ans
Donc j'ai suivi vos 2 directives la dernière que j'ai faite est celle de underscrean mon code ressemble à cela
<?php
$bdd = new PDO('mysql:host=localhost;dbname=classement','root',' ');
$request = $bdd->query('SELECT * FROM ca');
while($var = $request->fetchAll(PDO::FETCH_ASSOC))
{
$message = file_get_contents('mails.html);
$message = str_replace(
array(%POS%, $var['pos']),
array(%NOM_AGENCE%, $var['agence']),
array(%NOM_NOM%, $var['nom']),
array(%NOM_PRENOM%, $var['prenom']),
array(%CHIFFRE_HUMAIN%, $var['humain']),
array(%CHIFFRE_ELEC%, $var['elec']),
array(%TOTAL_CHIFFRE%, $var['elec']+$var['humain']), $messages);
$to = $var['email'];
$subject = 'test';
mail($to, $subject, $message);
}
?>
j'obtiens une erreur différente Fatal error: Only variables can be passed by reference in C:\wamp\www\classement\script_mails.php on line 19
Ch0c4,
il y a 11 ans
N'écoute pas @Underscreen car il a tort (désolé mais c'est vrai) reprend le code précédent et rajoute les quotes aux endroit qui en manque
Chris Trierweiler,
il y a 11 ans
bon je test ta solution et je te dit si sa marche.
Underscreen,
il y a 11 ans
oui Choc4 je vois ce que tu veux dire et effectivement ça marche comme ça mais je trouve plus propre d'utiliser un tableau que de refaire des str_replace sur un message modifié.
Je n'ai pas tort car ma solution fonctionne, ceci dit elle ne règle pas le problème
L'erreur indique qu'index n'est pas défini
comme tableau par contre j'aurai plus fait ça en se basant sur les array
$message = str_replace(
array(%POS%, %NOM_AGENCE%, %NOM_NOM%, %NOM_PRENOM%, %CHIFFRE_HUMAIN%, %CHIFFRE_ELEC%, %TOTAL_CHIFFRE%),
array($var['pos'], $var['agence'], $var['nom'], $var['prenom'], $var['humain'], $var['elec'], $var['elec']+$var['humain']),
$messages);
Chris Trierweiler,
il y a 11 ans
<?php
$bdd = new PDO('mysql:host=localhost;dbname=classement','root',' ');
$request = $bdd->query('SELECT pos,agence,nom,prenom,humain,elec,humain,email FROM ca');
while($var = $request->fetchAll(PDO::FETCH_ASSOC))
{
$message = file_get_contents('mails.html');
$message = str_replace(%POS%, $var['pos'], $message);
$message = str_replace(%NOM_AGENCE%, $var['agence'], $message);
$message = str_replace(%NOM_NOM%, $var['nom'], $message);
$message = str_replace(%NOM_PRENOM%, $var['prenom'], $message);
$message = str_replace(%CHIFFRE_HUMAIN%, $var['humain'], $message);
$message = str_replace(%CHIFFRE_ELEC%, $var['elec'], $message);
$message = str_replace(%TOTAL_CHIFFRE%, $var['elec']+$var['humain'], $message);
$to = $var['email'];
$subject = 'test';
mail($to, $subject, $message);
}
?>
Underscreen,
il y a 11 ans
il dit qu'il ne connait pas l'index pos donc qu'il ne le vois pas dans ta table
Sans envoie de mail tu peux juste faire un affichage des variable que tu récupère?
echo $var['pos']; par exemple
Chris Trierweiler,
il y a 11 ans
c'est au niveau du while que sa pose soucis car quand je sors le $var = $request->fetchAll(PDO::FETCH_ASSOC) j'ai le message d'erreur de echo $var['pos']; le reste apparement sa ce connecte.
Chris Trierweiler,
il y a 11 ans
<?php
$bdd = new PDO('mysql:host=localhost;dbname=classement','root',' ');
$request = $bdd->query('SELECT pos,agence,nom,prenom,humain,elec,humain,email FROM ca');
$var = $request->fetchAll(PDO::FETCH_ASSOC);
while($var = $request->fetchAll(PDO::FETCH_ASSOC))
{
$message = file_get_contents('mails.html');
$message = str_replace(%POS%, $var['pos'], $message);
$message = str_replace(%NOM_AGENCE%, $var['agence'], $message);
$message = str_replace(%NOM_NOM%, $var['nom'], $message);
$message = str_replace(%NOM_PRENOM%, $var['prenom'], $message);
$message = str_replace(%CHIFFRE_HUMAIN%, $var['humain'], $message);
$message = str_replace(%CHIFFRE_ELEC%, $var['elec'], $message);
$message = str_replace(%TOTAL_CHIFFRE%, $var['elec']+$var['humain'], $message);
$to = $var['email'];
$subject = 'test';
mail($to, $subject, $message);
}
?>
si je procéde comme cela je n'ai pas de message d'erreur.