ModalBox, javascript dans un echo

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ModalBox, javascript dans un echo

Re: ModalBox, javascript dans un echo

par Vincedujag » 01 mars 2010, 11:31

Bonjour à tous,

Bon au final j'ai réussi à trouver une autre solution, désolé Angus, j'ai regardé le CakePHP, sa l'air bien sympa mais je ne suis pas près de réapprendre un nouveau langage déjà que j'ai un peu de mal avec le php;) En tout cas pas maintenant..

Donc j'en profite pour partager une solution;)

J'ai tout simplement repris ton idée de n'utiliser qu'une seule page dans ma ModalBox, qui contient à la fois le formulaire et la vérification..

Voici le code:

Code : Tout sélectionner

<?php if (!empty($_POST)) { # vérification des champs requis (Nom) if (empty($_POST['nom'])) { $erreur1 = "Merci de renseigner le nom"; $focus1 = 1; // modification couleur du champ de saisie concerné echo $erreur1; } } $nom = utf8_decode(Stripslashes($_POST["nom"])); if (!empty($_POST) && empty($erreur1)){ print "<br><b>Nom: </b>"; echo $nom; } else { echo '<FORM action="ajout_mag.php" id="myform">'; echo '<table border="1">'; echo '<tr>'; echo '<td>Nom:<b>*</b></td>'; echo '<td><input type="text" name="nom" id="nom"'; if($focus1 == 1) echo 'class=\'focus\''; echo 'value="'; echo $nom; echo '"></td></tr></table>'; echo '<input type="submit" value="Valider" onclick="Modalbox.show(\'form_mag.php\', {title: \'Confirmation\', height: 480 , width: 640 , method:\'post\', params:Form.serialize(\'myform\') }); return false;" />'; echo '</FORM>'; } ?>

Re: ModalBox, javascript dans un echo

par Vincedujag » 23 févr. 2010, 21:49

Merci pour le lien, c'est exactement le type de formulaire que je recherche! :D

Je ne connaissait pas CakePHP, faut dire que sa fait un moment que je n'avais plus fait de PHP tout court..

Je vais essayer de faire marcher tout sa;)

Re: ModalBox, javascript dans un echo

par angus666 » 23 févr. 2010, 21:14

Bonsoir,

J'ai fait un tuto il n'y a pas longtemps sur l'implementation d'un formulaire de contact dans une MB, mais avec CakePHP mais le principe est le même juste le PHP qui change, regardes du côté du onsubmit du formulaire :

1. Afficher ton formulaire dans une modalbox
2. au submit tu envoies ton formulaire par post à l'aide de JS avec un form.serialize
3. Dans ta page de traitement si il y a des erreurs tu fais un header pour revenir sur le formulaire

4. Le mieux même sans modalbox est d'avoir tout sur une même page (avec des includes pour les traitements par ex)

Le lien http://blog.cwx.be/?p=37


Angus

ModalBox, javascript dans un echo

par Vincedujag » 23 févr. 2010, 19:58

Bonjour à tous,

J'essaie voilà presque une semaine de créer un formulaire dans une ModalBox et de vouloir le vérifier à l'aide de php. Le problème se pose lorsqu'un champ du formulaire est mal rempli et que j'aimerais retourner au formulaire.

Pour ceux qui connaissent pas la ModalBox, c'est une boite de dialogue entièrement codé en Javascript et respectant les « normes» du Web 2.0: http://okonet.ru/projects/modalbox/

Ainsi mon système de formulaire est composé de 3 pages:
testmodal.html qui contient le lien qui ouvre la ModalBox
form_mag.php qui contient le formulaire
ajout_mag.php qui vérifie les champs du formulaire

Voici le lien de mon système de formulaire: http://solarpedia.free.fr/test/testmodal.html

Comme vous pouvez le voir, lorsque le champs "nom_mag" n'est pas rempli, on revient au formulaire mais le message d'erreur ne s'affiche pas.

Voici le code du fichier testmodal.html:

Code : Tout sélectionner

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Untitled</title> <link rel="stylesheet" href="modalBox/modalbox.css" type="text/css" media="screen" /> <script type="text/javascript" src="modalBox/lib/prototype.js"></script> <script type="text/javascript" src="modalBox/lib/scriptaculous.js?load=effects"></script> <script type="text/javascript" src="modalBox/modalbox.js"></script> </head> <body> <a href="form_mag.php" title="Formulaire" onclick="Modalbox.show(this.href, {title: this.title, width: 800}); return false;">Formulaire</a> </body> </html>
Donc lorsque l'on clique sur le lien "Formulaire" on ouvre la ModalBox à la page "form_mag.php" dont voici le code:

Code : Tout sélectionner

<div> <?php echo $erreur; ?> <FORM action="ajout_mag.php" id="myform"> <table> <tr> <td>Nom:<b>*</b></td> <td><input type="text" name="nom_mag" id="nom_mag"></td> </tr> </table> <input type="submit" value="Valider" onclick="Modalbox.show('ajout_mag.php', {title: 'Confirmation', width: 500, params:Form.serialize('myform') }); return false;" /> </FORM> </div>
Une fois le formulaire validé, on va à la page "ajout_mag.php" qui va vérifier si le champ est rempli:

Code : Tout sélectionner

<div> <?php $erreur = false; $nom_mag = $_GET['nom_mag']; if (!empty($_GET)) { # Vérif nom de magazine Renseigné if (empty($_GET['nom_mag'])) { $erreur = "Merci de renseigner le nom de votre magazine"; } } if(!$erreur) { print "<br><b>Nom du magazine: </b>"; echo $nom_mag; } else { print "echec"; echo '<script script="text/javascript"> Modalbox.show(\'form_mag.php\');</script>'; } ?> </div>
Si le champ est rempli, alors on l'affiche, sinon on retourne à la page "form_mag.php" c'est à dire au formulaire.

MON PROBLEME: j'ai besoin de préciser les options de Modalbox.show afin de pouvoir modifier le titre de la ModalBox ainsi que de transmettre le message d'erreur "$erreur".

J'ai essayé avec le code suivant:

Code : Tout sélectionner

echo '<script script="text/javascript"> Modalbox.show(\'form_mag.php\', { title: \'Formulaire Erreur\', width: 800, params: Form.serialize(\'myform\') });</script>';
Mais sans résultats, la ModalBox reste à la page "ajout_mag.php".

Merci pour votre aide.

Vincent