Se connecter / S'enregistrer
Votre question

[php] demande de confirmation

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
2 Juillet 2006 15:39:46

Bonjour,

J'ai sur ma page un systéme de newsletter et j'aimerais que lorsqu'une personne fasse une demande de désinscription, une petite fenetre s'ouvre et demande confirmation où annulation.

Voici mon code:
  1. if($num==0)
  2. {
  3. $requete=mysql_db_query($sql_bdd,"insert into listes values(\"$email\",\"$liste\")",$db_link);
  4. $message="Merci, votre demande a bien été enregistrée.";
  5. $titre="Inscription";
  6. }
  7. else
  8.  
  9. {
  10. $requete=mysql_db_query($sql_bdd,"delete from listes where email=\"$email\" and liste=\"$liste\"",$db_link);
  11. $message="Vous n'êtes plus inscrit dans cette liste.";
  12. $titre="Désinscription";
  13. }
  14. mysql_close($db_link);
  15. }
  16. else
  17. {
  18. $message="L'adresse email est invalide";
  19. $titre="Inscription";
  20. }



Merci d'avance!

Autres pages sur : php demande confirmation

2 Juillet 2006 15:43:58

Salut,

Bien qu'il n'y ait pas de question dans ton message, je suppose que tu veux savoir comment ouvrir ta fenêtre : réponse utilise Javascript à l'endroit qui va bien :) 
2 Juillet 2006 16:09:41

Oui, c'est ça... :p 

J'ai vu en recherchant qu'il fallait utiliser du javascript, mais j'ai pas réussi, j'ai du mal a faire marcher le javascript au milieu de mon php :s...

Si quelqu'un peut m'aider à résoudre ce problème, merci d'avance!
Contenus similaires
2 Juillet 2006 17:12:23

Dans ton lien qui mene vers la desinscription tu rajoute:

onclick='valide_des();'

et tu fait un script qui donne:

function valide_des()
{
if (confirm('Etes vous sure de vouloir vous desinscrire ?'))
document.getElementById('fdes').submit();
}

remplace fdes par l'id de ton formulaire de deinscription ;) .
2 Juillet 2006 18:41:12

arf, je sais pas si ca va marcher.
Je m'explique:
Pour s'inscrire a ma newsletter, il suffit de rentrer son adresse dans une case, et c'est la même procédure pour se desinscrire.

Dans mes pages, j'ai ça:
  1. <form name="formdiff" method="post" action="inscription2.php3" target="insc_diff" onSubmit="window.open('','insc_diff','width=200,height=100,screenX=250,screenY=250')">
  2. <input type="hidden" name="liste" value="Joutes du Téméraire">
  3. <center>
  4. <font size="4" color="#336600"><STRONG><u>NewsLetter</u></STRONG></font>
  5. <br>
  6. <font size="1" face="Verdana" color="#336600">Inscription / Désinscription</font><br>
  7. <input type="text" name="email" value="Votre e-mail" class="Form" maxlength="100" size="10" onClick="this.value=''">
  8. <input type="hidden" name="liste" value="Joutes du Téméraire">
  9. <input type="submit" value="OK">
  10. </form>


Qui rajoute donc une petite case où rentrer l'adresse mail.
Une fois l'adresse rentré et validé, soi elle n'est pas dans la base de donnée et alors le script la rentre soi elle y est déjà et le script la retire.

