IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Afficher uniquement les cases saisies


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 8
    Points
    8
    Par défaut Afficher uniquement les cases saisies
    Bonjour tout le monde,

    Je ne sais pas si je suis dans la bonne rubrique, voici ce que j'aimerais faire en php.

    J'ai plusieurs formulaires en php/html avec une page php chargée de regrouper toutes les informations, j'utilise donc des sessions et cela fonctionne bien.

    Sur certaines pages ou j'ai mes formulaires, j'ai des tableaux (avec des textbox) qui font parfois 20 lignes parfois plus. J'affiche également ce tableau dans ma page "resumé". J'aimerais mettre en place un système afin que lorsque l'on écrit rien dans une case du formulaire, que cette case ne soit pas affichée dans la page résumé.

    En gros je n'ai pas envie d'avoir un tableau de 20 lignes dans ma page résumé si seul 5 lignes ont été saisie dans ma page formulaire.

    Comment puis-je faire cela ?


    Merci !

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Teste les valeurs avant l'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(!empty($_POST['nomchamp']))
    {
    echo $_POST['nomchamp'];
    }

  3. #3
    Membre éclairé
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 687
    Points
    687
    Par défaut
    Salut !

    Je crois que tu ne pourras pas éviter de contrôler la valeur de chaque champ, afin de voir s'ils sont remplis ou non. Si tu as vraiment beaucoup de champs, tu peux faire une boucle comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    // tableau contenant le nom de tous les champs de ton formulaire
    $liste_champs=array("nom","prenom","champs3","champ4"); 
     
    foreach($liste_champs AS $champ) {
     if(isset($_POST[$champ]) AND !empty($_POST[$champ])) {
      echo "<p>".$champ." : ".$_POST[$champ]."</p>";
     }
    }
    ?>
    A++

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    J'ai pensé à utiliser des isset ou des empty mais je ne sais pas si cela peut fonctionner dans mon cas.

    Exemple :

    Formulaire 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <tr class="odd">
    	<th class="firstColumn" scope="row">Postes</th>
        <td><?php if(!empty($_SESSION['parc']['txt_1']))
    echo '<input id="txt_1" name="txt_1" size="70" type="text" value="'.$_SESSION['parc']['txt_1'].'" />';
    else
    echo '<input id="txt_1" name="txt_1" size="70" type="text" />';?></td>
    (J'utilise une session afin de garder en mémoire ce que l'utilisateur a saisi)
    J'ai donc un tableau avec plusieurs champs et colonnes, imaginons que l'utilisateur tape le nom d'une machine (variable txt_1) et qu'il n'est qu'une seule machine à rentrer... Dans le tableau du formulaire j'ai créer plusieurs "case" "txt_" au cas ou l'utilisateur ai plusieurs machines à rentrer.

    Dans ma page "resume.php", moi j'ai affiché un tableau avec plusieurs cases mais si l'utilisateur ne tape que le nom d'une seule machines, les autres cases vont restées vide "pour rien".

    resume.php
    :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <tr class="odd">
    	<th class="firstColumn" scope="row">Poste client</th>
        <td><?php echo($_SESSION['parc']['txt_1']);?></td>
    Votre méthode fonctionne t-elle, c'est à dire va t'elle me permettre de ne pas afficher les cases du tableau si rien à été saisi au préalable dans le formulaire ?

  5. #5
    Membre éclairé
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 687
    Points
    687
    Par défaut
    Salut !

    Oui tout à fait. C'est le principe des "If ... else", ou en français, "si ...sinon".

    Tu pourrais avoir quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php 
    if(isset($_SESSION['parc']['txt_1']) AND !empty($_SESSION['parc']['txt_1'])) {
        echo '<tr class="odd">
        <th class="firstColumn" scope="row">Poste client</th>
        <td>'.$_SESSION['parc']['txt_1'].'</td>
        </tr>';
    }
    ?>
    A+

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Salut,

    J'ai testé et ça fonctionne bien merci !

    J'ai une dernière question, je souhaiterais afficher un message du style "Expirée" dans la page "resume" si l'utilisateur à cochée une textbox dans la page formulaire mais ça ne fonctionne pas.

    Page résumé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($_SESSION['parc']['idchk_6']) {
        echo '<td> Expirée </td>' ;	}
    	else {
    	echo '<td> OK </td>' ;	}
    Le problème c'est que cette condition m'affiche toujours "Expirée", même quand la case est décochée...

    Page formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <td><?php if (!empty($S_SESSION['parc']['idchk_6']))
    echo '<center><input type="checkbox" id="idchk_6" name="idchk_6" onclick="ChangeCouleur(this)" value="'.$_SESSION['parc']['idchk_6'].' " />'; 
    else
    echo '<center><input type="checkbox" id="idchk_6" name="idchk_6" onclick="ChangeCouleur(this)"/>';?></center> </td>
    Merci de votre aide !

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Personne n'a d'idées ?

  8. #8
    Membre averti Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 342
    Points
    342
    Par défaut
    Je crois que pour les chekbox, c'est différent des champs input ou area...

    Si ta case est décochée, elle n'existera pas. En revanche si elle est cochée, elle aura la valeur que tu lui aura donné.

    tu peux tester comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(isset($_POST['ton_check'])) {
        echo "ma checkbox est coch&eacute;e!";
    }
    else {
        echo "Oh non! ma checkbox n'est pas coch&eacute;e!";
    }
    Et pourtant... Elle tourne.
    http://www.djib.me

  9. #9
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Oui j'ai testé ça fonctionne lorsque je met en action du formulaire : "action="resume.php" mais si je passe par d'autres pages avant cela ne fonctionne plus.

    J'ai essayé de passé en SESSION comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (isset($_SESSION['parc']['idchk_6'])) {
          echo 'La checkbox est cochée';
        }
        else {
          echo 'La checkbox n\'est pas cochée';
        }
    mais cela m'affiche toujours "la checkbox n'est pas cochée" même lorsque je l'ai cochée alors que mes autres pages récupère pourtant bien la session...

  10. #10
    Membre averti Avatar de beejeridou
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Février 2007
    Messages : 280
    Points : 342
    Points
    342
    Par défaut
    Lorsque tu poste des infos depuis un formulaire de type "post", tu ne peux récupérer les infos que par $_POST['name_du_champ'];

    Sinon, je tombe de haut...
    Et pourtant... Elle tourne.
    http://www.djib.me

  11. #11
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Oui ta méthode fonctionne bien lorsqu'en action je met la page final, mais lorsque je passe par d'autre page cela ne fonctionne plus, ma page final m'affiche toujours que le case est décochée.

  12. #12
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Je pense que la session n'arrive pas à enregistrer le fait que la case soit cochée mais je n'arrive pas à trouver l'erreur étant donné que pour le texte ça fonctionne bien.

  13. #13
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Soit un peu précis et montres nous ton code.
    Merci.

  14. #14
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Oui d'accord je vais détaillé. Donc cela fonctionne lorsque mon formulaire (parc) pointe directement sur ma page résumé.

    parc.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     <form method="post" action="resume.php">
     
    <td><input type="checkbox" id="idchk_1" name="idchk_1" onclick="ChangeCouleur(this)"/></td>
    Donc si je clique sur la checkbox et que je valide, la page résumé m'affiche bien "la checkbox est cochée" et inversement.

    Page resume.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     <?php
    if(isset($_POST['idchk_1'])) {
        echo "Checkbox cochee";
    }
    else {
        echo "Checkbox pas cochee";
    }
    ?>
    Là pas de soucis, or dans mon application j'ai besoin de passer à travers d'autres pages, ma page formulaire ressemble donc à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" action="logiciel.php">
    Ma page logiciel comprend donc un autre formulaire, je stock donc les informations dans des sessions et à l'entête de page du formulaire logiciel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (isset($_POST['idchk_1']))
    {$_SESSION['parc']['idchk_1']=$_POST['idchk_1'];}
    et ainsi de suite le formulaire logiciel pointe sur un autre qui pointe sur un autre, j'utilise donc la portion de code ci dessus sur chaque page.
    Ce code fonctionne bien pour le texte, ma page résumé récupère bien les valeurs, seule la checkbox pose problème.

    Lorsque je laisse le code comme ça la page résumé m'affiche toujours "la checkbox n'est pas cochée". J'ai aussi essayé de changé la méthode d'accès par un SESSION dans la page résumé mais c'est la même chose.

  15. #15
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    J'ai testé quelques trucs et en faite, le résultat de la checkbox s'affiche bien sur la page mise en "action" mais pas sur celle d'après, exemple je coche ma checkbox , sur la page suivante j'ai bien "Cochée" et sur celle d'après "Non cochée" avec le même code sur les deux pages :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(isset($_POST['idchk_1'])) {
        echo '<td><font color="red">'."coche".'</font></td>';
    }
    else {
        echo '<td>'."non coche".'</td>';

  16. #16
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Besoin d'un petit coup de pouce please

    Edit : j'ai réussi à un peu avancer, en effet, j'ai un problème avec mon passage du POST en SESSION, j'ai en effet dans ma page formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (isset($_POST['idchk_1']))
    {$_SESSION['parc']['idchk_1'']=$_POST['idchk_1'];}
    Lorsque je change le isset par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     if(!empty($_SESSION['parc']['idchk_1'])) {
    $_SESSION['parc']['idchk_1']=$_POST['idchk_1'];}
    Et bien ça fonctionne bien, ma page récupère bien les valeurs, le problème désormais quand je vais sur la page formulaire j'ai le message d'erreur suivant : "Notice: Undefined index: idchk_1"

    Comment puis-je y pallier sans l'utilisation d'un isset ?

    Merci

  17. #17
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    Regarde la coloration syntaxique, tu as une quote en trop après idchk_1.
    {$_SESSION['parc']['idchk_1'']=$_POST['idchk_1'];}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {$_SESSION['parc']['idchk_1']=$_POST['idchk_1'];}

  18. #18
    Futur Membre du Club
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Oui il s'agit d'une faute que j'ai faite en recopiant mon code.

    Je pense que l'erreur vient du fait que mes checkbox ne sont pas sauvegardées, exemple, si j'en coche une le formulaire d'après affiche bien que la checkbox est cochée mais lorsque je reviens sur ma page formulaire celle-ci est décochée.

    J'ai utilisé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php if(!empty($_SESSION['parc']['idchk_1']))
    echo '<input id="idchk_1" name="idchk_1" size="20" type="checkbox" onclick="ChangeCouleur(this)" checked="checked" value="'.$_SESSION['parc']['idchk_1'].'" />';
    else
    echo '<input id="idchk_1" name="idchk_1" size="20"" type="checkbox" onclick="ChangeCouleur(this)"/>';?>
    mais c'est pareil, la checkbox ne reste pas cochée...

Discussions similaires

  1. Quel webpart pour afficher uniquement les sous-sites d'un site?
    Par gracouille dans le forum SharePoint
    Réponses: 0
    Dernier message: 02/06/2008, 19h37
  2. [cURL] Afficher uniquement les entêtes
    Par LordDaedalus dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 08/02/2008, 22h55
  3. InputQuery n'affichant pas les caractères saisies
    Par netah25 dans le forum C++Builder
    Réponses: 2
    Dernier message: 18/01/2007, 11h03
  4. Réponses: 1
    Dernier message: 12/07/2006, 09h51
  5. Réponses: 4
    Dernier message: 05/07/2006, 21h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo