Pb de controle de saisie dans un formulaire

Résolu/Fermé
crocus_61 Messages postés 24 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 27 juillet 2008 - 25 avril 2007 à 22:36
 rosita - 10 sept. 2007 à 12:00
Bonjour,
J'ai développé un formulaire pour lequel je voudrais évidemment faire un contrôle de saisie ;
j'ai regardé la doc SELFHTML qui me donne un exemple que je croyais clair, mais comme la fonction est écrite en JAVA et que j’utilise PHP… il doit y avoir une astuce qui m’échappe.
Voilà mon script :

<?php
function verif_formulaire()
{
if(document.formulaire.Nom.value == "") {
alert("Veuillez entrer votre Nom");
document.formulaire.Nom.focus();
return false;
}
if(document.formulaire.Prenom.value == "") {
alert("Veuillez entrer votre Prénom");
document.formulaire.Prenom.focus();
return false;
}
}
?>

<form name="formulaire" action="PageEspaceCom.php" method="get" onSubmit="return verif_formulaire()">
<pre>
<p>Vos Nom et Prénom :<br>
<input name="Nom" type="text" size="30" maxlength="30">
<input name="Prenom" type="text" size="30" maxlength="30"> <br> <br>
<input type="submit" name="okInscrComm" value="Valider">
</pre>
</form>

Résultat : même si l’on ne saisit rien... la PageEspaceCom.php est malgré tout appelée.

A vrai dire, je ne voulais pas faire d’ »alert » mais plutôt réafficher la saisie éventuelle, avec une astérisque + texte d’un message d’anomalie à côté de la zone erronée. Mais l’aide que j’ai trouvée ne m’indique que cette solution ; je débute, alors j’améliorerai plus tard… faut-il encore que cette solution fonctionne !
Quelqu’un a-t-il une idée ?

Merci les noctambules !

3 réponses

