1clic, 2fois

Résolu
Sannazzarotiti Messages postés 228 Date d'inscription jeudi 1 septembre 2005 Statut Membre Dernière intervention 12 avril 2009 - 17 nov. 2005 à 17:18
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 21 nov. 2005 à 13:50
bonjour, mon probleme je l'ai deja poster ici http://www.siteduzero.com/forums/viewtopic.php?id=8119
mias perssonne semble pouvoir y repondre.

On gros, je veut que quand je clique sur "Comfirmez", ma page soit charger 2 fois.
merci d'avance

21 réponses

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
21 nov. 2005 à 13:50
Bah en faite, c'est un peu crade comme code.
Balises qui s'ouvrent, se referment, juste pour afficher 10 caractères de html... bof quoi !

Utilisation abusive du if/else quand tu peux utiliser l'opérateur ternaire.
Manque de saut à la ligne aussi, à moins que ca soit PHPCS qui merde à ce point la :)
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 nov. 2005 à 17:29
Hello,

c'est incompréhensible, ton problème, je comprends qu'ils ne te répondent plus...
Tu ne VEUX pas que la page se recharge 2 fois...tu en as besoin parce que sinon, ce que tu as fait ne marche pas correctement, non ?
Alors autant s'attaquer plutôt à ça. Parce que recharger 2 fois d'affilée une page, c'est stupide, et pénible pour l'utilisateur.

Réexplique le pourquoi du comment de ce que tu veux faire exactement stp.
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
17 nov. 2005 à 17:45
Nan mais t'as pas a recharger 2 fois un formulaire. Si tu en arrives la, c'est que ton code est foireux.

Donne ton code avec ton formulaire et ton script de récupération ou alors on va rien pouvoir faire pour toi.
C'est soit ca, soit tu va rester dans la galère :/

Moi perso, je m'en fou :o
0
Sannazzarotiti Messages postés 228 Date d'inscription jeudi 1 septembre 2005 Statut Membre Dernière intervention 12 avril 2009
17 nov. 2005 à 18:17
je sais que je m'explique mal, mais c pas evidans a expliquer.

Bon je reprend tous de puis le debut, J'ai un formulaire qui se souvient des entrer dans les inputs (quadn il le rempli), comme ca si il oublie quelque chose, il ne doit pas tous retaper. Jusque la on me suit.

est pour savoir si tous les champs sont rempli et valide, g cree une variable dans un et chaque champs valide fait +1a la variable.

J'ai cree une condition qui dit que si tous les champs sont rempli (si la variable est egale a 10) alors il y a la partie 2 du formulaire qui s'affiche. Cette deuxieme parti se trouve sur LA MEME PAGE. Et je veut que sa soint sur la meme page.

LE PROBLEME: Je comfirme le formualire et quand la variable est egale a 10 (tous les champs rempli), il faut valider une autre fois pour que la condition (if ($_POST['La_variable']==10)) soint pris en compte est affiche la suite.

