FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 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 :)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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.
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 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 :/
Sannazzarotiti
Messages postés228Date d'inscriptionjeudi 1 septembre 2005StatutMembreDernière intervention12 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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 ''.
Sannazzarotiti
Messages postés228Date d'inscriptionjeudi 1 septembre 2005StatutMembreDernière intervention12 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)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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...
Sannazzarotiti
Messages postés228Date d'inscriptionjeudi 1 septembre 2005StatutMembreDernière intervention12 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.
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 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é :)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 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 !
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 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
Sannazzarotiti
Messages postés228Date d'inscriptionjeudi 1 septembre 2005StatutMembreDernière intervention12 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)
<? 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.";
}
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;}}?>
Sannazzarotiti
Messages postés228Date d'inscriptionjeudi 1 septembre 2005StatutMembreDernière intervention12 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.