formulaire et tableau

kalak
Invité n'ayant pas de compte PHPfrance

10 nov. 2011, 01:19

Bonsoir,

J'aurais besoin d'un petit coup de pouce, j'ai un formulaire et j'aimerais que lorsqu'il est envoyé ( et que toutes les conditions ont été respecté : champ rempli, email comporte bien un '@', etc...) il renvoie à l'utilisateur un tableau récapitulatif.
J'arrive à afficher le tableau mais je n'arrive pas à ce qu'il s'affiche seulement quand tout les champs sont bon.
Auriez vous une idée ?

Cordialement,

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

10 nov. 2011, 01:58

Avec du code ce serait plus facile.

M'enfin une idee ce serait de mettre un flag a true, et des qu'une condition n'est pas verifiee tu le passe a false. En faisant attention de ne pas le repasser a true dans les verifications qui pourraient suivre.

kalak
Invité n'ayant pas de compte PHPfrance

10 nov. 2011, 12:00

Oui pardon voici mon code :

http://pastebin.com/C3FPKxnN

je n'ai pas vraiment compris votre solution.

Cordialement,

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

10 nov. 2011, 12:18

salut,

exercie 4 ? tu suis un cours tuto ?
au vu de la dtd je t'indique que font n'est pas supportée => css :)

ce qu'indique ouckileou c'est ceci
<?php
// debut du fichier
$valid = true;
if (condition 1) {
}
else {
$valid = false;
}
etc etc
?>
en gros dès que tu a une erreur tu passe $valid = false et pour l'affichage final tu test si $valid=== true
<?php
if ($valid === true) {
affichage
}
?>


quel est votre volume préféré de la trilogie du voyageur galactique <= y a 5 réponses possibley a un smilblik dans la question :)

Attention lorsque tu met value=" <?php tu insère un espace au début du value et la ça met le brin dans ton formulaire (par exemple le nom devient espacemoogli au lieu de moogli c'est mal barré pour se connecter avec ça si tu a un espace membre ;)

@+
Il en faut peu pour être heureux ......

kalak
Invité n'ayant pas de compte PHPfrance

10 nov. 2011, 12:38

Non je ne suit pas un cours tuto je suit des cours de php tout cours mais j'ai un peu de mal.

donc je ne peux pas utiliser les echo comme je l'ai fais pour mettre en forme le texte ? je dois donc utiliser du css ?

Pour ce qui est de la question de la trilogie, je sais mais c'est normal c'est une trilogie de 5 volumes (ouais je sais sa fait plus très trilogie, mais il faut pas chercher à comprendre).

Sinon je ne comprend pas trop la solution que vous me proposez. la variable "$valid" c'est une variable que je crée ?
Je pense avoir quand même compris, je vais tester tout sa, c'est juste "$valid" que je ne comprend pas trop.

Cordialement

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

10 nov. 2011, 12:52

donc je ne peux pas utiliser les echo comme je l'ai fais pour mettre en forme le texte ? je dois donc utiliser du css ?
c'est juste que la balise n'existe pas en xhtml, il te faut donc utiliser la balise span avec une classe
ex : <span class="fontToto">le text</span>
avec la css
.fontToto {
color:#FF0000;
}

ça fonctionne aussi avec les autres balises, d'ailleurs si ce n'est pas une ligne de texte mais plusieurs voir d 'autre balise de type bloc il sera préférable d'utiliser les balises p ou div. pour cela je te renvoie sur http://www.alsacreations.com !)

