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 :

Remplir un tableau en fonction des dates selectionnees [MySQL]


Sujet :

PHP & Base de données

  1. #121
    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
    Non si tu veux faire un colspan, tu vas avoir besoin de
    - la date de début
    - le nombre de cases à remplir donc le nombre de jours entre la date de début et soit la date de fin soit la dernière date du tableau si elle est inférieure à la date de fin
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  2. #122
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 108
    Points : 25
    Points
    25
    Par défaut
    donc tous ces éléments je les ai:
    date de debut: $objDatedebut
    nombre de jour entre debut et fin via le date_diff
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nbJours= date_diff($objDatedebut ,$objDatefin);
    c'est au niveau du colspan qui faut renseigner ces infos?

  3. #123
    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
    Ton colspan il demarre à la position du jour de début pour une valeur de X jours.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #124
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 108
    Points : 25
    Points
    25
    Par défaut
    en fait je préfère utiliser les périodes enregistrée dans la table, peux tu me dire si la synthaxe est bonne?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nbJours= date_diff(date_create($donnees['JOUR_DEBUT']),date_create($donnees['JOUR_FIN']) );
    via cette ligne je vois bien le colspan se faire mais pour le moment comme il n'a pas de date de debut il commence a la premiere date du tableau,et rajoute des colonne hors dates(apres le 26/07/2015) avec les valeurs dans les cases
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <td colspan="<?php echo $nbJours ->format('%a');?>" ><?php echo $case ; ?></td>

  5. #125
    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
    en fait je préfère utiliser les périodes enregistrée dans la table
    Je ne t'ai jamais dit de faire autrement

    Je t'ai dit que la valeur du colspan est
    le nombre de jours entre la date de début et soit la date de fin, soit la dernière date du tableau si elle est inférieure à la date de fin
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #126
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 108
    Points : 25
    Points
    25
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <td colspan= <?php echo $nbJours ->format('%a');?> ><?php echo $case ; ?></td>
    ici le colspan a une valeur de 6
    Nom : colspan.jpg
