formulaire php

kalak
Invité n'ayant pas de compte PHPfrance

06 nov. 2011, 14:00

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,

ViPHP
xTG
ViPHP | 7331 Messages

06 nov. 2011, 14:14

Il n'y a aucun code PHP dans cette page, le problème ne vient pas de là.

kalak
Invité n'ayant pas de compte PHPfrance

06 nov. 2011, 14:38

oups pardon je mettais trompé de fichier,
voici le bon fichier :

http://pastebin.com/zG93khdF

Cordialement,

ViPHP
xTG
ViPHP | 7331 Messages

06 nov. 2011, 15:01

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.

kalak
Invité n'ayant pas de compte PHPfrance

06 nov. 2011, 15:10

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,

ViPHP
xTG
ViPHP | 7331 Messages

06 nov. 2011, 15:27

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 ? :)

kalak
Invité n'ayant pas de compte PHPfrance

06 nov. 2011, 18:02

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,

ViPHP
xTG
ViPHP | 7331 Messages

06 nov. 2011, 19:37

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.

kalak
Invité n'ayant pas de compte PHPfrance

06 nov. 2011, 20:32

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,

ViPHP
xTG
ViPHP | 7331 Messages

06 nov. 2011, 20:43

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

kalka
Invité n'ayant pas de compte PHPfrance

06 nov. 2011, 22:32

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,

ViPHP
xTG
ViPHP | 7331 Messages

06 nov. 2011, 23:01

Encore et toujours la même rengaine. Tu utilises dans tes elseif des variables dont tu ne testes pas l'existence.

kalak
Invité n'ayant pas de compte PHPfrance

06 nov. 2011, 23:44

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,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

07 nov. 2011, 11:18

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

@+
Modifié en dernier par moogli le 07 nov. 2011, 14:46, modifié 1 fois.
Il en faut peu pour être heureux ......

kalak
Invité n'ayant pas de compte PHPfrance

07 nov. 2011, 13:46

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