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 :

choix de checkox


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 18
    Par défaut choix de checkox
    Bonjour,

    j'ai un petit problème au niveau de ma réflexion.

    j'ai une liste de noms et de prénoms que je récupère en BDD. Suite a cela j'ai rajouté des checkbox pré-cochés devant chaque noms.

    je voudrais a la fin pouvoir imprimer cette liste de noms uniquement pour ceux qui sont cochés. Je n'ai aucun problème pour les autres informations que je voudrais imprimées mais le choix des checkbox me bloque...

    code concernant ma liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <p>Les etudiants de cette classe sont :</p>
    <?php
            foreach( $etudiants as $etudiant ) {
    ?>
          <center>  <input type="checkbox" name="macase" checked="checked" /><?php echo $etudiant['Nom']; ?> <?php echo $etudiant['Prenom'];echo"<br />" ?></center>
    partie impression:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <div id='contenu'>
    <div>
    <?php
    if(isset($_GET['page']) ){
        $page=$_GET['page'];
        if(!in_array($page,array(1))) $page=0;
     
       }else $page=0;
     
       switch($page){
        case 1: include'recup.php'; break;
        default : echo"";
    }
        echo"<p id= 'imprimer'><a href='' onclick='window.print();return false;'>Imprimer</p>";
        ?>
    </div>
    </div>
    petite partie css:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @media print{
     
        #imprimer{
            display:none;
        }
        }
    Une aide serait la bienvenue, merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    d'où vient $etudiants ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 18
    Par défaut
    $etudiants me vient d'une requete.

    Dans la page juste avant celle ci j'ai un menu deroulant avec des noms de classes.Apres avoir choisi une classe dans ce menu deroulant une autre page apparait(celle qui pause prbl ici) avec la liste des élevès correspondant. ici $etudiants vient de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            $requete = $bdd->prepare('SELECT * FROM etudiant WHERE Classe_idClasse = ?');
            $requete->execute( array( intval( $_POST["classe"] ) ));
            $etudiants = $requete->fetchAll();
            $requete->closeCursor();
    edit: j'ai du mal pour le moment mais je pense avoir trouvé la bonne méthode.je dois stocker les choix cochés dans un tableau pour pouvoir ensuite non plus afficher la liste mais le tableau.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    2 choses importantes à savoir sur les checkbox :
    • 1/ SEULES les checkbox COCHEES sont transmises
    • 2/ comme ce sont des choix multiples, il faut mettre des crochets pour le name : name="macase[]".


    Et 3/ Pour IDENTIFIER les checkbox, on met l'id de l'étudiant en value : value="<?php echo $etudiant['id']; ?>".


    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" name="macase[]" value="<?php echo $etudiant['id']; ?>" checked="checked" /><?php echo $etudiant['Nom'].' '.$etudiant['Prenom'];
    On récupère alors un array des cases cochées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $where_id_in = '';
    if( isset($_POST['macase']) ) // $_POST['macase'] est un array des ids cochés
    {
      var_dump($_POST['macase']); // (pour vérifier)
      $where_id_in = " WHERE id IN (" .implode(',', $_POST['macase']) ) .") "; // de la forme : " WHERE id IN (7,12,15,34) "
    }
    $requete = "SELECT ..............." . $where_id_in ." ";

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 18
    Par défaut
    Rebonjour,

    Merci pour l'explication globale, elle m'a aidée sur pas mal de points

    Au niveau du name j'y travaillais justement hier soir mais sans résultats apparents... .

    J'ai pu donc tester ton code j'espere ne pas mettre trompé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
        <p>Liste des &#233tudiants :</p>
    <?php
            foreach( $etudiants as $etudiant ) {
    ?><!--type="checkbox"-->
          <center>  <input type="checkbox" name="macase[]" value="<?php echo $etudiant['id']; ?>" checked="checked" /><?php echo $etudiant['Nom'].' '.$etudiant['Prenom']; ?></center>
     
    	  <?php
        $where_id_in = '';
    if( isset($_POST['macase']) ) // $_POST['macase'] est un array des ids cochés
    {
      var_dump($_POST['macase']); // (pour vérifier)
      $where_id_in = " WHERE id IN (" .implode(',', ($_POST['macase']) ) .") "; // de la forme : " WHERE id IN (1,...) " 
    }
    $requete = "SELECT * FROM etudiant WHERE Classe_idClasse = ?" . $where_id_in ." ";
        }
    ?>
    Pour le moment pas d’erreurs apparentes mais impossible d'afficher mes noms uniquement cochés lors de mon impression. Je pense que ma méthode ne va pas puisque je dois a chaque fois cacher ce que je n'utilise pas dans mon window.print()...

  6. #6
    Invité
    Invité(e)
    Par défaut
    Il ne suffit pas de coller les bouts de code n'importe où, n'importe comment...

    Fais preuve d'un peu de réflexion et de LOGIQUE.....



    Et affiche $requete : il y a un souci...

Discussions similaires

  1. Choix d'un EDI pour la 3D (Open GL, Portable)
    Par Riko dans le forum OpenGL
    Réponses: 6
    Dernier message: 01/08/2002, 13h25
  2. [Choix] Quelles attentes par rapport aux SGBD ?
    Par thierry34 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 13/07/2002, 21h08
  3. [Choix] SGDB pour Entreprise : coût, efficacité, etc.
    Par grassat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 15/06/2002, 09h52
  4. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 16h23
  5. Choix d'un ORB
    Par Anonymous dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 12h15

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