Affichages : 163
Taille : 88,6 Ko

  7. #127
    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
    Il faut aussi incrementer $date de 5 jours puisque tu as avancé de 5 jours dans le planning.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #128
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 108
    Points : 25
    Points
    25
    Par défaut
    en fait je suis revenu a l'initial car j'avais une erreur que ne comprenais pas d'où:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while ($donnees = $sth->fetch(PDO::FETCH_ASSOC)) {
       $objDatedebut = date_create($donnees['JOUR_DEBUT']);
       $objDatefin = date_create($donnees['JOUR_FIN']);
       for( $date = clone $objDatedebut; $date <= $objDatefin; $date->modify('+1day')) {
           $tableau[$donnees['SALLE']][$date->format('Y-m-d')] = $donnees['PRODUITS'];
    de ce fait je n'ai pas besoin d'incrementer de 5 jours

  9. #129
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 108
    Points : 25
    Points
    25
    Par défaut
    je pense que je vais m'arreter là car déjà pour gérer des dates ce n'est pas évident ,mais faire du colspan en fonction des dates et lignes c'est trop compliqué
    un grand merci à sabotage pour son aide et son temps passé .

  10. #130
    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
    Après tant d'efforts :
    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
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
    <head>
        <meta http-equiv="Refresh" content="10" >
        <title>Gestion des Salles</title>
     
    </head>
    <body>
    <table border="1" cellspacing="1" cellpadding="30">
    <?php
    require_once("connexionsallesMysql.php");
     
    $objDatedebut = date_create();
    if ($objDatedebut->format('N') != 1) {
        $objDatedebut->modify('last monday');
    }
    $objDatefin = clone $objDatedebut;
    $objDatefin->modify('+ 6 day');
     
    $sth=$pdo->prepare("SELECT SALLE, PRODUITS, JOUR_DEBUT, JOUR_FIN FROM planning WHERE SALLE IN ('Salle_1','Salle_2','Salle_3','Salle_4','Salle_5','Cours','Vestiaires') AND JOUR_DEBUT <=:j_fin  AND JOUR_FIN >=:j_debut");
    $sth->execute(array(':j_debut'=>$objDatedebut->format('Y-m-d'),':j_fin'=>$objDatefin->format('Y-m-d')));
     
    while ($donnees = $sth->fetch(PDO::FETCH_ASSOC)) {
       $objDatedebut_produit = date_create($donnees['JOUR_DEBUT']);
       $objDatefin_produit = date_create($donnees['JOUR_FIN']);
     
       if ($objDatefin_produit > $objDatefin) {
          $njours = $objDatedebut_produit->diff($objDatefin);
       }
       else {
          $njours = $objDatedebut_produit->diff($objDatefin_produit);
       }
     
       $data[$donnees['SALLE']][$objDatedebut_produit->format('Y-m-d')] = array('produit'=>$donnees['PRODUITS'], 'njours'=>$njours->format('%a'));
    }
     
    $tblSalles = array(
    	'Salles' => 'Salles',
    	'Salle_1' => 'Salle 1',
    	'Salle_2' => 'Salle 2',
    	'Salle_3' => 'Salle 3',
    	'Salle_4' => 'Salle 4',
    	'Salle_5' => 'Salle 5',
    	'Cours' => 'Cours',
    	 'Vestiaires' => 'Vestiaires'
    );
     var_dump($data);
    foreach ($tblSalles as $key=>$Salle) {
     
    	echo '<tr>
    				<td>' . $Salle . '</td>';
    	for ($date = clone $objDatedebut; $date <= $objDatefin; $date->modify('+1 day')) {
     
    		if ($key === 'Salles') {
    			echo '<th>' . $case = $date->format('d/m/Y') . '</th>';
    		}
    		else {
            if (isset($data[$key][$date->format('Y-m-d')])) {
                $values = $data[$key][$date->format('Y-m-d')];
                echo '<td style="text-align:center;" colspan="' . ($values['njours'] + 1). '">' . htmlspecialchars($values['produit']) . '</td>';
                $date->modify('+' . $values['njours'] . ' days');
            }
            else {
                echo '<td></td>';
            }
        }
      }
    echo '</tr>';
    }
    ?>
    </table>
    </body>
    </html>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #131
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 108
    Points : 25
    Points
    25
    Par défaut
    merci beaucoup,
    mais je me suis aperçu n'était pas si fonctionnel que cela car je ne peux pas rentrer 2 valeurs sur la même salle.
    alors j'ai éssayé un peu de réadapter ton code j'arrive à afficher une valeur mais elle ne va pas à la date désirée.à tout hazard je te laisse le code modifié.
    dans ma table j'ai rajouté un champ produit_1, couleur_1,jour_debut_1 et jour_fin_1.
    encore merci pour tout.

    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
    <table id="tableau" border="1" cellspacing="1" cellpadding="40">
    <?php
     
    $objDatedebut = date_create();
    if ($objDatedebut->format('N') != 1) {
        $objDatedebut->modify('last monday');
    }
    $objDatefin = clone $objDatedebut;
    $objDatefin->modify('+ 6 day');
     
    $objDatedebut1 = date_create();
    if ($objDatedebut1->format('N') != 1) {
        $objDatedebut1->modify('last monday');
    }
    $objDatefin1 = clone $objDatedebut1;
    $objDatefin1->modify('+ 6 day');
     
     $sth=$pdo->prepare("SELECT SALLE, PRODUITS, PRODUITS_1, JOUR_DEBUT, JOUR_FIN, JOUR_DEBUT_1, JOUR_FIN_1, COULEUR, COULEUR_1 FROM planning WHERE SALLE IN ('Salle_1','Salle_2','Salle_3','Salle_4','Salle_5','Cours','Vestiaires')AND JOUR_DEBUT <=:j_fin  AND JOUR_FIN >=:j_debut AND JOUR_DEBUT_1 <=:j_fin1  AND JOUR_FIN_1 >=:j_debut1 ");
    $sth->execute(array(':j_debut'=>$objDatedebut->format('Y-m-d'),
                        ':j_fin'=>$objDatefin->format('Y-m-d'),
    		    ':j_debut1'=>$objDatedebut1->format('Y-m-d'),
                       ':j_fin1'=>$objDatefin1->format('Y-m-d')
    		    ));
     
    while ($donnees = $sth->fetch(PDO::FETCH_ASSOC)) {
       $objDatedebut_produit = date_create($donnees['JOUR_DEBUT']);
       $objDatefin_produit = date_create($donnees['JOUR_FIN']);
       $objDatedebut_produit1 = date_create($donnees['JOUR_DEBUT_1']);
       $objDatefin_produit1 = date_create($donnees['JOUR_FIN_1']);
     
       if ($objDatefin_produit > $objDatefin) {
          $njours = $objDatedebut_produit->diff($objDatefin);
       }
       else {
          $njours = $objDatedebut_produit->diff($objDatefin_produit);
       }
     
       $data[$donnees['SALLE']][$objDatedebut_produit->format('Y-m-d')] = array('produit'=>$donnees['PRODUITS'], 'colors'=>$donnees['COULEUR'], 'njours'=>$njours->format('%a'));
     
     
      if ($objDatefin_produit1 > $objDatefin1) {
          $njours1 = $objDatedebut_produit1->diff($objDatefin1);
       }
      else {
          $njours1 = $objDatedebut_produit1->diff($objDatefin_produit1);
       }
     
      $data1[$donnees['SALLE']][$objDatedebut_produit1->format('Y-m-d')] = array('produit1'=>$donnees['PRODUITS_1'], 'colors1'=>$donnees['COULEUR_1'], 'njours1'=>$njours1->format('%a'));
     
    }
     
    $tblSalles = array(
    	'Salles' => 'Salles',
    	'Salle_1' => 'Salle 1',
    	'Salle_2' => 'Salle 2',
    	'Salle_3' => 'Salle 3',
    	'Salle_4' => 'Salle 4',
    	'Salle_5' => 'Salle 5',
    	'Cours' => 'Cours',
    	 'Vestiaires' => 'Vestiaires'
    );
    //var_dump($data1);
    foreach ($tblSalles as $key=>$Salle) {
     
    	echo '<tr>
    				<td class="salle">' . $Salle . '</td>';
    	for ($date = clone $objDatedebut; $date <= $objDatefin; $date->modify('+1 day')) {
     
    		if ($key === 'Salles') {
    			echo '<th>' . $case = $date->format('d/m/Y') . '</th>';
     
    		}
    		else {
            if (isset($data[$key][$date->format('Y-m-d')])) {
                $values = $data[$key][$date->format('Y-m-d')];
                echo '<td class="back" style="background-color:'. ($values['colors']) .' "" colspan="' . ($values['njours'] + 1). '">' . htmlspecialchars($values['produit']) .'</td>';
                $date->modify('+' . $values['njours'] . ' days');
     
            }
            else {
             echo '<td></td>';
            }
        }
     
      }
                    for ($date = clone $objDatedebut1; $date <= $objDatefin1; $date->modify('+1 day')) {
                              if ($key === 'Salles') {
    			    echo '<th>' . $case = $date->format('d/m/Y') . '</th>';
     
    		        }
    		        else {
                     if (isset($data1[$key][$date->format('Y-m-d')])) {
                   $values1 = $data1[$key][$date->format('Y-m-d')];
                    echo '<td class="back" style="background-color:'. ($values1['colors1']) .' "" colspan="' . ($values1['njours1'] + 1). '">' . htmlspecialchars($values1['produit1']) .'</td>';
                  $date->modify('+' . $values1['njours1'] . ' days');
     
                   }
                }
    	    }   
     
     
    echo '</tr>';
    }
     
    ?>
     
    </table>
    </body>
    </html>

  12. #132
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    Bonjour,

    Je suis intéressé par ce tableau,je me suis permis de reprendre le code de sabotage,mais effectivement il n'y a pas la possibilité de rentrer d'autre valeurs par ligne ,sinon cela supprime la valeur déjà existante.faut il vraiment faire du doublon de code comme a propose cubita?cela me Semble un peu lourd.

  13. #133
    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
    Si on est sur un système de réservation de salle, une salle ne peut pas être réservée pour deux choses en même temps non ?

    Toutefois, sans le colspan c'est très simple d'écrire plusieurs événement pour une même cellule.
    Avec le colspan evidemment ça devient complexe.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  14. #134
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    Nous sommes d'accord mais dans le principe de la réservation c'est d'avoir un tel qui réserve la salle 1 du 28 au 29 ,et une autre personne peut réserver cette même salle pour 3 jours suivants. De ce fait nous pouvons quand même avoir 2 colspan(un pour 2 jours et 1 pour 3 jours)?

  15. #135
    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
    Ca, ca fonctionne : plusieurs dates pour une seule salle.
    Ce qui ne fonctionne pas c'est des chevauchements de planification (entre salles ou entre dates pour une meme salle)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #136
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    Ca, ca fonctionne : plusieurs dates pour une seule salle.
    via ton code l'adaptation est simple? faut il apporter des modifications à la table? peux tu m'expliquer le principe?

  17. #137
    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
    Le code fonctionne avec la table fournie par cubita.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  18. #138
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    d'accord,mais je me suis mal exprimé, je voulais savoir si il fallait rajouter des champs type produits_1, jour_debut_1 et jour_fin_1 comme cubita l'a specifié sur son dernier post car le code m'avais l'air lourd le fait qu'il y ai des duplications de lignes.
    je te pose cettte question car je suis dans l'optique de vouloir faire des reservations de salle mais en fonction de plusieurs date de réservations.

  19. #139
    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
    Je t'ai dit : mon code fonctionne tant qu'il n'y a pas de chevauchements dans les dates d'une salle.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  20. #140
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 625
    Points : 168
    Points
    168
    Par défaut
    J'ai essayé ton code avec la table de cubita,j'ai essayé de mettre 2produits sur la même salle avec des dates différentes .ce qui se passe,le produit qui a été affiché en premier c'est effacé et le 2 eme s'affiche avec la 2ème date renseigne

+ Répondre à la discussion
Cette discussion est résolue.
Page 7 sur 8 PremièrePremière ... 345678 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/03/2015, 22h50
  2. changer l'ordre des dates dans table
    Par lordyan dans le forum Requêtes
    Réponses: 11
    Dernier message: 14/01/2005, 11h12
  3. [C#] Affichage des lignes dans un tableau.
    Par maldufleur dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/04/2004, 11h28
  4. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01
  5. Réponses: 3
    Dernier message: 19/03/2003, 15h19

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