Page 1 sur 1

Aide création script PHP

Posté : 09 juil. 2016, 18:48
par Shifting
Bonjour,

Je viens vers vous pour m'aider à terminer un script php, je ne connais pas du tout le php ou du moins je commence à travailler dessus depuis 1 semaine. Le but de ce script est de s'activer tous les jours (via tâche CRON) et de regarder s'il y a un anniversaire parmi une liste de personne d'une base de donnée MySQL. Si oui, il envoie un mail à la personne concernée.

Pour l'instant j'en suis là, j'aimerai votre aide pour savoir s'il n'y a pas d'erreur et ainsi le terminer.
<?php

$jour = date('d');
$mois = date('m');
	
// Déclaration des paramètres de connexion
$host = localhost;
$user = ;
$bdd = ;
$passwd  = ;
?>


<?php
// Connexion au serveur
mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur:" . mysql_error());
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees: " . mysql_error());

?>


<?php 

$sql = "SELECT nom, prenom, date_anniv from Anniversaire WHERE MONTH(date_anniv) = $mois AND DAY(date_anniv) = $jour";
while ($donnees = mysql_fetch_assoc($retour)) 

//Envoi Mail
$sujet = 'Bon anniversaire';
$message = "Bonjour, Ceci est un test";
$destinataire = '<[email protected]>';
$headers = "From: <[email protected]>\n";


if(mail($sujet, $message, $destinataire, $headers))
{
        echo "L'email a bien été envoyé.";
}
else
{
        echo "Une erreur s'est produite lors de l'envois de l'email.";
}

?>

Re: Aide création script PHP

Posté : 09 juil. 2016, 22:48
par Agent5acad27
À part les données de connexion vers la base de donnée qui sont manquantes, je ne vois pas d'erreur,

Agent5acad27

Re: Aide création script PHP

Posté : 09 juil. 2016, 23:27
par or 1
un while sans { et }

Re: Aide création script PHP

Posté : 09 juil. 2016, 23:57
par Shifting
J'ai bien ajouté les deux signes pourtant quand je lance le fichier, le serveur me renvoie un message d'erreur : Parse error: syntax error, unexpected '}' in ....... on line 28

Les données de connexion sont enlevées volontairement..
<?php

$jour = date('d');
$mois = date('m');
	
// Déclaration des paramètres de connexion
$host = localhost;
$user = ;
$bdd = ;
$passwd  = ;
?>


<?php
// Connexion au serveur
mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur:" . mysql_error());
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees: " . mysql_error());

?>


<?php 

$sql = "SELECT nom, prenom, date_anniv from Anniversaire WHERE MONTH(date_anniv) = $mois AND DAY(date_anniv) = $jour";

{
	while ($donnees = mysql_fetch_assoc($retour)) 
}

//Envoi Mail
$sujet = 'Bon anniversaire';
$message = "Bonjour, Ceci est un test";
$destinataire = '<[email protected]>';
$headers = "From: <[email protected]>\n";


if(mail($sujet, $message, $destinataire, $headers))
{
        echo "L'email a bien été envoyé.";
}
else
{
        echo "Une erreur s'est produite lors de l'envois de l'email.";
}

?>

Re: Aide création script PHP

Posté : 10 juil. 2016, 15:13
par Shifting
Après quelques améliorations en travaillant dessus, je suis bloqué ici car j'ai une erreur : "Fatal error: Call to a member function query() on a non-object in ... on line 24"
Une idée ?
<?php

$jour = date('d');
$mois = date('m');
	
// Déclaration des paramètres de connexion
$host = localhost;
$user = ;
$bdd = ;
$passwd  = ;
?>


<?php
// Connexion au serveur
mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur:" . mysql_error());
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees: " . mysql_error());

?>


<?php 

$reponse = $bdd->query('SELECT nom, prenom, email FROM Anniversaire WHERE MONTH(date_anniv) = $mois AND DAY(date_anniv) = $jour');

// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())

{
echo $donnees['nom'];
}

{
//Envoi Mail
$sujet = 'Bon anniversaire';
$message = "Bonjour, Ceci est un test";
$destinataire = '<[email protected]>';
}


if(mail($sujet, $message, $destinataire, $headers))
{
        echo "L'email a bien été envoyé.";
}
else
{
        echo "Une erreur s'est produite lors de l'envois de l'email.";
}

?>

Re: Aide création script PHP

Posté : 11 juil. 2016, 13:00
par moogli
bonjour,

il pourrait être intéressant de s’intéresser à la syntaxe de php ;) http://php.net/while
Actuellement ton code devrait indiquer pas mal d'erreur, notamment de variable inexistante.

il te faut donc placer correctement les accolades.
Actuellement ton code envoi un mail à '<[email protected]>' : ce qui je pense n'est pas le but recherché ;)


Tu sembles avoir mélanger plusieurs morceau de code pris à droite et à gauche sur le net sans savoir quoi en faire.
ton code actuel ne peux pas fonctionner parce qu'il ne compile pas ligne 27 (environ, c'est la ligne du query).
Donc
- Utilise l'extension mysqli plutôt que l'extension mysql qui est supprimer des dernières versions (+ performance, sécurité etc.).
- Les deux de bouts de dates en php sont totalement inutiles tout peux être fait en SQL.
- La variable headers n'est pas définie
- l'envoi d'email doit être fait dans le while et non en dehors.

Voilà a quoi peu ressembler ton code.
<?php
// Déclaration des paramètres de connexion
$host = localhost;
$user = '';
$bdd = '';
$passwd = '';

// Connexion au serveur
$mysqli = new mysqli($host, $user, $passwd, $bdd);
if ($mysqli->connect_error) {
    die('Erreur de connexion ('.$mysqli->connect_errno.') '.$mysqli->connect_error);
}

$result = $bdd->query('SELECT nom, prenom, email FROM Anniversaire WHERE MONTH(date_anniv) = month(current_date) AND DAY(date_anniv) = day(current_date)');
//Envoi Mail
$sujet = 'Bon anniversaire';
$headers = ''; // a définir .....
// On affiche chaque entrée une à une
while ($data = $result->fetch_object()) {
    $message = sprintf('Bon anniversaire %s %s', $data->prenom, $data->nom);
    if (mail($sujet, $message,  $data->email, $headers)) {
        echo 'L\'email a bien été envoyé.';
    } else {
        echo 'Une erreur s\'est produite lors de l\'envois de l\'email à ', $data->prenom , ' ' , $data->nom , ' (', $data->email , ')';
    }
}

$result->close();
ps : un titre clair est demandé afin de permettre a d'autre personne d'éventuellement trouver une solution en s'appuyant sur ton problème et aussi d'aider les éventuelles personnes qui souhaitent t'aider en sélectionnant les sujet où ils souhaitent participer.

@+