mail d'inscription

Mammouth du PHP | 536 Messages

07 juin 2006, 08:50

bonjour tout le monde, voila j'ai fait un peit script qui permet a un élève de s'inscrire sur un site. Ses données sont vérifiées et validées par un administration avant de confirmer son inscription et la rendre ainsi définitive. Lorsqu'il a été décidé de confirmer l'inscription (par l'intermédiaire d'un lien dans un mail qui est envoyé à l'admin), je voudrais qu'un mail soit envoyé à l'élève pour lui dire que son inscription est acceptée.
Voila mon script, mais cela ne marche pas, pouvez me dire d'où vient l'erreur. :
<?php
/*********************************************************************/
/*				  Ajout des informations dans la base			     */
/*********************************************************************/

include("../../connexion.php");

//on evoie le mail de confirmation a l'eleve
	$nom_etudiant=$_GET['nom_etudiant'];
	$prenom_etudiant=$_GET['prenom_etudiant'];
	$sql = "SELECT * FROM etudiant WHERE prenom_etudiant='$prenom_etudiant' AND nom_etudiant='$nom_etudiant'";
$resultat = mysql_query($sql);
while ($row = mysql_fetch_array($resultat)) {	
	
$email_etudiant = ($row['email_etudiant']);}

//Corps du message 
$message = "Votre inscription a été validée.\n \n"; 
$message.= "Voila les renseignements vous concernant : \n \n"; 
$message.= "Nom  : ".$nom_etudiant." \n"; 
$message.= "Prenom  : ".$prenom_etudiant." \n"; 
$message.= "Adresse  : ".$adresse_etudiant."  ".$cp_etudiant."  ".$ville_etudiant." \n"; 
$message.= "Numéro de téléphone : ".$tel_etudiant." \n"; 
$message.= "Dernière classe  : ".$derniere_classe." \n"; 
$message.= "Mot de passe : \n ".$password_etudiant." \n"; 
$message.= "Merci de l'intérêt que vous portez à notre établissement.\n"; 

$sujet = "Nouvelle inscription d'étudiant";

$adresse = $email_etudiant;

$entete = "De : [email protected]";

$mailsend=mail($adresse,$sujet,$message,$entete);

//on insère dans la base
$sql = "SELECT * FROM etudiant WHERE prenom_etudiant='$prenom_etudiant' AND nom_etudiant='$nom_etudiant'";
$resultat = mysql_query($sql);
	$query = "UPDATE etudiant SET actif='1'";
	$result = mysql_query($query);
	echo "L'inscription a bien été prise en compte. <br>Vous pouvez fermer cette fenêtre.";
	

?>
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

07 juin 2006, 09:12

Voila mon script, mais cela ne marche pas
Qu est ce qui ne fonctionne pas ? Message d'erreur ? Le mail ne part pas ? Il est plus facile de localiser une erreur quand on sait ce qui ne va pas.... :)

Mammouth du PHP | 536 Messages

07 juin 2006, 09:16

oui exact, en fait le mail ne part pas
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

07 juin 2006, 09:28

$entete = 'From: [email protected]'."\n"; 
$entete .='Reply-To: inscription@hfontaine'."\n"; 
$entete .='Content-Type: text/html; charset="iso-8859-1"'."\n"; 
$entete .='Content-Transfer-Encoding: 8bit'; 
Tu peux essayer comme ca...
Sinon as tu bien vérifié que l'adresse de destination etait la bonne avec un echo avant d envoyer le mail ?

Mammouth du PHP | 536 Messages

07 juin 2006, 09:31

ha heu non j'ai pas vérifier. L'erreur ne vient-elle pa aussi qu'il y est deux fois
$sql
et
$resultat
?
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

07 juin 2006, 09:37

L'erreur ne vient-elle pa aussi qu'il y est deux fois
$sql
et
$resultat
?
Non je ne pense pas car les variables ne s entrecroise pas. Ton while de la premiere requete est terminée lorsque tu reaffectes la variable donc ca ne devrait pas poser de probleme. De plus la 2eme utilisation se fait après l envoie du mail donc ca ne devrait pas l affecter.

Mammouth du PHP | 536 Messages

07 juin 2006, 09:42

j'ai essayé de mettre un echo juste avant l'envoide mail, et cela ne marche pas. rien ne s'affiche. Faut-il décaler l'} du while et le mettre après l'envoi de mail ?
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

