Page 1 sur 2

formulaire php

Posté : 06 nov. 2011, 14:00
par kalak
Bonjour,

Je viens vers vous pour trouver de l'aide car je ne m'en sors pas là.

voici le code de mon formulaire :
http://pastebin.com/GN1TrALs

déjà à l'exécution j'ai plusieurs erreur de variable non définie que je ne comprend absolument pas puisque mes variables sont belle et bien définit. Et surtout mon plus gros problème c'est que les messages d'erreurs pour avertir l'utilisateur qu'il n'a pas rempli ou mal rempli les champs s'affiche au lancement de la page. J'aimerais savoir comment faire pour que les messages s'affichent uniquement quand le formulaire est posté.

Cordialement,

Re: formulaire php

Posté : 06 nov. 2011, 14:14
par xTG
Il n'y a aucun code PHP dans cette page, le problème ne vient pas de là.

Re: formulaire php

Posté : 06 nov. 2011, 14:38
par kalak
oups pardon je mettais trompé de fichier,
voici le bon fichier :

http://pastebin.com/zG93khdF

Cordialement,

Re: formulaire php

Posté : 06 nov. 2011, 15:01
par xTG
Les joies de register_globals... Va falloir remettre à jour les cours que tu lis. ;)

Toutes tes variables n'existent pas sur un serveur avec PHP5 car register_globals est de base à off (et c'est aussi bien ainsi).
En gros ce n'est pas $variable mais $_POST['variable'] dans ton cas qu'il faut utiliser.
Ensuite il y a plusieurs variables que tu tentes d'utiliser avant l'envoi du formulaire comme $bachelor. Il faut tester son existence avant de l'utiliser.

Re: formulaire php

Posté : 06 nov. 2011, 15:10
par kalak
je l'ai avais mis au tout début et j'ai tout changé par la suite voilà donc de nouveau le code corrigé :

http://pastebin.com/f7XzfSmp

mais j'ai toujours le même problème dès que l'on ouvre le formulaire on a déjà toutes les erreurs disant que les champs sont vides j'avais essayer de faire comme ceci :

