Validation PHP (Le champs est-il vide)
Anne-Mariz
Messages postés
1
Statut
Membre
-
oussama -
oussama -
Bonjour,
J'ai conçu un formulaire qui se valide avec Javascript, c'est bien!! tout fonctionne ,MAIS pour mon projet je dois le faire valider en PHP aussi pour les imbéciles qui désactive le Javascript pourtant tant utilisé.
Je commence donc par tenter de vérifier si mon champs prénom est vide == donne moi une erreur, comme vous voyez ci-dessous. Le problème c'est que le message affiche avant que je transmettre avec mon bouton submit ET le message reste là quand j'inscrit quelque chose dans le champs et que j'envoie. Je suis consciente qu'il me manque peut-être un bout de code, mais quoi?
<?php
$msgerreur="";
$erreur = false;
if(empty($_POST['sprenom'])){
$erreur;
echo ( $msgerreur.'Inscrire votre nom !');
}
else{
return true;
}
?>
<form method="post" action="ok.php" onsubmit="return valider();" >
<fieldset><legend>Entrez vos coordonnés</legend>
<!--prénom-->
<br />
<label> Prénom</label> <input type="text" name="sprenom" id="sprenom"/>
<!-- je ne met pas mes autres champs, car j'aimerais bien en valider un à la fois -- >
<input type="reset" value="Réinitialiser" />
<input type="submit" value="Transmettre" onclick="resetter()"/>
<!-- Les onclick et onsubmit sont en lien avec mon JS, ne pas en tenir compte-->
Jespère avoir été précise dans l'élaboration de ma question,
Merci d'avance
Anne-Mariz
J'ai conçu un formulaire qui se valide avec Javascript, c'est bien!! tout fonctionne ,MAIS pour mon projet je dois le faire valider en PHP aussi pour les imbéciles qui désactive le Javascript pourtant tant utilisé.
Je commence donc par tenter de vérifier si mon champs prénom est vide == donne moi une erreur, comme vous voyez ci-dessous. Le problème c'est que le message affiche avant que je transmettre avec mon bouton submit ET le message reste là quand j'inscrit quelque chose dans le champs et que j'envoie. Je suis consciente qu'il me manque peut-être un bout de code, mais quoi?
<?php
$msgerreur="";
$erreur = false;
if(empty($_POST['sprenom'])){
$erreur;
echo ( $msgerreur.'Inscrire votre nom !');
}
else{
return true;
}
?>
<form method="post" action="ok.php" onsubmit="return valider();" >
<fieldset><legend>Entrez vos coordonnés</legend>
<!--prénom-->
<br />
<label> Prénom</label> <input type="text" name="sprenom" id="sprenom"/>
<!-- je ne met pas mes autres champs, car j'aimerais bien en valider un à la fois -- >
<input type="reset" value="Réinitialiser" />
<input type="submit" value="Transmettre" onclick="resetter()"/>
<!-- Les onclick et onsubmit sont en lien avec mon JS, ne pas en tenir compte-->
Jespère avoir été précise dans l'élaboration de ma question,
Merci d'avance
Anne-Mariz
A voir également:
- Validation PHP (Le champs est-il vide)
- Supprimer page word vide - Guide
- Caractere vide - Guide
- Temps validation annonce le bon coin - Forum Hotmail / Outlook.com
- Commande en cours de validation fnac - Forum Consommation & Internet
- Coeur vide ✓ - Forum Réseaux sociaux
6 réponses
Ne serait-ce pas une meilleure idée d'utiliser un champ caché sur le formulaire qui sera affecté par le JS. Du côté PHP tu vérifies la valeur de ce champ et si il est vide tu renvoies un message demandant à l'utilisateur d'activer Javascript.
Si tu ne veux pas que le script php s'execute si il y a une vérification Js il te faut rajouter return false; a la fin de ton script js . (A moins que ce ne soit return true; a tester) .
En esperant t'avoir aidé !
En esperant t'avoir aidé !
Moi je fais ça pour bloquer une fonction avant l'envois du formulaire:
<form method="post" action="ok.php?debloque" onsubmit="return valider();" >
et ensuite :
if(isset($_POST["debloque"])){ACTION}
Pour ce qui est du fait que le messge reste apres, en php c'est dur de l'enlever, a part en faissant un rafraichissement de la page, ma solution consiste a mettre le message sous forme d'animation flash. le message aparait puis disparait.
c'est du bidouillage mais bon...
<form method="post" action="ok.php?debloque" onsubmit="return valider();" >
et ensuite :
if(isset($_POST["debloque"])){ACTION}
Pour ce qui est du fait que le messge reste apres, en php c'est dur de l'enlever, a part en faissant un rafraichissement de la page, ma solution consiste a mettre le message sous forme d'animation flash. le message aparait puis disparait.
c'est du bidouillage mais bon...
Si on veut gérer le cas du JS désactivé, faut faire comme ça (code pas testé) :
<script type="text/javascript">
function validateForm()
{
if (taFonctionDeValidation)
{
document.myForm.validation.value = 'okay';
return true;
}
return false;
}
</script>
<form name="myForm" method="post" action="ok.php" onSubmit="return validateForm();">
<input type="hidden" name="validation">
<input type="submit" value="Envoyer">
</form>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pour une vérif en php:
<?php
//return true ne sert à rien si ce n'est pas une fonction
//la page s'appelle elle même, le traitement des vides est au début
//ne mets pas onSubmit="...." dans <fomr et onClick sur le bouton Submit
//en procédant ainsi tu vas tous les valider lors de l'envoi
//init des variables
$msgerreur="";
$erreur = false;
$sprenom="";
$autreChamp="";
//etc..
if(isset($_POST['envoyer'])){
//le formulaire a été posté
if(empty($_POST['sprenom'])){
$erreur=true;
$msgerreur.='Inscrire votre nom !';
echo ( $msgerreur.'Inscrire votre nom !');
}else{
$sprenom=$_POST['sprenom'];
}
//autre champ
if($_POST['autre_champ'])){
$erreur=true;
$msgerreur.=' Inscrire votre ..... !';
}else{
$autreChamp=$_POST['autre_champ'];
}
//etc..
//message d'erreur eventuel
if($erreur){
echo $msgerreur;
}else{
//ton traitement si il n'y a pas d'erreur
// ......
}
}
if(!isset($_POST['envoyer']) || $errreur){
//on affiche ou ré affiche (avec ce qui est déjà saisi) le formulaire
?>
<form method="post" action="" onsubmit="return valider();" >
<fieldset><legend>Entrez vos coordonnés</legend>
<!--prénom-->
<br />
<label> Prénom</label> <input type="text" name="sprenom" id="sprenom" value="<?php echo $sprenom; ?>" />
<input type="reset" value="Réinitialiser" />
<input name="envoyer" type="submit" value="Transmettre" />
</form>
<?php
} //fin if
?>