J'ai mal coder mon formulaire et je n'ai pas commenter (je sais qu'il faut pas ) et donc sa peut paraitre incomprehensible, c'est la resont pour laquel je ne l'affiche pas.
0

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

Posez votre question
Sannazzarotiti Messages postés 228 Date d'inscription jeudi 1 septembre 2005 Statut Membre Dernière intervention 12 avril 2009
17 nov. 2005 à 18:18
PS: Je n'est pas encore fait la recuperation des variables pour les inscrire dans mysql
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
17 nov. 2005 à 18:34
Fait voir ton code !
On va pas te le pondre comme ca rien qu'en regardant une explication qui tiens pas tant debout que ca :)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 nov. 2005 à 18:34
Si tu veux mon avis, c'est stupide :-)



Pourquoi tu ne vérifies pas directement chaque champ obligatoire...? Si
ils existent (et contiennent ce qu'il faut) (donc si tes
$_POST['champ'] sont remplis après soumission), tu affiches le 2ème
formulaire. Sinon, tu ré-affiche le 1er, avec des tests sur tes champs
: si $_POST['champ'] existe alors la valeur est $_POST['champ'] sinon
la valeur est ''.
0
Sannazzarotiti Messages postés 228 Date d'inscription jeudi 1 septembre 2005 Statut Membre Dernière intervention 12 avril 2009
17 nov. 2005 à 18:42
c'est ce que j'ai fait, si tout n'est pas valide (si la variable n'est pas egale a 10 (10 champs obligatoire), il remet le premier formulaire avec ce qu'il a taper avant) et celement apres il peut acceder au 2eme formulaire. Mais je te dit qu'il faut taper 2 fois.

Bon, enrengistre ce morceaux de code et ouvre le avec ton explorateur, tu comprendra je pensse.

(je le met dans 5minutes le temps de trouver ma cle usb, pas le meme ordi)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 nov. 2005 à 18:50
J'ai compris...c'est toi qui ne comprends pas. Tu vas incrémenter ta
variable toujours après le submit. Donc tu as toujours 1 clic de retard.

C'est bien stupide.

Si tu vérifies, après le submit, TOUS tes champs 1 par 1n que
$_POST['nom'] est bien rempli et contient un nom, etc...tu n'auras pas
ce retard, puisque tu n'as pas besoin de modifier une variable soumise
pour la vérifier...
0
Sannazzarotiti Messages postés 228 Date d'inscription jeudi 1 septembre 2005 Statut Membre Dernière intervention 12 avril 2009
17 nov. 2005 à 18:57
a, c'est la que ne se comprend pas, j'ai mis des expressions reguliere, ainsi si je fait des conditions pour verifier les champs 1 a 1 pour savoir si il existe, il peut tres bien exister une adresse email, mais pas obligatoirement valide, idem pour le numero de telephone.
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
17 nov. 2005 à 19:05
En faite, ce que tu dois faire :

<form ...>
</form>
Ca, c'est ton formulaire de tout ce qu'il y a de plus simple
<?php
if ( isset($_POST['submit']) ) {
$array = array('1erchamp', '2ndchamp', '3emechamp');
$compteur = 0;
foreach ( $array as $champ ) {
if ( !empty($$champ) ) {
$compteur++;
}
}
if ( $compteur === 3 ) { // J'ai mis seulement 3 champs pour l'exemple
// Code qui s'exécute seulement si tous les champs sont OK
} else {
// Code qui s'exécute si ce n'est pas le cas.
}

}
?>

Pour récupérer tes variables dans les champs :
" />

L'opérateur ternaire teste si du texte a été soumis en même temps que tout le formulaire et récupère ce que ton visiteur à marqué :)
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
17 nov. 2005 à 19:06
Je précise qu'il faut que tu mettes tes expressions régulières une fois seulement APRES avoir vérifiez que tous tes champs ont été comptabilisé, ceci afin d'éviter de retester 40 fois la même chose !
0
Sannazzarotiti Messages postés 228 Date d'inscription jeudi 1 septembre 2005 Statut Membre Dernière intervention 12 avril 2009
17 nov. 2005 à 19:07
je n'est absolue rien compris au debut du code, ton hitoire de array.
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
17 nov. 2005 à 19:18
Ok je developpe :

"$array = array('1erchamp', '2ndchamp', '3emechamp');"
Je met dans un tableau le nom de tes INPUTs à la suite. Jusque la rien de dur !

"$compteur = 0;"
J'initialise le compteur à 0.

"foreach ( $array as $champ ) {"
Je parcours le tableau que j'ai crée au dessus (donc en faite, je parcours les INPUT un par un)

"if ( !empty($$champ) ) {" La, je me suis trompé... honte à moi :)
Ce qu'il faut mettre : " if ( !empty( $_POST[$$champ]) ) {"
Mais que veux dire $$champ c'est ca hein ?
Regarde : http://www.lephpfacile.com/cours/index.php?p=27