07 juin 2006, 09:50

Faut-il décaler l'} du while et le mettre après l'envoi de mail ?
Non car tu ne traites ici qu un seul élève donc une seule adresse email.
Par contre si ta variable est vide il y a peut etre un probleme avec ta requete, rajoute un "or die" et fais un echo de ta requete pr vérifier que les variables sont bonnes.
$nom_etudiant=$_GET['nom_etudiant']; 
$prenom_etudiant=$_GET['prenom_etudiant']; 
$sql = "SELECT * FROM etudiant WHERE prenom_etudiant='$prenom_etudiant' AND nom_etudiant='$nom_etudiant'"; 
$resultat = mysql_query($sql) or die(mysql_error());

Mammouth du PHP | 536 Messages

07 juin 2006, 10:00

j'ai donc fait un
echo $resultat;
et j'obtient le message suivant
Ressource id#4L'inscription a bien été prise en compte
Vous pouvez fermer cette fenêtre
Normal?
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 536 Messages

07 juin 2006, 10:01

mais par contre, l'inscriptiona bien été confirmée et validée. Ca veut dire que l'insertion dans la BDD a lieu
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juin 2006, 10:03

Rien a voir avec l'envoi de mail, mais la fin de ton script ne correspond surement pas a ce que tu veux faire. Quand je lit
//on insère dans la base
$sql = "SELECT * FROM etudiant WHERE prenom_etudiant='$prenom_etudiant' AND nom_etudiant='$nom_etudiant'";
$resultat = mysql_query($sql);
$query = "UPDATE etudiant SET actif='1'";
$result = mysql_query($query);
echo "L'inscription a bien été prise en compte. <br>Vous pouvez fermer cette fenêtre.";
je me dit que tu doit vouloir rendre actif l'etudiant auxquel tu vient d'envoyer le mail

Or, là, tu sélectionne l'étudiant sans rien faire dans la 1ere requete. Et tu change le champ actif de tous les étudiants de la table :-k

De plus, pourquoi utilises-tu les nom/prenom pour récupérer un enregistrement dans la base ? Ce n'est pas une clause d'unicité suffisante, il vaut mieux utiliser une clé primaire.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 536 Messages

07 juin 2006, 10:05

oui c'est bien ce que je veux faire zeus, dans mon UPDATE je devrais mettre en WHERE?
D'après toi, je devrais utiliser nom, prenom et pass ?
Modifié en dernier par béka le 07 juin 2006, 10:07, modifié 2 fois.
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Mammouth du PHP | 1353 Messages

07 juin 2006, 10:05

j'ai donc fait un
echo $resultat;
et j'obtient le message suivant
Ressource id#4L'inscription a bien été prise en compte
Vous pouvez fermer cette fenêtre
Normal?
Oui, il faudrait plutot faire echo $sql; pour voir ta requête. Et les remarques de Zeus sont à prendre en compte, car si tu as 2 élèves avec le même nom et prénom ton site va bugger...

Mammouth du PHP | 536 Messages

07 juin 2006, 10:12

oui j'ai pris en compte le comment de zeus
avec un
echo $sql;
voila ce que j'obtient
SELECT * FROM etudiant WHERE prenom_etudiant='' AND nom_etudiant=''
Aucune variable n'est passée
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 juin 2006, 10:20

Donc, il y a plusieurs problèmes dans ton script :
1/ récupération des variables GET
2/ manière d'identifier l'étudiant
3/ update de l'etudiant

Pour résoudre ces problèmes, je te conseille ça :
1/ Vérifie le lien qui t'envoi vers cette page
2/ Essaye de passer un identifiant
3/ effectivement, il te faut un where dans le update sinon tu le réalise sur toute la table
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer