[php]Probleme affichage formulaire et tests
Résolu/Fermé
justins
-
2 juil. 2009 à 13:01
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 2 juil. 2009 à 16:10
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 2 juil. 2009 à 16:10
A voir également:
- [php]Probleme affichage formulaire et tests
- Formulaire de réclamation facebook - Guide
- Easy php - Télécharger - Divers Web & Internet
- Affichage double ecran - Guide
- Problème affichage fenêtre windows 10 - Guide
- Windows 11 affichage classique - Guide
9 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
2 juil. 2009 à 13:23
2 juil. 2009 à 13:23
lorsque j'appuies sur valider et que l'envoi ne se fasse qui si les tests sont valides
<html> <head> <script type="text/javascript"> function testNumCompte(){ var obj=documentGetElementById('num_compte'); //on attenit l'objet par son id //verification if(obj.value la tu fais ton test ) { //si pas ok alert('Saisie CP incorrecte'); return false; //ainsi le formulaire ne sera pas envoyé } //tu en mets autant que tu veux pour chaque champ à tester //en partant du principe que le return fait quitter la fonction return true; // sipas d'anomalie le formulaire sera posté } </script> </head> <body> <form method="post" action="recapitulatif.php" onSubmit="return testNumCompte();" > <!-- au moment de la soumission du formulaire par le bouton submit on attend le return de la fonction si false ça part pas, si true ça part --> Date de naissance : <input type="text" name="jour" id="jour" size="2" maxlength="2" value="JJ"/> / <input type="text" name="mois" id="mois"size="2" maxlength="2" value="MM"/> / <input type="text" name="annee" id="annee" size="4" maxlength="4" value="AAAA"/></p>'; <br /> <p> Nom: <input type="text" name="num_anccarte" size="16" maxlength="16" value=""/> </p>'; <br /> <p> Code postal: <input type="text" name="num_compte" id="num_compte" size="5" maxlength="5" value=""/></p> <input type="submit" name="envoyer" value="Envoyer" /> </form> </body> </html>
D'accord je te remercie donc je vais pouvoir récupérer ainsi les valeur pour chaque champ que je veux tester, parfait!
Sinon je me posais une petit question, en fait comme le javascript est exécute coté client, il est donc possible de le désactiver et ainsi d'envoyer des formulaires où les erreurs de saisies pourraient être nombreuses, ce n'est pas possible de faire une équivalence en php ou de faire en sorte que les tests soient exécutes coté serveur?
Je débute donc je me pose la question, par ailleurs tu ne sais pas pourquoi le premier champ ne s'affiche pas avec les echo?
Merci en tout cas.
Sinon je me posais une petit question, en fait comme le javascript est exécute coté client, il est donc possible de le désactiver et ainsi d'envoyer des formulaires où les erreurs de saisies pourraient être nombreuses, ce n'est pas possible de faire une équivalence en php ou de faire en sorte que les tests soient exécutes coté serveur?
Je débute donc je me pose la question, par ailleurs tu ne sais pas pourquoi le premier champ ne s'affiche pas avec les echo?
Merci en tout cas.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
2 juil. 2009 à 13:48
2 juil. 2009 à 13:48
Si bien sur il est même fortement conseillé de faire un test en php côté serveur
une solution, (il y en a surement d'autres c'est un e, question de gout ou de principes)
une solution, (il y en a surement d'autres c'est un e, question de gout ou de principes)
<?php $valid=false; //init if(isset($_POST['jour']) AND $_POST['jour'] !==""){ if($_POST['jour'].......) { //ton test $valid=true; }else{ $valid=false; } }else{ echo "Veuiilez saisir le jour !"; } if(isset($_POST['mois']) AND $_POST['mois'] !==""){ if($_POST['mois'].......) { //ton test $valid=true; }else{ $valid=false; } }else{ echo "Veuiilez saisir le mois !"; } if($valid==true){ //la tu acceptes de traiter ton formulaire }
C'est probablement mieux de procéder ainsi, par ailleurs mon formulaire renvoi vers une seconde page avec un résumé des données saisies, pour pouvoir faire ces tests il va falloir que je renvois le formulaire vers la page où il se trouve et ensuite si la saisie est correcte faire une redirection vers la page de résumé grâce aux sessions, ou penses-tu qu'il y a plus malin à faire ou qu'en procedant ainsi ça ne fonctionnera pas?
En fait ce que je souhaite quand ce sera fini c'est que mon formulaire soit testé puis renvoi vers un résumé des entrées avec en parallèle ajout des données dans une BDD.
Mais avec ton code je comprend le principe, mais admettons tout les premiers tests sont faux donc $valid reste a false mais le dernier est bon, $valid ne va pas passer à true et valider le formulaire?
Je dois mettre tout le formulaire ici?
if($valid==true){
//la tu acceptes de traiter ton formulaire
}
Merci pour toutes ces explications, c'est sympa!
En fait ce que je souhaite quand ce sera fini c'est que mon formulaire soit testé puis renvoi vers un résumé des entrées avec en parallèle ajout des données dans une BDD.
Mais avec ton code je comprend le principe, mais admettons tout les premiers tests sont faux donc $valid reste a false mais le dernier est bon, $valid ne va pas passer à true et valider le formulaire?
Je dois mettre tout le formulaire ici?
if($valid==true){
//la tu acceptes de traiter ton formulaire
}
Merci pour toutes ces explications, c'est sympa!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
2 juil. 2009 à 14:20
2 juil. 2009 à 14:20
Ce qui va bien c'est que le formulaire s'appelle lui même action ="" ou action="<?php echo $_SERVEUR['PHP_SELF']; ?>"
ainsi en cas de problème de saisie le formulaire se réaffiche et tu y mets les value
il faut au début du script
<?php
if(isset($_POST['champ1']){$champ1=$_POST['champ1'];} else{$champ1="";}
?>
et plus bas dans ton formulaire tu mets
<input type="texte name='champ1' value="<?php echo $champ1; ?>" />
et si tout ok tu peux stocker tout dans des variables de session
et appeler une autre page par
Header('Location:page_suivante.php');
mais attention avant ça il ne doit rien avoir d'envoyé au navigateur pas de HTML etc..
ainsi en cas de problème de saisie le formulaire se réaffiche et tu y mets les value
il faut au début du script
<?php
if(isset($_POST['champ1']){$champ1=$_POST['champ1'];} else{$champ1="";}
?>
et plus bas dans ton formulaire tu mets
<input type="texte name='champ1' value="<?php echo $champ1; ?>" />
et si tout ok tu peux stocker tout dans des variables de session
et appeler une autre page par
Header('Location:page_suivante.php');
mais attention avant ça il ne doit rien avoir d'envoyé au navigateur pas de HTML etc..
Voici la page que j'ai actuellement, j'ai testé les conditions avec les echo et ça semble retourner les resultats que j'attends des tests, cependant dans le if ($valid == true) ou if ($valid == false) selon la preference je mets quoi dedans qui va permettre de bloquer l'envoi du formulaire?
Car si je fais l'entrée dans la BDD dans la seconde page qui sera donc appelée que si les tests sont passé avec succès je suppose que ça va marcher comme je souhaite mais ça fait certainement un peu trop "bricolage" enfin je ne sais pas ce que tu en penses?
Sinon, si j'ai bien compris les codes que tu as mis aussi dessus, ils permettent d'afficher le "message d'erreur" dans le champ ou il ya une erreur?
<?php
if(isset($_POST['envoyer']))
{
$valid=true; //init
if(strlen($_POST['CP']) == 5)
{ //ton test
}
else
{
$valid=false;
echo "numero de compte incorect!";
}
if(strlen($_POST['annee']) == 4)
{ //ton test
}else
{
$valid=false;
echo "Le numero de l'ancienne carte incorrect !";
}
if ( $valid == true )
{
echo 'formulaire envoyé';
Header('Location:resumeSaisie.php');
}
echo '
<form method="post" action="saisie.php" enctype="multipart/form-data>
Date de naissance : <input type="text" name="jour" size="2"
maxlength="2" value="JJ"/> / <input type="text" name="mois" size="2"
maxlength="2" value="MM"/> / <input type="text" name="annee" size="4"
maxlength="4" value="AAAA"/></p>';
echo'<br />
<p>Nom: <input type="text" name="nom" value=""/></p>';
echo'<br />
<p>Code postal: <input type="text" name="CP" value=""/></p>';
echo'
<input type="submit" name="envoyer" value="envoyer" />
</form>';
?>
Car si je fais l'entrée dans la BDD dans la seconde page qui sera donc appelée que si les tests sont passé avec succès je suppose que ça va marcher comme je souhaite mais ça fait certainement un peu trop "bricolage" enfin je ne sais pas ce que tu en penses?
Sinon, si j'ai bien compris les codes que tu as mis aussi dessus, ils permettent d'afficher le "message d'erreur" dans le champ ou il ya une erreur?
<?php
if(isset($_POST['envoyer']))
{
$valid=true; //init
if(strlen($_POST['CP']) == 5)
{ //ton test
}
else
{
$valid=false;
echo "numero de compte incorect!";
}
if(strlen($_POST['annee']) == 4)
{ //ton test
}else
{
$valid=false;
echo "Le numero de l'ancienne carte incorrect !";
}
if ( $valid == true )
{
echo 'formulaire envoyé';
Header('Location:resumeSaisie.php');
}
echo '
<form method="post" action="saisie.php" enctype="multipart/form-data>
Date de naissance : <input type="text" name="jour" size="2"
maxlength="2" value="JJ"/> / <input type="text" name="mois" size="2"
maxlength="2" value="MM"/> / <input type="text" name="annee" size="4"
maxlength="4" value="AAAA"/></p>';
echo'<br />
<p>Nom: <input type="text" name="nom" value=""/></p>';
echo'<br />
<p>Code postal: <input type="text" name="CP" value=""/></p>';
echo'
<input type="submit" name="envoyer" value="envoyer" />
</form>';
?>
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
2 juil. 2009 à 14:52
2 juil. 2009 à 14:52
<?php if(isset($_POST['envoyer'])) { $valid=false; //init à false, on part du principe que c'est pas bon et on met bon que si tout ok if(strlen($_POST['CP']) == 5) { //ton test $valid=true; } else { $valid=false; echo "numero de compte incorect!"; } if(strlen($_POST['annee']) == 4) { //ton test $valid=true; }else { $valid=false; echo "Le numero de l'ancienne carte incorrect !"; } if ( $valid == true ) { //echo 'formulaire envoyé'; //si tu met cet echo tu ne pouras pas mettre le header ligne d'après, de plus tu n'auras pas le temps de le voir puisque la page est redirigée session_start(); $_SESSION['CP']=$_POST['CP']; //memo des valeurs dans les variables de session pour utilisation page suivante //etc.. //puis Header('Location:resumeSaisie.php'); } } ?> <form method="post" action="saisie.php" enctype="multipart/form-data" > Date de naissance : <input type="text" name="jour" size="2" maxlength="2" value="JJ"/> / <input type="text" name="mois" size="2" maxlength="2" value="MM"/> / <input type="text" name="annee" size="4" maxlength="4" value="AAAA"/></p>'; <br /> <p>Nom: <input type="text" name="nom" value=""/></p>'; <br /> <p>Code postal: <input type="text" name="CP" value=""/></p>'; <input type="submit" name="envoyer" value="envoyer" /> </form>
On est d'accord, seulement dès que je mets un sessions start plein d'erreurs arrivent.*
<?php
session_start();
echo 'Code Postal :' .$_SESSION['CP'] . '<br />';
?>
Warning: session_start() [function.session-start.html]: open(C:\WINDOWS\TEMP\\...) failed: Permission denied (13) in D:.. on line 2
Warning: Unknown: open(C:\WINDOWS\TEMP\...) failed: Permission denied (13) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0
Sans le session_start pas d'erreur mais pas possible de récuperer les valeurs...
Des erreurs semblables arrivent sur la page du formulaire aussi.
<?php
session_start();
echo 'Code Postal :' .$_SESSION['CP'] . '<br />';
?>
Warning: session_start() [function.session-start.html]: open(C:\WINDOWS\TEMP\\...) failed: Permission denied (13) in D:.. on line 2
Warning: Unknown: open(C:\WINDOWS\TEMP\...) failed: Permission denied (13) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0
Sans le session_start pas d'erreur mais pas possible de récuperer les valeurs...
Des erreurs semblables arrivent sur la page du formulaire aussi.
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
2 juil. 2009 à 16:10
2 juil. 2009 à 16:10
pour le php de session, vas voir dans ton php.ini à la section [sessions]
si je comprend bien tu es en local
les variables de sessions sont stockées dans un dossier temp
qui doit être défini par session.save_path=C:\ProgrammeFile\Easy_php\tmp (chez moi ç'est comme ça parce que j'ai Easy Php
si je comprend bien tu es en local
les variables de sessions sont stockées dans un dossier temp
qui doit être défini par session.save_path=C:\ProgrammeFile\Easy_php\tmp (chez moi ç'est comme ça parce que j'ai Easy Php