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

Contribuez / Téléchargez Sources et Outils PHP Discussion :

CheckBox pour sélection des champs de la BD


Sujet :

Contribuez / Téléchargez Sources et Outils PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2018
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2018
    Messages : 81
    Points : 44
    Points
    44
    Par défaut CheckBox pour sélection des champs de la BD
    Bonjour tout le monde.
    Je reviens vers vous après de longues heures de recherche.
    J'explique le problème:
    J'affiche la liste des tâches en cours de validation par le N+1, réalisées par chaque employé.
    Je souhaiterais pouvoir sélectionner les tâches que je souhaiterais valider et envoyer une requête de validation pour tous ses champs. ( Genre quand on veut supprimer des messages sur la boite mail soit on sélectionne tous les mails ou bien un par un).
    Je souhaiterais faire apparaitre un CheckBox qui, en le cochant, me permettrait de sélectionner tous les champs et avoir des CheckBox pour chaque ligne que je peux cocher ou décocher à part. Un bouton Valider et un autre ne pas valider.
    Voici un extrait de mon code :
    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
     
    <?php
     
    try{
        $connect = new PDO("mysql:host=localhost;dbname=test;charset=utf8","root","test");
        $connect -> setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e){
        echo 'echec de la connexion : ' .$e->getMessage();
    }
     
    $requete= $connect->prepare('SELECT * FROM lesTaches WHERE etat1="En cours" OR etat2="En cours" OR etat3="En cours" OR etat4="En cours" ');
     
    $requete->execute();
    ?>
    Je sélectionne ensuite toutes les tâches réalisées différentes de "RAS"
    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
     
     <table id="employee_data" class="table table-striped table-bordered">
                                <thead>
                                <tr>
                                    <td style="font-weight: bold;">Nom </td>
                                    <td style="font-weight: bold;">Tâche </td>
                                    <td style="font-weight: bold;">Temps passé</td>
                                    <td style="font-weight: bold;">Date</td>
                                    <td style="font-weight: bold;">Fonction</td>
                                    <td style="font-weight: bold;">Etat</td>
                                </tr>
                                </thead>
     
                                <?php
                                while($row = $requete->fetch())
                                {
                                   ?>
                                   <tr>
                                         <td><?php echo $row["nom"]; ?></td>
                                         <td><?php echo $row["tache1"]; ?></td>
                                         <td><?php echo $row["t1"]; ?></td>
                                         <td><?php echo $row["date"]; ?></td>
                                         <td><?php echo $row["fnc"]; ?></td>
                                         <td style="font-weight: bold; color:#00008B"><?php echo $row["etat1"]; ?></td>
     
                                   </tr>
                                  <?php ;
                                         if ( $row["tache2"] != "RAS" ) {
    ?>
     
                                   <tr>
                                         <td><?php echo $row["nom"]; ?></td>
                                         <td><?php echo $row["tache2"]; ?></td>
                                         <td><?php echo $row["t2"]; ?></td>
                                         <td><?php echo $row["date"]; ?></td>
                                         <td><?php echo $row["fnc"]; ?></td>
                                         <td style="font-weight: bold; color:#00008B"><?php echo $row["etat2"]; ?></td>
    </tr>
                                   <?php ;
                                         }
    if ( $row["tache3"] != "RAS" ) {
                                               ?>
                                   <tr>
                                         <td><?php echo $row["nom"]; ?></td>
                                         <td><?php echo $row["tache3"]; ?></td>
                                         <td><?php echo $row["t3"]; ?></td>
                                         <td><?php echo $row["date"]; ?></td>
                                         <td><?php echo $row["fnc"]; ?></td>
                                         <td style="font-weight: bold; color:#00008B"><?php echo $row["etat3"]; ?></td>
    </tr>
                                   <?php ;
                                         }
    if ( $row["tache4"] != "RAS" ) {
    ?>
                                   <tr>
                                         <td><?php echo $row["nom"]; ?></td>
                                         <td><?php echo $row["tache4"]; ?></td>
                                         <td><?php echo $row["t4"]; ?></td>
                                         <td><?php echo $row["date"]; ?></td>
                                         <td><?php echo $row["fnc"]; ?></td>
                                         <td style="font-weight: bold; color:#00008B"><?php echo $row["etat4"]; ?></td>
    </tr>
                                 <?php  ;
                                         }
                                }
    La structure de ma table "lesTaches" est la suivante : id, nom, tache1,t1,etat1, tache2,t2,etat2, tache3,t3,etat3, tache4,t4,etat4,date,fnc.
    d'ou les t1,t2,t3,t4 sont les temps passés sur chaque tache, les états c'est l'état de la tâche qui est sur En cours et en validant ça passe sur "Validé" ou "Pas validé"
    J'espère que j'ai été clair et merci d'avance de votre aide.

  2. #2
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    septembre 2002
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : septembre 2002
    Messages : 1 399
    Points : 2 493
    Points
    2 493
    Par défaut
    Il y a des erreurs de conception.

    1 - On ne met pas un nom dans une clé
    Un nom on peut l'écrire de différentes manières. Jean Dupont est différent de jean dupont ou de JEAN DUPONT ou de DUPONT JEAN et pourtant c'est toujours la même personne.
    Plusieurs personnes peuvent avoir les mêmes noms et prénoms.
    Normalement quand on a une table des personnes on donne un identifiant (numérique le plus souvent).

    2 - On ne répète pas les informations dans une table.
    Tu as mis 4 tâches dans un enregistrement. Il vaudrait mieux une table avec 1 seule tâche et un n° d'ordre. Exemple : id personne, n° de tache, autres champs avec id personne et n° de tache en clé.
    Si un jour tu as plus de 4 taches tu peux mettre ton appli à la poubelle. Or qui peut le plus peut le moins. Une structure correcte te permet d'avoir 1 tache, 4 taches ou 50.

    3 - On ne stocke pas des valeurs en "dur" dans les données hormis dans les tables de paramétrage.
    Tester etat1="En cours" équivaut à sauvegarder "deux cent dix sept virgule trente deux" dans une table ou lieu de 217,32.
    Que se passe t'il si dans un autre script tu utilises "En-cours" ? Ca ne marchera pas. En plus ça prend plus de place dans la BDD.
    Dans un tel cas on a une table Etats avec un code et un libellé et si un jour ton appli doit être traduite tu n'as qu'à traduire le libellé et c'est bon. Exemple : 1 = En cours, 2=Terminé, etc...
    La voie que tu as choisie n'est pas la bonne. Je pourrais t'aider sur ton problème comme je l'ai fait dans le passé pour d'autres mais je ne le ferai pas car ce n'est pas un service à te rendre.Avec une bonne structure, ta requête deviendrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $requete= $connect->prepare('SELECT * FROM lesTaches WHERE etat="0"  ');
    J'ai l'impression que dans ta requête originale il manque le "nom" de la personne et/ou un order by.Ton php deviendrait (je simplifie puisque dans la requête il faudrait faire un JOIN sur la table des Etats pour ramener son libellé).
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
                                <?php
                                while($row = $requete->fetch())
                                {
                                   ?>
                                   <tr>
                                         <td><?php echo $row["nom"]; ?></td>
                                         <td><?php echo $row["tache"]; ?></td>
                                         <td><?php echo $row["t"]; ?></td>
                                         <td><?php echo $row["date"]; ?></td>
                                         <td><?php echo $row["fnc"]; ?></td>
                                         <td style="font-weight: bold; color:#00008B"><?php echo $row["etat"]; ?></td>
     
                                   </tr><?php etc....


    Et plus besoin de tester si les autres taches sont != de "RAS" puisque tu n'affiches que ce qui est dans la table.

    Et pour finir une question. Dans le cartouche de ton pseudo il est indiqué "Chercheur en informatique". Ca correspond à quoi ?
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    octobre 2018
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : octobre 2018
    Messages : 81
    Points : 44
    Points
    44
    Par défaut
    Merci Badaze pour ta disponibilité habituelle.
    J'explique un petit peu par rapport à tes remarques.
    1- 2- le résultat de la table lesTaches est issue d'un programme que j'ai développé en java pour la société dans laquelle je travaille. On m'a demandé de faire un programme pour vérifier que fait chaque collaborateur avec un maximum de 4 tâches vu que l'application se lance à plusieurs moments de la journée. Les noms des personnes se rajoutent automatiquementu lors du lancement de lapplication. Si par exemple le collaborateur à fait une seule tâche les autres tâches se mettront automatiquement SUR RAS. La clé de la table est l'id de la tache.
    3- Par rapport au stockage dur, c'est vrai que j'y avait pas pensé surtout que tu me l'avais précisé avant. Je modifierai ça dès demain matin. J'ai mis une seule table qui regroupe toutes les informations, il n'y a pas de table etat.
    Chercheur en informatique car je faisais carrément autre chose "Boulanger", et je me suis relancé en informatique.

    Merci encore pour ta réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 30/05/2013, 17h55
  2. [MySQL] Erreur pour modifier des champs
    Par kevinf dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2006, 21h47
  3. Problème awk pour récuperer des champs
    Par ab_2006 dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 21/09/2006, 09h36
  4. sélection des champs à imprimer
    Par gueyou dans le forum Access
    Réponses: 3
    Dernier message: 18/09/2006, 16h58
  5. Normes pour taille des champs (obs, libellé...)
    Par Kozher dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 13/08/2005, 23h46

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