Le script est dans la page inscription.php (le code du début) que voici:
  1. <?
  2. if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $email))
  3. {
  4. require("admin/passe/conf.php3");
  5. $db_link = mysql_connect($sql_server,$sql_user,$sql_passwd);
  6. $requete=mysql_db_query($sql_bdd,"select * from listes where email=\"$email\" and liste=\"$liste\"",$db_link);
  7. $num=mysql_num_rows($requete);
  8. if($num==0)
  9. {
  10. $requete=mysql_db_query($sql_bdd,"insert into listes values(\"$email\",\"$liste\")",$db_link);
  11. $message="Merci, votre demande a bien été enregistrée.";
  12. $titre="Inscription";
  13. }
  14. else
  15.  
  16. {
  17. $requete=mysql_db_query($sql_bdd,"delete from listes where email=\"$email\" and liste=\"$liste\"",$db_link);
  18. $message="Vous n'êtes plus inscrit dans cette liste.";
  19. $titre="Désinscription";
  20. }
  21. mysql_close($db_link);
  22. }
  23. else
  24. {
  25. $message="L'adresse email est invalide";
  26. $titre="Inscription";
  27. }
  28. ?>
  29. <html>
  30. <head>
  31. <title><? echo "$titre"; ?></title>
  32. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  33. </head>
  34. <body>
  35. <center><br>
  36. <font face="Verdana" size="2">
  37. <? echo "$message"; ?>
  38. <br><br>
  39. <a href="javascript:window.close()">Fermer</a>
  40. </font>
  41. </center>
  42. </body>
  43. </html>


Et j'aimerais donc faire en sorte que lorsque le gars retire son inscription, un petit message de confirmation s'affiche...

Le site est la:
www.joutes.fr.st

Merci d'avance!
3 Juillet 2006 10:50:28

up
3 Juillet 2006 11:02:30

Désolé je vais peut être être désagréable, mais je n'aime pas du tout ces messages d'UP qui ne servent à rien, au lieu de poster sa, un peu de réflexion t'aurais surement permis de régler ton pb!!!

Tu ne peux pa dire à PHP d'ouvrir ta fenêtre lors de la désinscription, alors c'est javascript qui devra lancé ton script PHP dans une popup. PHP se chargera d'afficher le bon message au bon moment :
- si l'utilisateur est déja inscrit, une confirmation de la désinscirption
- si l'utilisateur n'est pas inscrit, une confirmation d'inscription.

C'est pas bien dur, suffit de réfléchir au lieu d'attendre que la solution tombe du ciel (enfin plutôt du forum en l'occurence) et en plus sa permet d'apprendre mieux et plus vite!
3 Juillet 2006 11:19:26

Désolé, mais je connais pas du tous javascript, tu peux me croire, je tente de résoudre le probléme depuis plusieurs heures, mais quand on est mauvais...
Pour preuve, les 2 pages actuellement ouvertes sur ma session:

la première et la deuxième.

J'ai déjà visité plusieurs pages, je pense toucher du bout du doigt la résolution du problème et je vais y arriver!!
Je suis également farouchement attaché à l'auto apprentissage, je demandais juste un peu d'aide où des pistes comme tu as pû m'en fournir, et je te remercie donc pour cette contribution!

Bonne continuation.
3 Juillet 2006 11:26:12

Je vais encore de donner quelques pistes histoire que tu avances encore un peu :
Tu veux que ta fenêtre popup s'ouvre lorsque le formulaire est soumis donc, il te faudra utiliser le gestionnaire d'évènement onSubmit de la balise <form>.
Dans cet attribut onSubmit, tu veux ouvrir une fenêtre : là il te faudra utiliser le Javascript window.open() avec les bons paramètres.
Ensuite, il ne te reste plus qu'à mettre ton code PHP dans la fenêtre que tu auras ouverte avec le Javascript et normalement tu devrais approcher le résultat que tu attendais.
3 Juillet 2006 17:03:00

Bon, j'avance, je croyais avoir fini... Et non!

J'ai donc repris mon code et j'y ais intégré un confirm() afin de resoudre mon problème. Celui ci renvoie vers 2 pages php qui permettent de supprimer ou non l'adresse mail de la bdd.

Voici les codes:
INSCRIPTION:
  1. <?
  2. if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $email))
  3. {
  4. require("admin/passe/conf.php3");
  5. $db_link = mysql_connect($sql_server,$sql_user,$sql_passwd);
  6. $requete=mysql_db_query($sql_bdd,"select * from listes where email=\"$email\" and liste=\"$liste\"",$db_link);
  7. $num=mysql_num_rows($requete);
  8. if($num==0)
  9. {
  10. $requete=mysql_db_query($sql_bdd,"insert into listes values(\"$email\",\"$liste\")",$db_link);
  11. $message="Merci, votre demande a bien été enregistrée.";
  12. $titre="Inscription";
  13. }
  14. else
  15. {
  16. echo "
  17. <script language='JavaScript' type='text/javascript'>
  18. var agree=confirm('Voulez vous vous désinscrire?');
  19. if(agree)
  20. {
  21. location.href = 'desinsc.php?var=$email';
  22. }
  23. else
  24. {
  25. location.href = 'desinscoff.php';
  26. }
  27. </script>";
  28. }
  29. mysql_close($db_link);
  30. }
  31. else
  32. {
  33. $message="L'adresse email est invalide";
  34. $titre="inscription";
  35. }
  36. ?>
  37. <html>
  38. <head>
  39.  
  40. <title><? echo "$titre"; ?></title>
  41. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  42. </head>
  43. <body>
  44. <center><br>
  45. <font face="Verdana" size="2">
  46. <? echo "$message"; ?>
  47. <br><br>
  48. <a href="javascript:window.close()">Fermer</a>
  49. </font>
  50. </center>
  51. </body>
  52. </html>


