formulaire et tableau

Mammouth du PHP | 19672 Messages

12 nov. 2011, 13:56

Ok, on va procéder autrement.

Fais la liste (en français) de ce que tu dois vérifier : ensuite, essaye de traduire ça en PHP et mets le tout ici, on complètera ce qui manque.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

kalak
Invité n'ayant pas de compte PHPfrance

12 nov. 2011, 19:15

Je dois vérifier que le champ "verif_pass"existe et également que j'ai bien cliqué sur le bouton "inscription" avant d'afficher le message d'erreur, je dois ensuite vérifier que les deux mots de passe soient identiques, et qu'il comporte un minimum de 8 caractères. (vu que je vérifie le nombre de caractères sur le champ "pass" je ne pense pas avoir besoin de le revérifier une deuxième fois sur le champ "verif_pass" puisque je vais vérifier si celui ci correspond au même que "pass".

Ce qui donne en php :

if ((!isset($_POST['pass']) && isset($_POST['inscription']) && ($_POST['inscription']) <> "" ) && ($_POST['pass'] == $_POST['verif_pass'] )


Cordialement,

Mammouth du PHP | 19672 Messages

12 nov. 2011, 19:28

Ben le problème dans ce cas, c'est que tes traduction ne correspondent pas toutes aux conditions listées : si je reprends ta liste ça donne ceci :

Je dois vérifier que
  1. le champ "verif_pass"existe
  2. j'ai bien cliqué sur le bouton "inscription" avant d'afficher le message d'erreur
  3. les deux mots de passe soient identiques,
  4. le mot de passe comporte un minimum de 8 caractères.
    (vu que je vérifie le nombre de caractères sur le champ "pass" je ne pense pas avoir besoin de le revérifier une deuxième fois sur le champ "verif_pass" puisque je vais vérifier si celui ci correspond au même que "pass".
Compare avec la liste des conditions que tu as écrites en PHP :
  1. !isset($_POST['pass'])
  2. isset($_POST['inscription'])
  3. ($_POST['inscription']) <> "" )
  4. ($_POST['pass'] == $_POST['verif_pass'] )
Reprends ces deux listes et mets-moi les correspondances entre les items, il manque des bouts quelque part, et en relisant attentivement ton code, il y a une erreur dans une des condition en PHP
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

kalak
Invité n'ayant pas de compte PHPfrance

12 nov. 2011, 20:11

1. le champ "verif_pass" existe ==> !isset($_POST['pass']) (ou plutot isset($_POST['pass']); mais d'ailleurs je ne comprends pas très bien à ce niveau car que j'enlève ou non le point d'exclamation cela ne change rien à ma condition je ne comprend pas)
2. j'ai bien cliqué sur le bouton "inscription" avant d'afficher le message d'erreur ==> isset($_POST['inscription']) ($_POST['inscription']) != "" )
3. les deux mots de passe soient identiques, ==> ($_POST['pass'] == $_POST['verif_pass'] )
4. le mot de passe comporte un minimum de 8 caractères. ==> je n'ai pas besoin de le revérifier.

le problème c'est que pour la condition 3 je ne test pas l'existence de la variable je pense que le problème vient de là ?

Cordialement,

Mammouth du PHP | 19672 Messages

12 nov. 2011, 20:26

Ok, revoyons chaque point :

Premier test : la différence entre la présence ou non d'un « ! » est très importante, si tu ne sais pas quelle différence ça fait, tu risques fort de patiner longtemps, et il faut reconnaitre que ça ne se devine pas. écrire « !isset() » est équivalent à « false == isset() », donc à avec le « ! », ça revient à vérifier que le mot de passe ... n'existe pas, ce qui n'a rien de logique et c'est à ce détail que je faisais référence en indiquant une erreur tout à l'heure;

Second et troisième point, c'est correct

Quatrième point : où est la condition écrite en PHP ?

Quant à ton questionnement sur le point trois : dans la mesure où tu as testé l'existence du mot de passe, en ajoutant la vérification d'équivalence avec le mot-de-passe de vérification, le test d'existence du second est implicite, il est inutile de l'ajouter explicitement.

Travaille en listes et traite un item à la fois, tu te mélangeras moins les pinceaux, et tu regrouperas ensuite quand chaque condition aura été correctement définie.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

kalak
Invité n'ayant pas de compte PHPfrance

12 nov. 2011, 20:47

Oui le point d'exclamation sert à faire l'inverse d'une fonction. je dois donc bien laisser !isset($_POST['pass']) car si il n'existe pas j'affiche le message d'erreur.

Pour la quatrième voici la condition : (isset($_POST['pass']) && strlen($_POST['pass']) <8 )

Cordialement,

kalak
Invité n'ayant pas de compte PHPfrance

13 nov. 2011, 01:48

Bonsoir,

En reprenant mon code, je suis arrivé à faire cela :

if (!isset($_POST['verif_pass']) && isset($_POST['inscription']) && ($_POST['inscription']) != "" || isset($_POST['verif_pass']) && ($_POST['verif_pass']) != ($_POST['pass']))

Cela fonctionne nickel, mis à part que quand les deux champs ("pass" et "verif_pass" ) sont tout les deux vides pour lui la condition : isset($_POST['verif_pass']) && ($_POST['verif_pass']) != ($_POST['pass']) est rempli donc il n'affiche pas le message d'erreur. J'ai pas mal cherché et testé des choses mais sans résultat, comment pourrais-je faire ?

Cordialement,

Mammouth du PHP | 19672 Messages

13 nov. 2011, 02:37

Oui le point d'exclamation sert à faire l'inverse d'une fonction.
Il serait tout à fait important que que réfléchisses soigneusement à ce détail : doit vérifier si l'élément existe, ou vérifier qu'effectivement il n'existe pas.

Si tu assimiles correctement ce point, tu résoudras l'ensemble ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Kalak
Invité n'ayant pas de compte PHPfrance

13 nov. 2011, 13:21

Je dois vérifier que l'élément n'existe pas puisque c'est pour afficher le message d'erreur, donc si il existe il n'y aura pas de message d'erreur d'afficher, vous êtes pas d'accord avec sa ? Je ne comprend vraiment pas la pourquoi cela ne fonctionne pas. Cordialement,

Mammouth du PHP | 19672 Messages

13 nov. 2011, 13:34

On part des règles de gestions pour définir les actions. Là, on veut enregistrer des données, il est donc indispensable que ces données soient présentes et valides.

Si on veut enregistrer un mot de passe, on doit donc tester qu'il existe. L'alternative sera donc la suivante et c'est l'élément important à bien comprendre : s'il existe, on peut l'enregistrer, sinon, on affichera un message d'erreur.

Comment traduire ça en PHP ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

kalak
Invité n'ayant pas de compte PHPfrance

13 nov. 2011, 13:56

oui c'est vrai je suis d'accord avec vous, mais par contre je ne vois pas comment formuler cela en php ...

Cordialement

Mammouth du PHP | 19672 Messages

13 nov. 2011, 14:11

Quand on parle d'alternative « si condition, .., sinon ...», ça correspond à « if ... else »

« if(condition) » va déterminer si « condition » vaut vrai ou faux : soit ça vaut VRAI (TRUE) et dans ce cas les instruction qui suivent le « if » seront exécutées, soit FAUX (FALSE) et dans ce cas, les instructions qui suivent le « else » seront exécutées... si il existe un « else » bien entendu. On peut en effet décider de n'exécuter certaines instruction qu'à certaines conditions, et si ces conditions ne sont pas réunies, ils peut tout simplement ne rien se passer et on passe à la suite du code.

Si l'élément existe => if(isset(élément));
Si l'élément n'existe pas => if(!isset(élément));

Est-ce que c'est plus clair comme ça ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

kalak
Invité n'ayant pas de compte PHPfrance

13 nov. 2011, 14:23

Merci pour ce petit rappel essentiel c'est plus clair pour moi maintenant.

Il faudrait donc faire un truc de ce genre je pense :


if (!isset($_POST['verif_pass']) && isset($_POST['inscription']) && ($_POST['inscription']) != ""
{
eco ('veuiller remplir le champ');
}
elseif isset($_POST['verif_pass']) && ($_POST['verif_pass']) != ($_POST['pass']))
{
echo ('mot de passe différent');
}

Est ce que cela serait mieux comme ceci ?

(je suis désolé je débute vraiment en php c'est pas évident pour moi)

Cordialement,

Mammouth du PHP | 19672 Messages

13 nov. 2011, 17:04

As-tu testé tes solutions ? Le principal, c'est de rester logique. Teste et expérimente, et si tu n'obtiens pas le résultat attendu, montre le code et explique le raisonnement que tu as mis en œuvre pour le créer.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

kalak
Invité n'ayant pas de compte PHPfrance

13 nov. 2011, 17:26

j'ai testé mon code et essayé d'autre petite chose mais la je comprend vraiment plus rien, je sais plus quoi faire, je le pense en français essaie de le remettre en php mais rien n'y fait je ne sais plus quoi faire.

Cordialement,