bin, il me semble que tu fais une légére confusion. le php est un langage serveur, et javascript, côt client. Si tu veux vérifier ta saisie, il faut le faire plutôt côté client, avec du javascript.
si tu veux générer une page avec l'erreru spécifique et en gardant les champs, alors les valeurs à récupérer sont des variables $_Post['ta variable'];
et tu fais les vérifications
3
crocus_61 Messages postés 24 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 27 juillet 2008
25 avril 2007 à 23:28
Merci Artur, désolé... je débute, tu vois !
Je vais virer tout ce qui concerne donc la fonction Java, et faire mes contrôles en PHP;
J'ai vu qu'on peut garder la valeur saisie pour la reproposer, mais pour mon astérique et texte d'anomalie par zone de saisie... ils ne sont donc pas en input, je peux les mettre dans le formulaire pour les "poster" aussi ? (je me perds complètement dans les échanges d'infos HTML/PHP)
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517
26 avril 2007 à 11:57
Salut a tous,
A mon avis il est préférable de faire les contrôles en javascript (coté client donc) puis ensuite en php sinon tu générera un trafic entre le client et le serveur en permanence (tant qu'il y aura des erreurs).
L'avantage du javascript est que le contrôle se fait immédiatement avant la soumission du formulaire.
function verif() 
{ 
	if (document.forms['formulaire'].nom_champ.value == "") 
	{
		alert ('Veuillez entrer le nom_du_champ');
		document.forms['formulaire'].nom_champ.focus();
		return false;
	}
	else {return true;}
}

Tu cré un fichier .js avec le controle cidessus et dans l'entête de ta page tu tu ajoute dans head:
<script language="javascript" src="ton_dossier/ton.js" type="text/javascript"></script>


Si le champ est vide au moment de la validation, ça réaffichera le formulaire mais avec le curseur positionné sur le champ en question grace a .focus dans le script.
C'est quand même interressant de ne pas avoir a chercher quel est le champ qui doit etre renseigné, si certains sont obligatoires et pas d'autres par exemple.
0
crocus_61 Messages postés 24 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 27 juillet 2008 > txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024
26 avril 2007 à 22:34
Bonsoir txiki, et merci également de ta réponse !
Alors je viens d'essayer aussi ta solution, et je ne sais pas si j'ai bien mis ce qu'il fallait dans le "head" :
<script language="javascript" src="localhost/Commercant_InfoCtl.js" type="text/javascript"></script>

(j'ai essayé plusieurs chemins... vérifié mes noms de formulaire, mes onsubmit... je crois tout, quoi, mais rien n'y fait, aucun msg ne s'affiche)

Tu as une autre piste ?

Sinon, pour la solution du ctl PHP, peux-tu me dire comment je vais faire apparaître les textes d'anomalie par champs de saisie ? (je compte faire une seule procédure qui contrôle tout d'un coup, et renseigne, par champs de saisie, un texte ano différent).
Faudra-t-il que je passe par PHP pour constituer le script HTML avec des "echo" pour sortir la valeur de ces textes ? Ne pourrais-je pas plutôt fournir à HTML ces valeurs ?

Beaucoup de questions, hein ? mais je plane !
Merci, si tu quelqu'un a le petit truc qui déverrouille tout mon dév !
0
txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024 517 > txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024
27 avril 2007 à 14:20
Salut crocus_61,
Bon je j'étais en plein déménagement, désolé pour le retard !
Qu'a-tu mis dans le fichier Commercant_InfoCtl.js ?

if (document.forms['formulaire'].nom_champ.value == "")
['formulaire'] est le nom de ton formulaire.
Si tu a plusieurs champs obligatoires il faudra autant de if que de champs obligatoires (donc a controler).
Voici un exemple avec plusieurs controles (a adapter au tiens bien sur):
// Vérification des champs obligatoires du formulaire
function verif() 
{ 
	if (document.forms['formulaire'].groupe.value == "") 
	{
		alert ('Veuillez ..........');
		document.forms['formulaire'].groupe.focus();
		return false;
	}
	if(document.forms['formulaire'].categorie.value == "") 
	{
		alert (Veuillez ..........');
		document.forms['formulaire'].categorie.focus();
		return false;
	}
	if(document.forms['formulaire'].nom.value == "") 	{
		alert ('Veuillez ..........');
		document.forms['formulaire'].nom.focus();
		return false;
	}
	if(document.forms['formulaire'].reference.value == "") 
	{
		alert (Veuillez ..........');
		document.forms['formulaire'].reference.focus();
		return false;
	}


.groupec'est le nom du champ (et chez moi, celui aussi du champ de la table sur la base de données).
le mien, je l'ai enregistré sous verifs.js, c'est court et explicite.

Si tu ne pige pas, n'hésite pas !
0
crocus_61 Messages postés 24 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 27 juillet 2008 > txiki Messages postés 6596 Date d'inscription mercredi 30 janvier 2002 Statut Contributeur Dernière intervention 22 février 2024
27 avril 2007 à 22:24
Merci de ta précieuse aide, Txiki, et du temps que tu passes à me répondre, sympa ! Bon emménagement !

Ben pour le ctl, j'avais déjà fait cette vérif, sur le nom du formulaire (j'ai fait attention aux maj/min, je crois que j'ai tout vérifié... bon, c'est peut-être aussi la façon dont j'ai enregistré le dos.js ==> l'explorateur me l'indique en "document texte" malgré le suffixe .js

Tu sais, je viens d'un monde "mini", et tout est différent par rapport à ce que j'ai l'habitude de manipuler... je galère.

Alors je tente les contrôles en PHP, mais là aussi, je coince :
voici un exemple de contrôle que je fais :

$nbAno=0;
$ano_nom='';
// Nom obligatoire
if (isset($_GET["Nom"])) {
$nom = $_GET["Nom"];
if ($nom=='') {
$nbAno++;
$ano_nom='Nom obligatoire'
}
}
...

et plus loin,
// si aucune anomalie, enregistrement des modifs
if ($nbAno == 0) {
... je met la BD à jour, c'est ok
}
// si des anomalies ont été détectées, réaffichage avec les ano
else {
echo '<form name="formInfoComm" action="PageEspaceCom.php" method="get" onSubmit="return verif_formulaire()">'; (nb, verif_formulaire ne sert à rien, puisque ko)

// Remplissage du formulaire de saisie des infos
include "InfoSaisir.php";
echo '<input type="submit" name="okModif" value="Valider vos modifications">';
echo '</form>';
}
?>

Enfin, dans InfoSaisir.php, on a :
<p>Vos informations personnelles :<br>
Vos Nom et Prénom :<br>
<input name="Nom" type="text" size="30" maxlength="30" value= <?php echo $nom; echo $ano_nom; ?> >
<input name="Prenom" type="text" size="30" maxlength="30" value= <?php echo $prenom; echo $ano_prenom; ?> > <br>

et … il ne connaît pas ano_nom…
Effectivement, ce ne sont pas des variables du formulaire, mais… vois-tu ce que je dois faire stp ?

Je vais fouiller encore..
0
mimoprod Messages postés 7 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 22 juin 2007 4
22 juin 2007 à 15:50
Au lieu de créer un nouveau sujet, voila j'ai le même soucis. Je n'ai aucun controle de saisie.

Voila mon code ou y a le formulaire :

<html>
<head>
<title>test formulaire ASP</title>
<script language="JavaScript" src="verif.js" type="text/javascript"></script>
</head>
<body>
<%
'if Request.Form("nom")<> "" and Request.Form ("prenom")<> "" and Request.Form ("mail")<>"" then
Response.Write "Votre nom est : " & (Request.Form("nom") & "<br>")
Response.Write "Votre prénom est : " & (Request.Form("prenom") & "<br>")
Response.Write "Votre mail est : " & (Request.Form("mail") & "<br>")
'end if
%>

<form name="formulaire" method="post">
<strong> Saisie des informations </strong><br>
Nom du participant:
<input type="text" size="25" name="nom"
value="<%=Request.Form("nom")%>"><br>
Prénom du participant:
<input type="text" size="20" name="prenom"
value="<%=Request.Form("prenom")%>"><br>
Mail du participant:
<input type="text" size="50" name="mail"
value="<%=Request.Form("mail")%>"><br>
<input type="submit" value="envoyer">
</form>

</body>
</html>

et voici le code verif.js :

function verif ()
{
if (document.forms['formulaire'].nom.value == "")
{
alert('Veuillez saisir votre nom')
document.forms['formulaire'].nom.focus();
return false;
}
if (document.forms['formulaire'].prenom.value == "")
{
alert('Veuillez saisir votre prénom')
document.forms['formulaire'].prenom.focus();
return false;
}
if (document.forms['formulaire'].mail.value == "")
{
alert('Veuillez saisir votre email')
document.forms['formulaire'].mail.focus();
return false;
}
else (return true;)
}

Merci d'avance ^^
0
slt je voudrais que l'on m'explique le code de tout à l'heure
0