"$compteur++;" J'incrémente le compteur à chaque fois qu'un champ est rempli

Etc..
0
Sannazzarotiti Messages postés 228 Date d'inscription jeudi 1 septembre 2005 Statut Membre Dernière intervention 12 avril 2009
17 nov. 2005 à 19:38
En fait, j'ai deja structurer mon code et il faut que je charge la page 2 fois. Mias je me souvient d'un code, javascript (je suis HS) qui redirectionne avec le temps. PAr hasard, vous le conniasser (sinon, je vais chercher)
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
17 nov. 2005 à 19:58
Oui mais ta structure de code est mauvaise dès le début.
Alors fait voir tout ton code et on va essayer de te supprimer ce 2ème clic inutile !
0
Sannazzarotiti Messages postés 228 Date d'inscription jeudi 1 septembre 2005 Statut Membre Dernière intervention 12 avril 2009
17 nov. 2005 à 21:41
je me suis tromper, le code il est identique a un detail pres

voila le vrai (desoler de flooder)

<html>
<head>
<title><? include("Includes/Titre.php"); ?></title>
<link rel="stylesheet" media="screen" type="text/css" title="Link.css" href="Link.css" />
</head>






<? include("Includes/Menu.php"); ?>
[Administration1.php Administration]





<? if (isset($_POST['Comfirm']) AND $_POST['Comfirm']==10 )
{?>
Inscriptions(partie2)

<?}
else
{?>
<form Method="POST" Action="Inscription.php">
Inscriptions

<center>
<hr/>
Vous



Votre nom:

"/>

<? if (isset($_POST['Comfirm']) AND isset($_POST['Nom'])){ if ($_POST['Comfirm']==0 AND $_POST['Nom']!=NULL ) {$_POST['Comfirm']=$_POST['Comfirm']+1;}}?>

Votre prénom:

"/>

<? if (isset($_POST['Comfirm']) AND isset($_POST['Prenom'])){ if ($_POST['Comfirm']==1 AND $_POST['Prenom']!=NULL ) {$_POST['Comfirm']=$_POST['Comfirm']+1;}}?>

Votre adresse email:

"/>
<?
if (isset($_POST['Email']))
{
if (preg_match("!^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$!", $_POST['Email']))
{
?>
Adresse email valide
<?
if ($_POST['Comfirm']==2)
{
$_POST['Comfirm']=$_POST['Comfirm']+1;
}
}
else
{
echo 'Vous devait entrez une adresse email valide. ex: [mailto:toto@operateur.com(net toto@operateur.com(net], info, fr, ...)';
}
}


?>

Votre mot de passe:

<? } else{ echo "";}?>"/>
<? if (isset($_POST['Comfirm']) AND isset($_POST['Keypass'])){ if ($_POST['Comfirm']==3 AND $_POST['Keypass']!=NULL ) {$_POST['Comfirm']=$_POST['Comfirm']+1;}}?>

<hr/>
Votre adresse

Vous ne pouvez commander que si vous éte à un rayon d'environ 30 Km de Mazéres.

Adresse:

<? } else{ echo "";}?>"/>

<? if (isset($_POST['Comfirm']) AND isset($_POST['Adresse'])){ if ($_POST['Comfirm']==4 AND $_POST['Adresse']!=NULL ) {$_POST['Comfirm']=$_POST['Comfirm']+1;}}?>

Code postal:

<? } else{ echo "";}?>"/>

<? if (isset($_POST['Comfirm']) AND isset($_POST['Code_postal'])){ if ($_POST['Comfirm']==5 AND $_POST['Code_postal']!=NULL ) {$_POST['Comfirm']=$_POST['Comfirm']+1;}}?>

Ville:

<? } else{ echo "";}?>"/>

<? if (isset($_POST['Comfirm']) AND isset($_POST['Ville'])){ if ($_POST['Comfirm']==6 AND $_POST['Ville']!=NULL ) {$_POST['Comfirm']=$_POST['Comfirm']+1;}}?>