DESINSCRIPTION:
  1. <?
  2. {
  3. require("admin/passe/conf.php3");
  4. $db_link = mysql_connect($sql_server,$sql_user,$sql_passwd);
  5. $email=$_GET['var'];
  6. $requete=mysql_db_query($sql_bdd,"delete from listes where email=\"$email\" and liste=\"$liste\"",$db_link);
  7. $message="Vous n'êtes plus inscrit dans cette liste.";
  8. $titre="Désinscription";
  9.  
  10. mysql_close($db_link);
  11. }
  12. ?>
  13. <html>
  14. <head>
  15. <title><? echo "$titre"; ?></title>
  16. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  17. </head>
  18. <body>
  19. <center><br>
  20. <font face="Verdana" size="2">
  21. <? echo "$message"; ?>
  22. <br><br>
  23. <a href="javascript:window.close()">Fermer</a>
  24. </font>
  25. </center>
  26. </body>
  27. </html>


ANNULATION DE DESINSCRIPTION:
  1. <?
  2. mysql_close($db_link);
  3. ?>
  4.  
  5. <html>
  6. <head>
  7. <title>Annulation</title>
  8. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  9. </head>
  10. <body>
  11. <center><br>
  12. <font face="Verdana" size="2">
  13. Merci de votre confiance.
  14. <br><br>
  15. <a href="javascript:window.close()">Fermer</a>
  16. </font>
  17. </center>
  18. </body>
  19. </html>


Donc tous marche bien sauf que je ne peux plus supprimer les adresses mail...
J'ai un petit doute sur l'utilisation de:
location.href = 'desinsc.php?var=$email'; (premier code)
et
$email=$_GET['var']; (deuxiéme code)

Mais je sais pas si ça viens vraiment de là et comment y remédier :-?

Si quelqu'un peu me venir en aide, merci d'avance!
3 Juillet 2006 17:10:25

Déja, dans le script INSCRIPTION, met tout le code PHP entre <head></head> ou même entre <body></body> sa respectera déja un peu plus les règles de codage du HTML.

Ensuite si sa ne change toujours rien essaye de faire document.location.href à la place de location.href.

Et si sa change toujours rien essaye de mettre des echo (PHP) et des alert (JS) pour voir comment ton script s'exécute et ainsi mieux cerner le problème.
3 Juillet 2006 17:41:31

J'ai essayé et toujours rien...

Je vais continuer à chercher, je suis sur que c'est un truc tout bete (genre un ;...)...

J'ai fais plusieurs tests, je vois toujours pas, je suis pourtant sur de mon script...
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS