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 :

affichage horizontal dans une table d'un formulaire [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 35
    Par défaut affichage horizontal dans une table d'un formulaire
    bonjour à tous !

    Je bug depuis plusieurs jours, merci d'avance de votre aide. voilà où j'en suis:
    Table renfort
    id_renfort | date_debut | date_fin
    ------------------------------------
         5     | 2012-09-01 | 2012-09-03
    
    Table renfort_volontaires
    id_renfort_volontaires | k_id_renfort | k_id_volontaire
    -------------------------------------------------------
              1            |      5       |      222
              2            |      5       |      223
     
    Table volontaires_dispo
    id_volontaires_dispo | k_id_renfort_volontaires | date_dispo | ok
    -----------------------------------------------------------------
              1          |             1            | 2012-09-01 | 0
              2          |             1            | 2012-09-02 | 0
              3          |             1            | 2012-09-03 | 0
              4          |             2            | 2012-09-01 | 0
              5          |             2            | 2012-09-02 | 0
              6          |             2            | 2012-09-03 | 0
    Voilà mon problème:
    Après un submit envoyant l'id_renfort ici 5, je voudrais dans un formulaire présenter une table ayant cette forme:

    volontaire | 2012-09-01 | 2012-09-02 | 2012-09-03
    -------------------------------------------------
        222    |     1      |     2      |     3
        223    |     4      |     5      |     6
    Les 1 - 2 - 3 - 4 - 5 - 6 correspondent aux id_volontaires_dispo. Mais voilà ça ne se passe pas comme je voudrais. Grâce à ce code qui pour l'instant me donne un résultat mais qui est loin d'être ce que je voudrais voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $select4 = $PDO->query("SELECT  volontaires_dispo.*, renfort_volontaires.* 
                            FROM volontaires_dispo 
                            LEFT JOIN renfort_volontaires ON renfort_volontaires.id_renfort_volontaires =volontaires_dispo.k_id_renfort_volontaires
    		        WHERE k_id_renfort = $modif_renfort_id
    		      ");
    $select4->setFetchMode(PDO::FETCH_OBJ);
    while( $enregistrement4 = $select4->fetch()){
    	   $a = array($enregistrement4->k_id_volontaire);
    	   $b = array($enregistrement4->k_id_volontaire=>$enregistrement4->id_volontaires_dispo);
     
    	foreach ($a as $k);
    	foreach ($b as $l=>&$n);
    	echo '<td bgcolor="#CCCCCC">'.("$k").'</td><td bgcolor="#CCCCCC">'.("$n").'</td>';
    }
    J'obtiens ce malheureux résultat :
    volontaire | 2012-09-01 | 2012-09-02 | 2012-09-03
    --------------------------------------------------------------------------
        222    |     1      |    222     |     2       | 222 3 223 4 223 5 223 6
    Je ne sais plus quoi faire, des tonnes d'essais pour des résultats tous aussi loufoques les uns que les autres !

    Je remercie d'avance celui, celle, tout ceux qui m’éclaireront de leurs projecteurs.
    Mimosa21

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    Je n'ai pas tout compris : tu veux lister quoi exactement dans ton tableau ?
    Parcque je ne vois pas trop l'intérêt de lister des id.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 35
    Par défaut
    Merci rawsrc de me répondre,

    Pour l'instant je travaille sur les id mais par la suite ce sera avec des noms et pour les 1 - 2 - 3 -4 -5 -6 ce sera des cases à cochées validant ou non la date pour le volontaire.

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bon je te porpose 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
    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
    <?php
     
    $mission_id = $pdo->quote($modif_renfort_id, PDO::PARAM_INT);
    $sql        = <<<SQL
    SELECT
        d.*,
        v.*,
        m.date_debut,
        m.date_fin
    FROM
        volontaires_dispo d
        INNER JOIN renfort_volontaires v ON v.k_id_renfort_volontaires = d.id_renfort_volontaires
        INNER JOIN renfort m             ON m.id_renfort               = v.k_id_renfort
    WHERE
        m.id_renfort = {$mission_id}
        AND d.date_dispo BETWEEN m.date_debut AND m.date_fin
    ORDER BY
        d.date_dispo
    SQL;
     
    $data = $pdo->query($sql, PDO::FETCH_ASSOC)->fetchAll(); // j'avais oublié le fetchAll()
     
    if (empty($data)) {
        // aucun volontaire disponible
     
    }
    else {
        // les dates sont déterminées par les bornes des dates de la mission
        // qu'on récupère du 1er enregistrement
        $debut    = DateTime::createFromFormat('Y-m-d', $data[0]['date_debut']);
        $fin      = DateTime::createFromFormat('Y-m-d', $data[0]['date_fin']);
        $interval = new DateInterval('P1D');
        $dates    = array($debut->format('y-m-d'));
        while($debut < $fin) {
            $dates[] = $debut->add($interval)->format('Y-m-d');
        }
     
        // par défaut on considère qu'il n'y a aucune disponibilité pour chaque date
        $default_dispo = array_fill_keys(array_values($dates), false);
     
        $rows = array();
        foreach($data as $row) {
            $id = $row['k_id_volontaire'];
            // si on n'a pas déjà rencontré le volontaire on le crée
            if (empty($rows[$id])) {
                $rows[$id] = array(
                    'dispo' => $default_dispo,
                    'nom'   => $row['nom']
                    // d'autres valeurs à la place des * dans ton SELECT
                );
            }
            // on récupère les diponibilités
            $rows[$id]['dispo'][$row['date_dispo']] = true;
        }
     
        // rendu
    ?>
        <table>
            <thead>
                <tr>
                    <th>&nbsp;</th>
                    <?php foreach($dates as $d): ?>
                    <th><?php echo $d ?></th>
                    <?php endforeach ?>
                </tr>
            </thead>
            <tbody>
                <?php foreach($rows as $id => $row): ?>
                <tr>
                    <td><?php echo $row['nom'] ?></td>
                    <?php foreach($row['dispo'] as $v): ?>
                    <td>
                        <?php if ($v): ?>
                        <input type="checkbox" />
                        <?php else: ?>
                        &nbsp;
                        <?php endif ?>
                    </td>
                    <?php endforeach ?>
                </tr>
                <?php endforeach ?>
            </tbody>
        </table>
    <?php
    }
    Je n'ai rien testé donc croisage des doigts.
    Je t'ai commenté le code et je pense que tu devrais renommer ta table renfort en mission parce que tu cherches des volontaires en renfort d'une mission.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 35
    Par défaut
    Je viens de rentrer du boulot, je teste de suite.

    Merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 35
    Par défaut
    J'ai un problème d'array sur les dates pour l'instant. J'ai déjà rencontré problème et je sais le corriger mais Je le rectifierai demain matin car c'est fini pour ce soir la soupe va être froide.

    En bonne voie la suite demain

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/07/2007, 12h05
  2. Affichage multiple dans une table
    Par elgigante dans le forum WinDev
    Réponses: 7
    Dernier message: 22/03/2007, 13h57
  3. Réponses: 5
    Dernier message: 09/03/2007, 19h39
  4. Recherche dans une table via un formulaire
    Par Z[ee]k dans le forum Access
    Réponses: 3
    Dernier message: 05/06/2006, 11h14

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