pour le reste en gros la fin du fichier devient
<?php
if ( isset($valid) && $valid===true) {
?>
<table border="1px" cellspacing="0">
            <tr>
                <td>
                    <?php
                    if (isset($_POST['prenom'])) {
                        echo ("Pr&eacute;nom");
                    }
                    ?>
                </td>
                <td>
                    <?php
                    if (isset($_POST['prenom'])) {
                        echo (($_POST['prenom']));
                    }
                    ?>
                </td>
            </tr>
            <tr>
                <td>
                    <?php
                    if (isset($_POST['nom'])) {
                        echo ("Nom");
                    }
                    ?>
                </td>
                <td>
                    <?php
                    if (isset($_POST['nom'])) {
                        echo ($_POST['nom']);
                    }
                    ?>
                </td>
            </tr>
            <tr>
                <td>
                    <?php
                    if (isset($_POST['email'])) {
                        echo ("Email");
                    }
                    ?>
                </td>
                <td>
                    <?php
                    if (isset($_POST['email'])) {
                        echo ($_POST['email']);
                    }
                    ?>
                </td>
            </tr>
            <tr>
                <td>
                    <?php
                    if (isset($_POST['age'])) {
                        echo ("Age");
                    }
                    ?>
                </td>
                <td>
                    <?php
                    if (isset($_POST['age'])) {
                        echo ($_POST['age'] . " an(s)");
                    }
                    ?>
                </td>
            </tr>
            <tr>
                <td>
                    <?php
                    if (isset($_POST['bachelor'])) {
                        echo ("Bachelor");
                    }
                    ?>
                </td>
                <td>
                    <?php
                    if (isset($_POST['bachelor'])) {
                        echo ($_POST['bachelor']);
                    }
                    ?>
                </td>
            </tr>
            <tr>
                <td>
                    <?php
                    if (isset($_POST['pass'])) {
                        echo ("Password");
                    }
                    ?>
                </td>
                <td>
                    <?php
                    if (isset($_POST['pass'])) {
                        echo ($_POST['pass']);
                    }
                    ?>
                </td>
            </tr>
            <tr>
                <td>
                    <?php
                    if (isset($_POST['verif_pass'])) {
                        echo ("Retaper password");
                    }
                    ?>
                </td>
                <td>
                    <?php
                    if (isset($_POST['verif_pass'])) {
                        echo ($_POST['verif_pass']);
                    }
                    ?>
                </td>
            </tr>
            <tr>
                <td>
                    <?php
                    if (isset($_POST['gender'])) {
                        echo ("Sexe");
                    }
                    ?>
                </td>
                <td>
                    <?php
                    if (isset($_POST['gender'])) {
                        echo ($_POST['gender']);
                    }
                    ?>
                </td>
            </tr>
            <tr>
                <td>
                    <?php
                    if (isset($_POST['volume'])) {
                        echo ("Volumes");
                    }
                    ?>
                </td>
                <td>
                    <?php
                    if (isset($_POST['volume'])) {
                        foreach ((array) $_POST['volume'] as $vol) {
                            echo ($vol . "<br/>");
                        }
                    }
                    ?>
                </td>
            </tr>
            <tr>
                <td>
                    <?php
                    if (isset($_POST['comment'])) {
                        echo ("Commentaires");
                    }
                    ?>
                </td>
                <td>
                    <?php
                    if (isset($_POST['comment'])) {
                        echo (htmlentities($_POST['comment']));
                    }
                    ?>
                </td>
            </tr>
        </table>
<?php
}
?>
et dans les tests de validation des champs du formulaire tu ajoute $valid=false quand il y a une erreur (avec le message d'erreur quoi)
exemple
 <?php
                        if ((!isset($_POST['volume']) && isset($_POST['inscription']) && ($_POST['inscription']) <> "" ) || (isset($_POST['volume']) && sizeof($_POST['volume']) > 2 )) {
                            echo "<font color='#FF0000'>";
                            echo ("<strong>Erreur vous n'avez pas selectionné votre volume préféré de la trilogie du voyageur galactique; maximum deux choix possbiles</strong>");
$valid=false;
                        }
                        ?>
et bien sur la première ligne du script c'est
<?php
$valid=true;
?>
@+
Il en faut peu pour être heureux ......

kalak
Invité n'ayant pas de compte PHPfrance

10 nov. 2011, 13:15

Je vous remercie beaucoup je devrais m'en sortir avec sa. Par contre je viens de m'apercevoir que enfaite je n'ai pas le droit d'utiliser de css pour mettre en forme le texte auriez vous une solution alors ?

Cordialement,

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

10 nov. 2011, 15:27

Par contre je viens de m'apercevoir que enfaite je n'ai pas le droit d'utiliser de css pour mettre en forme le texte auriez vous une solution alors ?
c'est quoi c'te consigne, tu va aussi le faire en assembleur ton site ?

css c'est la partie cosmétique d'un site oueb.
d'un coté php récupère les données, et génére du html qui les décrient et css fait en sort que cela soit beau a lire ^^

tu peux toujours faire un <p style="color: #abcdef0">texte </p> mais ça reste du css mis dans la balise directement ^^


@+
Il en faut peu pour être heureux ......

kalak
Invité n'ayant pas de compte PHPfrance

10 nov. 2011, 17:56

ah franchement merci ta solution pour le tableau sa fonctionne nikel, juste que j'ai un tout petit tableau tout vide qui s'affiche quand même dès que la page du formulaire s'ouvre et sa je comprend pas pourquoi.

Par contre je viens de m'apercevoir qu'il y avait un truc qui ne fonctionnait pas dans mon formulaire, c'est au niveau de champ password et retaper password.
voici le morceau de code qui pose un problème : http://pastebin.com/WhbVpnch

Je m'explique il ne vérifie pas la longueur du mot de passe, ni si celui si correspond bien au deux même (password = retaper password), j'ai essayer de rajouter ceci par exemple :

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

mais cela ne fonctionne pas je ne comprend pas pourquoi.

voici mon code en entier : http://pastebin.com/Va5HenAn

et encore merci de ton aide précieuse moogli.

Cordialement,

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

11 nov. 2011, 13:11

Oula c'est le merdier ta condition la ;)

La différence en php c'est != pas <> ça c'est Sql ;)

