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

PHP & Base de données Discussion :

Tableau de cases à cocher et traitement [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut Tableau de cases à cocher et traitement
    Bonjour à tous,
    J'ai un tableau d'élèves qui doivent s'inscrire à 4 dates de soutien scolaire (dates prédéfinies, donc case à cocher). J'ai réussi à faire le formulaire que voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <td><?php echo '<a href="listeeleve_suite.php?num_etab='.$donnees['NUMETAB'].'&num_division='.$donnees['NUMDIVISION'].'&numeleve='.$donnees['NUMELEVE'].'">'.$donnees['NOM_ELEVE'].' '.$donnees['PRENOM_ELEVE'].'</a>';?></td>
    					<td align = center><input type="checkbox" name="eleve[<?php echo $donnees['NUMELEVE'];?>]" value="" checked=checked /></td>
    					<td align = center><input type="checkbox" name="eleve[<?php echo $donnees['NUMELEVE'];?>]" value="" checked=checked /></td>
    					<td align = center><input type="checkbox" name="eleve[<?php echo $donnees['NUMELEVE'];?>]" value="" checked=checked /></td>
    					<td align = center><input type="checkbox" name="eleve[<?php echo $donnees['NUMELEVE'];?>]" value="" checked=checked /></td>
    Déjà est-ce que selon vous mon code est bon ?

    Ensuite, je dois récupérer les valeurs de ces cases à cocher rattachées à chaque élève et les insérer dans ma BDD.

    J'ai fais ceci pour voir l'allure de mon tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo '<pre>';
    var_dump($_POST);
    echo '</pre>';
    qui me renvoi ceci :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     
    array (size=1)
      'eleve' => 
        array (size=31)
          1 => string '' (length=0)
          2 => string '' (length=0)
          3 => string '' (length=0)
          4 => string '' (length=0)
          5 => string '' (length=0)
          6 => string '' (length=0)
          7 => string '' (length=0)
          8 => string '' (length=0)
          9 => string '' (length=0)
          10 => string '' (length=0)
          11 => string '' (length=0)
          12 => string '' (length=0)
          13 => string '' (length=0)
          14 => string '' (length=0)
          15 => string '' (length=0)
          16 => string '' (length=0)
          17 => string '' (length=0)
          18 => string '' (length=0)
          19 => string '' (length=0)
          20 => string '' (length=0)
          21 => string '' (length=0)
          22 => string '' (length=0)
          23 => string '' (length=0)
          24 => string '' (length=0)
          25 => string '' (length=0)
          26 => string '' (length=0)
          27 => string '' (length=0)
          28 => string '' (length=0)
          29 => string '' (length=0)
          30 => string '' (length=0)
          31 => string '' (length=0)
    mais là je ne sais plus faire. Je ne sais pas comment traiter le formulaire avec les cases à cocher. De plus, ne devrait-il pas y avoir 4 fois le même élève pour chaque date de soutien ?
    En vous remerciant pour votretemps et votre aide.
    Jérôme

  2. #2
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 601
    Points : 889
    Points
    889
    Par défaut
    Bonjour
    Tu devrais pouvoir t'inspirer des scripts de cet excellent tuto dans ce chapitre dédié à la connexion entre les formulaires et les bdd http://sylvie-vauthier.developpez.co...page=intro-bdd

  3. #3
    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
    Tes 4 checkbox sont identiques donc ça ne va pas.

    egalement en html :

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut Suite case à cocher
    Merci pour vos réponses...
    Donc j'en suis là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    for ($i=1; $i < 5 ; $i++)
    {
    ?>
    <td align = center><input type="checkbox" name="eleve[]" value="<?php echo $i;?>" checked="checked" /></td>
    <?php
    }
    ?>
    et ce qui me donne :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
     
    array (size=1)
      'eleve' => 
        array (size=124)
          0 => string '1' (length=1)
          1 => string '2' (length=1)
          2 => string '3' (length=1)
          3 => string '4' (length=1)
          4 => string '1' (length=1)
          5 => string '2' (length=1)
          6 => string '3' (length=1)
          7 => string '4' (length=1)
          8 => string '1' (length=1)
          9 => string '2' (length=1)
          10 => string '3' (length=1)
          11 => string '4' (length=1)
          12 => string '1' (length=1)
          13 => string '2' (length=1)
          14 => string '3' (length=1)
          15 => string '4' (length=1)
          16 => string '1' (length=1)
          17 => string '2' (length=1)
          18 => string '3' (length=1)
          19 => string '4' (length=1)
          20 => string '1' (length=1)
          21 => string '2' (length=1)
          22 => string '3' (length=1)
          23 => string '4' (length=1)
          24 => string '1' (length=1)
          25 => string '2' (length=1)
          26 => string '3' (length=1)
          27 => string '4' (length=1)
          28 => string '1' (length=1)
          29 => string '2' (length=1)
          30 => string '3' (length=1)
          31 => string '4' (length=1)
          32 => string '1' (length=1)
          33 => string '2' (length=1)
          34 => string '3' (length=1)
          35 => string '4' (length=1)
          36 => string '1' (length=1)
          37 => string '2' (length=1)
          38 => string '3' (length=1)
          39 => string '4' (length=1)
          40 => string '1' (length=1)
          41 => string '2' (length=1)
          42 => string '3' (length=1)
          43 => string '4' (length=1)
          44 => string '1' (length=1)
          45 => string '2' (length=1)
          46 => string '3' (length=1)
          47 => string '4' (length=1)
          48 => string '1' (length=1)
          49 => string '2' (length=1)
          50 => string '3' (length=1)
          51 => string '4' (length=1)
          52 => string '1' (length=1)
          53 => string '2' (length=1)
          54 => string '3' (length=1)
          55 => string '4' (length=1)
          56 => string '1' (length=1)
          57 => string '2' (length=1)
          58 => string '3' (length=1)
          59 => string '4' (length=1)
          60 => string '1' (length=1)
          61 => string '2' (length=1)
          62 => string '3' (length=1)
          63 => string '4' (length=1)
          64 => string '1' (length=1)
          65 => string '2' (length=1)
          66 => string '3' (length=1)
          67 => string '4' (length=1)
          68 => string '1' (length=1)
          69 => string '2' (length=1)
          70 => string '3' (length=1)
          71 => string '4' (length=1)
          72 => string '1' (length=1)
          73 => string '2' (length=1)
          74 => string '3' (length=1)
          75 => string '4' (length=1)
          76 => string '1' (length=1)
          77 => string '2' (length=1)
          78 => string '3' (length=1)
          79 => string '4' (length=1)
          80 => string '1' (length=1)
          81 => string '2' (length=1)
          82 => string '3' (length=1)
          83 => string '4' (length=1)
          84 => string '1' (length=1)
          85 => string '2' (length=1)
          86 => string '3' (length=1)
          87 => string '4' (length=1)
          88 => string '1' (length=1)
          89 => string '2' (length=1)
          90 => string '3' (length=1)
          91 => string '4' (length=1)
          92 => string '1' (length=1)
          93 => string '2' (length=1)
          94 => string '3' (length=1)
          95 => string '4' (length=1)
          96 => string '1' (length=1)
          97 => string '2' (length=1)
          98 => string '3' (length=1)
          99 => string '4' (length=1)
          100 => string '1' (length=1)
          101 => string '2' (length=1)
          102 => string '3' (length=1)
          103 => string '4' (length=1)
          104 => string '1' (length=1)
          105 => string '2' (length=1)
          106 => string '3' (length=1)
          107 => string '4' (length=1)
          108 => string '1' (length=1)
          109 => string '2' (length=1)
          110 => string '3' (length=1)
          111 => string '4' (length=1)
          112 => string '1' (length=1)
          113 => string '2' (length=1)
          114 => string '3' (length=1)
          115 => string '4' (length=1)
          116 => string '1' (length=1)
          117 => string '2' (length=1)
          118 => string '3' (length=1)
          119 => string '4' (length=1)
          120 => string '1' (length=1)
          121 => string '2' (length=1)
          122 => string '3' (length=1)
          123 => string '4' (length=1)
    Je n'arrive toujours pas à faire le lien avec ma BDD...je pense traiter avec un INSERT et un foreach mais je ne sais pas comment m'y prendre pour formater correctement le tableau de façon à ce que les valeurs BDD / formulaire correspondent.

    En tous cas merci pour votre aide précieuse ! ! !
    Jérôme

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je suppose que $donnees['NUMELEVE'] défini un élève de façon UNIQUE.

    Il faut aussi identifier chaque checkbox, indépendamment des autres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<td><a href="listeeleve_suite.php?num_etab=<?php echo $donnees['NUMETAB']; ?>&num_division=<?php echo $donnees['NUMDIVISION']; ?>&numeleve=<?php echo $donnees['NUMELEVE']; ?>"><?php echo $donnees['NOM_ELEVE'].' '.$donnees['PRENOM_ELEVE']; ?></a>';?></td>
    <?php for ($i=1; $i < 5 ; $i++){ ?>
    	<td><input type="checkbox" name="date_eleve[<?php echo $i;?>][<?php echo $donnees['NUMELEVE'];?>]" value="<?php echo $donnees['NUMELEVE'];?>" checked="checked" /></td>
    <?php } ?>
    N.B. mettre checked="checked" suppose que les cases sont déjà cochées. Ne rien mettre sinon.

    On récupère un array : Il contient lui-même 4 array :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $_POST['date_eleve'][1]
    $_POST['date_eleve'][2]
    $_POST['date_eleve'][3]
    $_POST['date_eleve'][4]
    Chacun de ces array contient les numéros des élèves qui ont coché la date concernée.

    Jérome (aussi !)

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut
    EN fait je venais tout juste de modifier cela (c'est le prénom qui veut cela...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <td align = center><input type="checkbox" name="eleve[<?php echo $donnees['NUMELEVE'];?>]" value="<?php echo $donnees['NUMELEVE'];?>" checked="checked" /></td>
    Mais voilà, j'ai cela comme résultat de dump :

    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
    28
    29
    30
    31
    32
    33
    34
    35
     
    array (size=1)
      'eleve' => 
        array (size=31)
          1 => string '4' (length=1)
          2 => string '4' (length=1)
          3 => string '4' (length=1)
          4 => string '4' (length=1)
          5 => string '4' (length=1)
          6 => string '4' (length=1)
          7 => string '4' (length=1)
          8 => string '4' (length=1)
          9 => string '4' (length=1)
          10 => string '4' (length=1)
          11 => string '4' (length=1)
          12 => string '4' (length=1)
          13 => string '4' (length=1)
          14 => string '4' (length=1)
          15 => string '4' (length=1)
          16 => string '4' (length=1)
          17 => string '4' (length=1)
          18 => string '4' (length=1)
          19 => string '4' (length=1)
          20 => string '4' (length=1)
          21 => string '4' (length=1)
          22 => string '4' (length=1)
          23 => string '4' (length=1)
          24 => string '4' (length=1)
          25 => string '4' (length=1)
          26 => string '4' (length=1)
          27 => string '4' (length=1)
          28 => string '4' (length=1)
          29 => string '4' (length=1)
          30 => string '4' (length=1)
          31 => string '4' (length=1)
    Cela correspond bien à mes 31 élèves de cette classe mais ils ont la possibilités de faire quatre voeux...je devrais donc avoir quatre fois l'élève 1, quatre fois l'élève 2, etc...non ?

    Merci beaucoup.

  7. #7
    Invité
    Invité(e)
    Par défaut
    J'ai corrigé mon message précédent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<td><a href="listeeleve_suite.php?num_etab=<?php echo $donnees['NUMETAB']; ?>&num_division=<?php echo $donnees['NUMDIVISION']; ?>&numeleve=<?php echo $donnees['NUMELEVE']; ?>"><?php echo $donnees['NOM_ELEVE'].' '.$donnees['PRENOM_ELEVE']; ?></a>';?></td>
    <?php for ($i=1; $i < 5 ; $i++){ ?>
    	<td><input type="checkbox" name="date_eleve[<?php echo $i;?>][<?php echo $donnees['NUMELEVE'];?>]" value="<?php echo $donnees['NUMELEVE'];?>" checked="checked" /></td>
    <?php } ?>
    Il faut distinguer les 4 checkbox, sinon, elles ont le même nom :
    name="date_eleve[<?php echo $i;?>][<?php echo $donnees['NUMELEVE'];?>]"

    C'est aussi pour ça que j'ai appelé la variable "date_eleve".

  8. #8
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut
    Ok, j'obtiens un tableau que des cases qui sont cochées...normal mais comment je traite cela avec le foreach ?

    J'obtiens ceci par exemple :

    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
     
    array (size=1)
      'eleve' => 
        array (size=4)
          4 => 
            array (size=3)
              26 => string '26' (length=2)
              27 => string '27' (length=2)
              28 => string '28' (length=2)
          3 => 
            array (size=1)
              29 => string '29' (length=2)
          2 => 
            array (size=1)
              30 => string '30' (length=2)
          1 => 
            array (size=1)
              31 => string '31' (length=2)
    Merci pour le temps que vous consacrez à m'aider...

  9. #9
    Invité
    Invité(e)
    Par défaut
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php 
    if(!empty($_POST['eleve'])){ // si des cases sont cochées
    	for ($i=1; $i < 5 ; $i++){ // pour chaque date
    		if(!empty($_POST['eleve'][$i])){ // si des cases sont cochées pour cette date
    			echo 'Les élèves suivants ont coché la date '.$i.' : ';
    			foreach($_POST['eleve'][$i] as $numeleve){
    				echo $numeleve.', ';
    			}
    			echo '<br />';
    		}
    	}
    }
    Dernière modification par Invité ; 25/08/2013 à 13h24.

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut
    Alors là franchement chapeau ! ! !
    Merci beaucoup pour votre aide si précieuse qui va me sortir une épine du pied.
    Encore merci,
    Et vive les Jérôme ! ! !

  11. #11
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut
    Je réouvre la discussion car j'ai à nouveau un problème.

    Comment s'y prend t-on pour insérer les cases cochées dans la BDD ?

    Voilà mon code qui gère le traitement du formulaire :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    <?php
    session_start();
    	if (isset($_SESSION['user']) && (!empty($_SESSION['user'])))
    	{
     
    echo '<pre>';
    var_dump($_POST);
    echo '</pre>';	
     
    include('../param_conn.php');
     
    echo 
    $bdd->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
     
    if(!empty($_POST['eleve'])){ // si des cases sont cochées
    	for ($i=1; $i < 5 ; $i++){ // pour chaque date
    		if(!empty($_POST['eleve'][$i])){ // si des cases sont cochées pour cette date
    			echo 'Les élèves suivants ont coché la date '.$i.' : ';
    			foreach($_POST['eleve'][$i] as $numeleve){
    				echo $numeleve.', ';
    				$req = $bdd->prepare('UPDATE lo_choisir SET
    										NUM_PERIODE = :i,
    										NUMETAB = :NUMETAB,
    										NUMDIVISION = :NUMDIVISION,
    										NUMELEVE = :numeleve,
    										choix_eleve = 1 ');
     
    				$req->execute(array(
    									'periode' => $i,
    									'etab' => $_POST['etab'],
    									'numdivision' => $_POST['division'],
    									'numeleve' => $numeleve,
    									'choix_eleve' => 1
    									));
    			}
    			echo '<br />';
    		}
    	}
    }
     
    }
    	else
    	{
    		// pas de login en session : proposer la connexion
    		echo '<a href="../identification.php" title="Accès à la page de connexion">Connexion</a>';
    	}
     
    ?>
    Message d'erreur :
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined' in C:\wamp\www\lpo\eleve\saisie_voeux.php on line 34
    ( ! ) PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\lpo\eleve\saisie_voeux.php on line 34
    Qu'est-ce qui ne fonctionne pas dans ce maudit code ?
    Merci pour votre aide.
    Jérôme

    PS : problème résolu, cela venait de la requête (mal) préparée...

  12. #12
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut Afficher les cases cochées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <td align = "center"><input type="checkbox" name="eleve[<?php echo $i;?>][<?php echo $donnees['NUMELEVE'];?>]" value="<?php echo $donnees['NUMELEVE'];?>" <?php if (isset($donnees['choix_eleve'])) { echo 'checked'; } ?> /></td>
    Est-ce que qulqu'un peut me dire pourquoi ce code ne fonctionne pas ?
    Il me check toutes mes cases...
    Merci par avance
    Jérôme

  13. #13
    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'ou vient $donnees['choix_eleve'] ?

  14. #14
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut
    De ma base de données...

    J'ai en fait cinq champs sur ma BDD :

    lo_choisir :
    NUM_PERIODE,
    NUMETAB,
    NUMDIVISION,
    NUMELEVE,
    choix_eleve

    J'arrive bien à saisir des données et à les insérer dans ma BDD le problème c'est comment récupérer ces infos dans le formulaire...
    Merci pour vos lumières,
    Jérôme

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bonjour les insomniaques...

    le champ est forcement "isset" (true).
    ce qu'il faut verifier , c'est sa valeur.

    Et vu qu'un eleve peut cocher 4 dates/checkbox, je suis curieux de savoir comment tu l'as enregistré en BdD.

    N.B. au cas où...
    SI tu ne souhaitais qu'un seul choix possible par eleve, il fallait utiliser des input "radio".

  16. #16
    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
    Est-ce que qulqu'un peut me dire pourquoi ce code ne fonctionne pas ?
    Ce n'est pas un problème de PHP/Mysql que tu as mais un problème de logique et de conception.
    Il va falloir reprendre depuis le début.

    1 - Tu souhaites mettre à jour ta table contenant la participation d'élèves à des périodes.
    Une mise à jour implique que la table est déjà remplie : comment est-elle remplie ?

    2 - Dans le code que tu nous montres, tu nommes tes périodes de 1 à 4 mais je suppose que dans la vie de ton application il y aura plus d'événements que ça. Tu as peut être même déjà une table pour gérer ces périodes.
    Il faut donc reprendre ce point.

    3 - une fois que tu auras retravaillé ces points, tu verras peut être plus clairement pourquoi ton test de checkbox n'est pas bon :
    - ton test vérifie si la variable provenant de la BDD existe : elle existe forcemment puisque tu es dans la boucle qui vient de la lire.
    La question est de savoir si la période x (cf. point numéro 2) vaut 1 ou 0 (ou n'existe pas, cf. point numero 1) pour l'élève.

  17. #17
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut
    Bonjour les insomniaques,

    Alors commençons par la table que voici :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    --
    -- Structure de la table `lo_choisir`
    --
     
    CREATE TABLE IF NOT EXISTS `lo_choisir` (
      `NUM_PERIODE` varchar(32) NOT NULL,
      `NUMETAB` varchar(32) NOT NULL,
      `NUMDIVISION` varchar(32) NOT NULL,
      `NUMELEVE` int(4) NOT NULL,
      `choix_eleve` tinyint(1) NOT NULL,
      PRIMARY KEY (`NUM_PERIODE`,`NUMETAB`,`NUMDIVISION`,`NUMELEVE`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    Chaque élève peut choisir ses périodes de soutien scolaire (quatre périodes possibles).

    Il y a 4 périodes concernées, il y a 4 établissements scolaires concernés, chacun leurs divisions et bien sûr des élèves dans ces divisions ---> donc choix_eleve.

    J'ai crée deux identifiants relatifs pour le rattachement de l'élève à sa division et son établissement...comme cela je suis sûr de ne pas avoir de doublons dans ma base.

    J'ai rempli la table lo_choisir via un script pour créer les combinaisons possibles ce qui me permet de pouvoir faire cette boucle...mais peut-être n'est-ce pas bon ?

    Dans l'attente de vous lire,
    Jérôme

  18. #18
    Invité
    Invité(e)
    Par défaut
    tu ne dis pas ce que contient choix_eleve.

    Une bonne conception passe par un bon raisonnement, et la mise en place d'une chronologie des evenements/actions a realiser.

    + un court extrait de la table nous premettrait d'y voir plus clair.

  19. #19
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 80
    Points : 19
    Points
    19
    Par défaut
    Structure et quelques enregistrements de la table :
    Code sql : 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
    28
    --
    -- Structure de la table `lo_choisir`
    --
     
    CREATE TABLE IF NOT EXISTS `lo_choisir` (
      `NUM_PERIODE` varchar(32) NOT NULL,
      `NUMETAB` varchar(32) NOT NULL,
      `NUMDIVISION` varchar(32) NOT NULL,
      `NUMELEVE` int(4) NOT NULL,
      `choix_eleve` tinyint(1) NOT NULL,
      PRIMARY KEY (`NUM_PERIODE`,`NUMETAB`,`NUMDIVISION`,`NUMELEVE`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
    --
    -- Contenu de la table `lo_choisir`
    --
     
    INSERT INTO `lo_choisir` (`NUM_PERIODE`, `NUMETAB`, `NUMDIVISION`, `NUMELEVE`, `choix_eleve`) VALUES
    ('1', '1', '1GA1', 1, 1),
    ('1', '1', '1GA1', 2, 1),
    ('1', '1', '1GA1', 3, 0),
    ('1', '1', '1GA1', 4, 1),
    ('1', '1', '1GA1', 5, 1),
    ('1', '1', '1GA1', 6, 0),
    ('1', '1', '1GA1', 7, 1),
    ('1', '1', '1GA1', 8, 0),
    ('1', '1', '1GA1', 9, 1),
    ('1', '1', '1GA1', 10, 0);

    Voili voilou ! ! !

  20. #20
    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
    J'ai rempli la table lo_choisir via un script pour créer les combinaisons possibles ce qui me permet de pouvoir faire cette boucle...mais peut-être n'est-ce pas bon ?
    On ne construit pas une base de données en pensant à ce que cela permettra de faire ensuite dans le langage de programmation : si les données sont bien organisées elles seront facilement exploitables.

    Pré-remplir une table cela veut dire mettre des données inutiles.

    Ta table lo_choisir peut être vide au démarrage. tu inseres/supprimes ensuite les données saisies.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [WD-2007] Macro : Mise en forme tableau fonction case à cocher
    Par neronne dans le forum VBA Word
    Réponses: 6
    Dernier message: 07/01/2015, 15h43
  2. [MySQL] Case à cocher et traitement avec une base de données
    Par Angelik dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/06/2008, 12h33
  3. tableau avec cases à cocher
    Par king10481 dans le forum Langage
    Réponses: 1
    Dernier message: 06/06/2008, 09h36
  4. Récupération d'un tableau de cases à cocher
    Par DonPardo dans le forum MVC
    Réponses: 6
    Dernier message: 26/01/2008, 17h06
  5. [CR] Création de tableau et case à cocher
    Par aysse dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/11/2003, 17h07

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