ModalBox, formulaire et redirection php

Résolu/Fermé
Vincedujag Messages postés 9 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 1 mars 2010 - 21 févr. 2010 à 16:35
Vincedujag Messages postés 9 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 1 mars 2010 - 1 mars 2010 à 10:23
Bonjour à tous,

J'essaie voilà 3 jours de créer un formulaire dans une ModalBox et de vouloir le vérifier à l'aide de php, en vain.

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/

Dans un premier temps j'ai installé ma ModalBox, pas de soucis.

J'ouvre ma ModalBox avec ce code:
<a href="liens/form_mag.php" title="Une page HTML incluse" onclick="Modalbox.show(this.href, {title: this.title, width: 800}); return false;">Formulaire</a>


Jusqu'ici tout va bien.

Donc j'aimerai que lorsqu'une personne valide un formulaire, elle soit dirigée vers ajout_mag.php (toujours dans la modalbox). Ensuite:
Soit le formulaire est rempli correctement, il n'y a pas d'erreur et la page affiche ce que la personne à rempli;
Soit le formulaire est mal rempli, il y a une erreur et elle est redirigé automatiquement vers le formulaire avec l'erreur d'affichée.

Voici le code de ma page form_mag.php contenant le formulaire:

<div>
<?php
if($erreur) {
echo $erreur;
}
?>

<FORM action="liens/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('liens/ajout_mag.php', {title: 'Form sending status', width: 500, params:Form.serialize('myform') }); return false;" />
</FORM> 
</div>



Voici le code de ma page ajout_mag.php:

<div>

<?php

$erreur = false;
$nom = $_GET['nom'];

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 {

# C'est ICI que je ne sais pas du tout quoi mettre!!! :(

}

?>
</div>


Comment faire cette redirection? (En restant dans la ModalBox..)

Biensur, il y a beaucoup plus de champ dans mon formulaire, mais un seul suffira pour plus de clarté..

Merci pour votre aide.

Bonne fin de weekend,

Vincent
A voir également:

8 réponses

Vincedujag Messages postés 9 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 1 mars 2010 1
1 mars 2010 à 10:23
Bonjour à tous,

Bon au final j'ai réussi à trouver une solution, j'en profite pour la partager;)

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

Voici le code:

<?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>';

}

?>
1
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
21 févr. 2010 à 19:22
Il suffit de regarder le code source de l'exemple pour vite comprendre.
Sur ta balise form : onsubmit="return false;"
0
Vincedujag Messages postés 9 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 1 mars 2010 1
21 févr. 2010 à 20:43
Merci avion-f16 pour cette réponse rapide;) .. mais je n'ai pas très bien compris.

Je ne suis pas vraiment un pro de php ni javascript, j'essaie de me débrouiller grâce différents scripts que je trouve sur le net.

Tu parles de "return false;", c'est justement le code utilisé sur le site officiel de ModalBox, à quoi il sert?

En fait mon soucis est de pouvoir retourner à la page formulaire (form_mag.php) si il y a une erreur (if($erreur)).
Par contre je n'arrive pas à trouver la fonction qu'il me le permettrait.

J'ai aussi essayé avec du javascript en bidouillant ceci:

echo '<script language="JavaScript">Modalbox.show="'liens/form_mag.php', {title: 'Form sending status', width: 500, params:Form.serialize('myform') }'"</script>';


Mais je sais qu'avec tout les guillemets, les accolades, sa ne passe pas. Est ce que je suis quand même sur la bonne voie?
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
21 févr. 2010 à 22:20
Essaye avec ça :
echo '<script script="text/javascript">
Modalbox.show('liens/form_mag.php', {
    title: 'Form sending status',
    width: 500,
    params: Form.serialize('myform')
});</script>';
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vincedujag Messages postés 9 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 1 mars 2010 1
21 févr. 2010 à 22:44
J'ai toujours une erreur de syntaxe..

Avec le javascript je pense pouvoir utiliser la fonction .show de la modal box, comme elle est utilisée dans la page "form_mag.php" avec le input, penses-tu que c'est la bonne solution?

Voici l'erreur avec ce que tu me proposes:
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /mnt/162/sdc/a/5/solarpedia/test/liens/ajout_mag.php on line 9


Voici le liens pour tester le script:
http://solarpedia.free.fr/test/testmodal.html

Merci pour ton implication dans ce problème!
0
avion-f16 Messages postés 19250 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 22 décembre 2024 4 505
22 févr. 2010 à 17:22
echo '<script script="text/javascript">
Modalbox.show(\'liens/form_mag.php\', {
    title: \'Form sending status\',
    width: 500,
    params: Form.serialize(\'myform\')
});</script>';
0
Vincedujag Messages postés 9 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 1 mars 2010 1
22 févr. 2010 à 21:29
C'est déjà mieux car il n'y a plus d'erreurs, mais sa ne lance toujours pas le script.

J'ai pu le voir en rajoutant un print après le else:

<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\', {
    title: \'Form sending status\',
    width: 500,
    params: Form.serialize(\'myform\')
});</script>';

}

?>
</div>


Lorsque le champs "nom" n'est pas rempli, le code renvoi "echec", mais il ne se passe rien d'autre..:
http://solarpedia.free.fr/test/testmodal.html

J'ai aussi essayé en remplaçant:
<script script="text/javascript">


Par
<script language="javascript" type="text/javascript"> 

car je trouvais sa bizarre, mais sa ne change toujours rien.

J'ai aussi essayé avec ce code:
echo '<script script="text/javascript">
window.onload=Modalbox.show(\'form_mag.php\',{
    title: \'Form sending status\',
    width: 500,
    params: Form.serialize(\'myform\')
});</script>';


Idem toujours rien..

Voici le javascript relatif à la fonction .show, je ne sais pas si sa peu aider:
show: function(content, options) {
		if(!this.initialized) this._init(options); // Check for is already initialized
		
		this.content = content;
		this.setOptions(options);
		
		if(this.options.title) // Updating title of the MB
			$(this.MBcaption).update(this.options.title);
		else { // If title isn't given, the header will not displayed
			$(this.MBheader).hide();
			$(this.MBcaption).hide();
		}
		
		if(this.MBwindow.style.display == "none") { // First modal box appearing
			this._appear();
			this.event("onShow"); // Passing onShow callback
		}
		else { // If MB already on the screen, update it
			this._update();
			this.event("onUpdate"); // Passing onUpdate callback
		} 
	},



Il n'existe pas une fonction javascript ou php pour simuler un input automatique?
0
Vincedujag Messages postés 9 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 1 mars 2010 1
22 févr. 2010 à 21:45
J'ai trouvé ce qui bloque: les options après l'url!! Merci de m'avoir mis sur la voie!

J'ai essayé avec ceci:
echo '<script script="text/javascript">
Modalbox.show(\'form_mag.php\');</script>';


Et sa marche! si je ne remplis pas le champs "nom", sa revient en arrière.. comme je le souhaitais :D

Par contre ce serais quand même bien d'avoir les options.. J'ai aussi essayé de mettre des antislashs avant les accolades, mais sans résultats..

Une idée?
0