if (!isset($_POST["prenom"]) || !ctype_alpha($_POST["prenom"]) && '$_POST["inscription"] <> ""))

mais rien n'y fait sa ne fonctionne pas et je n'arrive pas à trouver comment faire.

Et je ne comprend pas l'erreur qui s'affiche pour le champ bachelor j'ai pourtant fait comme les autres champs.

(sa fait pas longtemps que je fais du php soyez indulgent avec moi )

Cordialement,

Re: formulaire php

Posté : 06 nov. 2011, 15:27
par xTG
La condition n'est pas bonne, le OU fait qu'en cas d'inexistence de la variable tu passes au test suivant, à savoir la lecture de la variable pour son utilisation dans ctype_alpha().
Il faut tester ainsi :
if ( !isset($_POST['prenom']) || (isSet($_POST['prenom']) && !ctype_alpha($_POST['prenom']) && isSet($_POST['inscription'] && $_POST['inscription'] <> "") )
Sachant que les deux derniers tests peuvent être remplacés par :
!empty($_POST['inscription'])
Cela teste l'existence et le vide.

Concernant $_POST['bachelor'] je vais me répéter mais tu ne testes pas son existence avant de l'utiliser... As-tu conscience de ce que fais la fonction isSet() ou l'utilises-tu par le plus grand des hasards ? :)

Re: formulaire php

Posté : 06 nov. 2011, 18:02
par kalak
merci de votre réponse je vais travailler ceci et voir le résultat.

Pour ce qui est de la case" bachelor" non à vrai dire je ne comprend pas trop comment cela fonctionne, cela test si il y a une valeur ou non présente il me semble.
Et donc je ne vois pas comment m'en sortir avec cette case, je n'arrive pas à comprendre.

Et en tout cas merci pour la petite précision sur le OU car je ne savais pas je comprend mieux maintenant.

Cordialement,

Re: formulaire php

Posté : 06 nov. 2011, 19:37
par xTG
En gros avant d'utiliser une variable qui n'est pas locale (cela peut donc impliquer qu'elle n'existe pas à un instant t) il faut tester son existence.
Car utiliser du vide dans un calcul c'est pas top par exemple...
Et la fonction isSet() est faite pour faire ce test d'existence.

Re: formulaire php

Posté : 06 nov. 2011, 20:32
par kalak
D'accord je comprend mieux maintenant. Par conter je ne comprend pas ceci :

if ( !isset($_POST['prenom']) || (isSet($_POST['prenom']) && !ctype_alpha($_POST['prenom']) && isSet($_POST['inscription'] && $_POST['inscription'] <> "") )

et je n'arrive pas a le faire fonctionner.

Cordialement,

Re: formulaire php

Posté : 06 nov. 2011, 20:43
par xTG
En français :

Code : Tout sélectionner

SI ( prenom n'existe pas ) OU SI ( prenom existe ET est différent d'une chaîne alphabétique ET inscription existe ET est différent de vide ) Alors

Re: formulaire php

Posté : 06 nov. 2011, 22:32
par kalka
je m'en sors petit à petit par contre j'ai du modifier ce que vous m'aviez donné par cela :

if ( (!isset($_POST['prenom']) && isset($_POST['inscription']) && ($_POST['inscription']) <> "" )|| (isset($_POST['prenom']) && !ctype_alpha($_POST['prenom'])))

et la sa marche nikel.

Par contre j'ai un soucis pour ce champ là :

<tr>
<td>Retaper password</td>
<td>
<input type="password" name="verif_pass" />
</td>
</tr>
<tr>
<td>
<?php
if ( (!isset($_POST['verif_pass']) && isset($_POST['inscription']) && ($_POST['inscription']) <> "" )|| (isset($_POST['verif_pass']) && !ctype_alpha($_POST['verif_pass'])))
{
echo "<font color='#FF0000'>";
echo ("merci de remplir une deuxième fois le champ mot de passe");
}

elseif (($_POST['pass']) !=($_POST['verif_pass']))
{
echo "<font color='#FF0000'>";
echo("C'est pas pareil !!");
}
elseif (strlen($_POST['pass']) < 8 )
{
echo "<font color='#FF0000'>";
echo("mot de passe trop court minimum 8 caractères");
}
?>

Je n'y arrive pas pour ce champ.

Cordialement,

Re: formulaire php

Posté : 06 nov. 2011, 23:01
par xTG
Encore et toujours la même rengaine. Tu utilises dans tes elseif des variables dont tu ne testes pas l'existence.

Re: formulaire php

Posté : 06 nov. 2011, 23:44
par kalak
effectivement je suis un vrai tête en l'air. Par contre j'ai encore un soucis et je m'en arrache les cheveux, je n'arrive à rien avec c'est deux champs :

if (($_POST["pass"]) == "" )
et
if (($_POST["verif_pass"]) == "" )

je n'arrive pas à mettre d'isset et à afficher le message d'erreur seulement une fois que le formulaire a été posté.
Je les ai retourné dans tout les sens mais rien n'y fait.

Cordialement,

Re: formulaire php

Posté : 07 nov. 2011, 11:18
par moogli
if ((isset($_POST["pass"])) && !empty($_PSOT['pass'] ) {
//glop
}
else {
// pas glop
}
et la faut faire la même chose !
if (($_POST["verif_pass"]) == "" )

je t'invite a regarder (lire) les doc de ces deux fonctions :) http://www.php.net/isset et http://www.php.net/empty

@+

Re: formulaire php

Posté : 07 nov. 2011, 13:46
par kalak
effectivement c'est quand même plus clair maintenant.
Je m'en suis sorti il me reste juste un petit détail que je n'arrive pas a régler, j'aimerais que lorsque un champ n'est pas valide et que l'utilisateur envoie le formulaire que les cases valides reste saisi pour éviter à l'utilisateur de re-remplir les champs.

j'ai vu des choses comme quoi il fallait mettre dans le input à value un truc du genre value="<?php echo 'lavariable' ?>"
mais en vain rien ne fonctionne et je n'arrive pas à trouver la solution.

Cordialement