La fonction empty retourne vrai quand la variable est vide !
Si tu utilise empty pas besoin de isset car empty n'émet pas d'erreur quand la variable n'existe pas !
Attention avec empty si la variable == zéro elle va retourner vrai alors que tu devrais avoir faux!

Donc repense ton test et ça ira mieux :)

@+
Il en faut peu pour être heureux ......

kalak
Invité n'ayant pas de compte PHPfrance

11 nov. 2011, 16:01

effectivement je n'avais pas fait attention mais la condition était vraiment merdique j'ai modifier celle du password comme ceci :

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

sa fonctionne nikel

par contre je n'y arrive pas avec celle de Retaper password, pourtant je procède pareil mais impossible de vérifier que les deux champs sont identiques. Voilà ce que j'ai fais et cela ne fonctionne pas :

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

Pourquoi cela ne fonctionne pas comme sa ?

Cordialement

Mammouth du PHP | 19672 Messages

11 nov. 2011, 19:10

Pose-toi la question : que retourne isset() ? Quand tu auras répondu à ça, tu auras résolu ton problème ;)
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

11 nov. 2011, 20:17

la fonction isset () renvoie false ... mais je ne comprend toujours pas :(

Mammouth du PHP | 19672 Messages

11 nov. 2011, 20:28

Elle retourne un booléen.

Maintenant, observe ce que tu as mis dans l'exemple qui ne fonctionne pas :
(isset($_POST['pass']) != isset($_POST['verif_pass']))

D'abord, au lieu de comparer le mot de passe avec la confirmation, tu compare leurs existences respectives. Si le premier est présent, isset retournera TRUE. Si le second est présent, isset retournera TRUE également, mais si le mot de passe est différent de la confirmation, rien ne le teste et donc rien ne retournera FALSE pour dire « Attention la confirmation n'est pas bonne».

Et donc, ce qu'il aurait fallu tester, c'est ... et je te laisse finir la phrase ;)
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, 13:49

il faut tester avec strcmp ? pour comparer les deux chaînes de caractères ?

J'ai fais cela : if (!isset($_POST['verif_pass']) && isset($_POST['inscription']) && ($_POST['inscription']) != "" || (!strcmp($_POST["pass"], $_POST["verif_pass"]) == 0))

mais sans succès encore...
je ne vois pas quoi d'autre utiliser.

Cordialement,