<hr/>
Autres

Ce formulaire est obligatoire, sauf contre indication.

Votre age:

<? } else{ echo "";}?>"/>(facultatif)

Votre sexe:

Masculinchecked="checked"<? }?>/>Feminin checked="checked" <?}?>/>
<? if (isset($_POST['Comfirm']) AND isset($_POST['Sexe'])){ if ($_POST['Comfirm']==7 AND $_POST['Sexe']!=NULL ) {$_POST['Comfirm']=$_POST['Comfirm']+1;}}?>

</center>
Numero pour vous joindre:

<center>
Votre fixe:<? } else{ echo "";}?>"/>
<? if (isset($_POST['Numero_fixe']))
{
if (preg_match("!^0[0-68]([-. ]?[0-9]{2}){4}$!", $_POST['Numero_fixe']))
{
echo 'champs valide';
if (isset($_POST['Comfirm']) AND isset($_POST['Numero_fixe'])){ if ($_POST['Comfirm']==8 AND $_POST['Numero_fixe']!=NULL ) {$_POST['Comfirm']=$_POST['Comfirm']+1;}}
}
else
{
echo 'Le champs n\'est pas valide, votre numero doit comporter 10 chiffres.';
}
}
else
{
echo "Si vous n'avez pas de fixe, entrez votre portable ou un numéro où vous joindre ici.";
}


?>

Votre portable:<? } else{ echo "";}?>"/>(facultatif)

Quel animal posseder vous?

Chien(s)checked="checked"<? }?>/> Chat(s)checked="checked"<? }?>/> Rongeur(s)checked="checked"<? }?>/> Reptile(s)checked="checked"<? }?>/>

Volaille(s)/Basse courchecked="checked"<? }?>/> Oiseau(x)checked="checked"<? }?>/> Cheveau(x)checked="checked"<? }?>/>
<? if (isset($_POST['Comfirm']) AND isset($_POST['Chien']) OR isset($_POST['Chat']) OR isset($_POST['Rongeur']) OR isset($_POST['Reptile']) OR isset($_POST['Volaille']) OR isset($_POST['Oiseau']) OR isset($_POST['Cheveau'])) { if ($_POST['Comfirm']==9 AND $_POST['Numero_fixe']!=NULL ) {$_POST['Comfirm']=$_POST['Comfirm']+1;}}?>

" />


</form>
</center>


<?}
echo $_POST['Comfirm'];
?>





<? include("Includes/copyright.php");?>



</html>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 nov. 2005 à 13:42
C'est dingue...je ne comprends même pas le problème.
Un exemple très moche parce que j'ai fait ça à la va très vite sans trop réflêchir :

<?php
function checkForm () {
$retour = false;
if (isset ($_POST['submit']) && $_POST['submit'] === 'ok') {
if (isset ($_POST['nom']) && is_string($_POST['nom'])) {
$retour = true;
}
else {
$retour = false;
}
if (isset ($_POST['prenom']) && is_string($_POST['prenom'])) {
$retour = true;
}
else {
$retour = false;
}
if (isset ($_POST['email']) && (false !== preg_match (blabla de $_POST['email'])) {
$retour = true;
}
else {
$retour = false;
}
}
return $retour;
}


$check = checkForm ();


if ($check === false) {
?>
<form method="post" action="">
"/>
"/>
"/>

<?php
}
else {
?>
<!-- 2d formulaire -->
<?php
}
0
Sannazzarotiti Messages postés 228 Date d'inscription jeudi 1 septembre 2005 Statut Membre Dernière intervention 12 avril 2009
18 nov. 2005 à 17:08
prend mon code, copier colle le, et rempli le formulaire (entre n'importe qquoi sauf le numero de telephone et l'eamil qui doivent etre valide) et clique. Rien, reclique, et la sa marche.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
21 nov. 2005 à 05:57
Bon comme tu veux.

Perso, j'abandonne.
0
Rejoignez-nous