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

  1. #1
    Futur Membre du Club
    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
    Points : 7
    Points
    7
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    d'où vient $etudiants ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    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
    Points : 7
    Points
    7
    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
    Futur Membre du Club
    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
    Points : 7
    Points
    7
    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...

  7. #7
    Futur Membre du Club
    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
    Points : 7
    Points
    7
    Par défaut
    Ce problème me prend vraiment la tete, ayant quelques lacunes dans ce domaines cela n'arrange rien x).

    Sinon, au niveau du code, je ne dois pas le placer au niveau de ma :
    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 ." ";
    je dois donc pas le placer dans ma requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete = $bdd->prepare('SELECT * FROM etudiant WHERE Classe_idClasse = ?');
            $requete->execute( array( intval( $_POST["classe"] ) ));
    ?
    j'avoue ne pas avoir compris là

    Sinon j'ai au niveau de l'affichage de $requete, il y a bien un problème je recupere uniquement le nom et prenom du dernier membre de ma liste qu'il soit cocher ou non.
    Je déduis donc qu'il y a un problème au niveau de ma boucle?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Tes bouts de codes n'ont ni queue ni tête. On ne sait pas le bout qui va devant... et toi non plus manifestement.
    Et il nous en manque pour faire le lien.

    Si j'ai bien compris :

    1/ requete de TOUS les étudiants
    -> affichage de la liste COMPLETE dans un formulaire (entre balise <form>, donc), comprenant les fameuses checkbox
    + bouton "Afficher les étudiants sélectionnés (pour impression)"

    2/ Au clic sur le bouton, on arrive sur la page (laquelle ??? la même ??)
    -> traitement : on récupère les ids via $_POST (et mon bout de code)
    -> on met le bout de code IN(....) dans la requête, pour n'afficher QUE ceux sélectionnés

    3/ un lien "imprimer", qui imprime la page.

    C'est ça ?


    Sinon, il faut être plus clair, dans tes explications et dans les codes que tu montres.

  9. #9
    Futur Membre du Club
    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
    Points : 7
    Points
    7
    Par défaut
    désolé pour le manque de clarté

    je vais donc regrouper mes postes précédentstout se fait via BDD)

    Premièrement j'ai une page avec un menu deroulant qui m'affiche le noms des classes. Quand je valide un de ses classes sur la deuxieme page j'arrive a avoir la liste des étudiants de CETTE classe avec checkox devant. Ce que j'aurais souhaiter c'est pouvoir imprimer la liste d’élève de la classe que j'aurais sélectionnée avant mais uniquement ceux qui ont un checkox que j'aurais coché dans la deuxieme page(la page ici qui pose problème).

    suite a cela voila les codes qui sont fonctionnels:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     // On stocke l'id de la classe
            $_SESSION['classe'] = $classe['idClasse'];
     
            // On va chercher les données des étudiants de la classe choisie
            // Avec une requête préparées pour sécuriser
            $requete = $bdd->prepare('SELECT * FROM etudiant WHERE Classe_idClasse = ?');
            $requete->execute( array( intval( $_POST["classe"] ) ));
            $etudiants = $requete->fetchAll();
            $requete->closeCursor();
     
     
            // Si la classe existe
            if( $classe ) {
    ?>
     
        <p>Vous avez selectionn&#233 la classe: <?php echo $classe['Nomclasse']; ?></p>
    <?php
                // Si il y a au moins un étudiant
                if( count( $etudiants ) > 0 ) {
    ?>
        <p>Dur&#233e du cours: <?php echo $_POST["duree"]; ?></p>
     
        <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>
    Pour l'impression de ma page j'utilise le script javascript suivant, il m'affiche sur la meme page le resultat sous format d'impression (mais je dois alors effacer les éléments qui ne m'interesse pas par:@media print{{display:none;}})
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if(isset($_GET['page']) ){
    	$page=$_GET['page'];
    	if(!in_array($page,array(1))) $page=0;
     
       }else $page=0;
     
       switch($page){
    	case 1: include'recuperation.php'; break;
    	default : echo"";
    }
    	echo"<p value=submit id= 'imprimer'><a href='' onclick='window.print();return false;'>Imprimer</p>";
    	?>
    Ce que je n'arrive pas, est la suite de ma liste des élèves cochés. J'aurais voulu en décocher certains puis d'imprimer ceux qui sont restés cochés.

    En espérant avoir été plus claire

  10. #10
    Invité
    Invité(e)
    Par défaut
    1/ Tu n'as pas de formulaire ! (balises <form> autour des checkbox)
    Comment espères-tu récupérer quoi que ce soit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form method="post" action="page-de-traitement.php">
    ...
    </form>
    Et dans page-de-traitement.php, tu construis la requête...


    2/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     	case 1: include'recuperation.php'; break;
    Super...
    et c'est quoi le code de recuperation.php ?

  11. #11
    Futur Membre du Club
    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
    Points : 7
    Points
    7
    Par défaut
    Oops j'ai du supprimer le form dans un de mes tests ... .

    recuperation.php c'est justement cette page qui contient ces problème.
    window.print() me permet de visualiser plusieurs page mais pour le moment seul cette page(recuperation.php) m’intéresse.

    Merci pour l'aide présente jreaux62 j'avoue etre bloqué dessus depuis plus de deux jours ça joue sur les nerfs et sur le code ... .

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, 12h25
  2. [Choix] Quelles attentes par rapport aux SGBD ?
    Par thierry34 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 13/07/2002, 20h08
  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, 08h52
  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, 15h23
  5. Choix d'un ORB
    Par Anonymous dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 11h15

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