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. #101
    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
    voici le var_dump
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    array (size=3)
      'Salle_1' => 
        array (size=1)
          '2015-07-20' => string 'testsssss' (length=9)
      'Salle_4' => 
        array (size=1)
          '2015-07-20' => string 'ok' (length=2)
      'Salle_5' => 
        array (size=1)
          '2015-07-20' => string 'test' (length=4)

  2. #102
    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
    Debug en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $case = isset($tableau[$key][$date->format('Y-m-d')]) ? $tableau[$key][$date->format('Y-m-d')] : 'rien pour ' . $key . ' - ' . $date->format('Y-m-d')];
    Au passage je te repete que les dates de la requête, doivent être les mêmes que celles du planning sinon ça n'a pas de sens.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #103
    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
    voici la capture d'ecran du debug
    Nom : debug.jpg
Affichages : 113
Taille : 221,4 Ko

  4. #104
    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
    Tu n'as pas mis les _ dans les clefs de ton tableau $tblSalles.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #105
    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
    voici la capture corrigée
    Nom : debug2.jpg
Affichages : 106
Taille : 204,9 Ko

  6. #106
    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
    Comment tu expliques que les _ étaient manquant ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #107
    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 a un moment je penses avoir fais un mauvais copier coller

  8. #108
    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
    Tu peux vérifier tes copier/coller? Tous les messages depuis ce matin c'est pour te faire rectifier des choses que tu as mal recopié.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #109
    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
    voici le 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
    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
    <!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");
     $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'=>'2015-07-20',':j_fin'=>'2015-07-20'));
     
    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('+1 day')) {
            $tableau[$donnees['SALLE']][$date->format('Y-m-d')][] = $donnees['PRODUITS'];
     
     
       }
    }
    $objDatedebut = date_create('2015-07-20');
    $objDatefin = date_create('2015-07-26');
    $objDatedebut = date_create();
    if ($objDatedebut->format('N') != 1) {
        $objDatedebut->modify('last monday');
    }
     
     
     
    $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($tableau); 
    foreach ($tblSalles as $key=>$Salle) {
     
    	echo '<tr>
    				<td>' . $Salle . '</td>';
    	for ($date = clone $objDatedebut; $date <= $objDatefin; $date->modify('+1 day')) {
     
    		if ($key === 'Salles') {
    			$case = $date->format('d/m/Y');
    		}
    		else {
     
        $case = isset($tableau[$key][$date->format('Y-m-d')]) ? $tableau[$key][$date->format('Y-m-d')] : 'rien pour ' . $key . ' - ' . $date->format('Y-m-d');
     
    }
    		echo '<td>' . $case .'</td>';
    	}
    	echo '</tr>';
    }
     
    ?>
     
    </table>
    </body>
    </html>

  10. #110
    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
    Ba ce n'est pas le code que je t'ai fourni. Je vois au moins une différence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau[$donnees['SALLE']][$date->format('Y-m-d')] = $donnees['PRODUITS'];
    Toutefois ce code ne donne pas le résultat que tu nous montres car on a bien un affichage pour salle 1 au 20/07.
    Donc je ne sais pas ce que tu as fais avec ta bdd mais ça ne va pas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #111
    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
    effectivement ,j'ai resolu mon problème ,j'ai bien mon affichage concernant la salle en fonction de la date du 20/07.
    par contre ce qui me gène c'est de rentrer dans le code pour modifier la date pour avoir l'affichage des semaines

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sth->execute(array(':j_debut'=>'2015-07-20',':j_fin'=>'2015-07-20'));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sth->execute(array(':j_debut'=>$_POST['JOUR_DEBUT'],':j_fin'=>$_POST['JOUR_FIN']));
    Notice: Undefined index: JOUR_DEBUT
    Notice: Undefined index: JOUR_FIN

  12. #112
    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 déjà montré sur la première page comment avoir les dates du lundi au dimanche.
    Je t'ai déjà ensuite redis avant hier que le code était sur la première page.
    Et je t'ai dis que $_POST n'avait rien à faire dans ton histoire.

    Je suppose que la prochaine étape est que je te redise encore qu'il faut avoir les mêmes dates dans la requête et dans le planning.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #113
    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
    pour les dates du lundi au dimanche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $objDatedebut = date_create('2015-07-20');
    $objDatefin = date_create('2015-07-26');
    et pour les meme dates:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sth->execute(array(':j_debut'=>'2015-07-20',':j_fin'=>'2015-07-26'));
    autrement j'essaie de faire une meilleure presentation en voulant mettre du colspan en fonction de la periode debut et fin.

    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
    function nbJours($debut, $fin){
    	$nbSecondes= 60*60*24;
    	$debut_ts= strtotime($debut);
    	$fin_ts= strtotime($fin);
    	$diff= $fin_ts - $debut_ts;
    	return round($diff / $nbSecondes);
     
    }
     
    $nbJours= nbJours('2015-07-20' ,'2015-07-26');
     
     
    foreach ($tblSalles as $key=>$Salle) {
     
    	echo '<tr>
    				<td style="background:#FF5862;">' . $Salle . '</td>';
    	for ($date = clone $objDatedebut; $date <= $objDatefin; $date->modify('+1 day')) {
     
    		if ($key === 'Salles') {
    			$case = $date->format('d/m/Y');
    		}
    		else {
     
        $case = isset($tableau[$key][$date->format('Y-m-d')]) ? $tableau[$key][$date->format('Y-m-d')] : ' ' ;
     
    }
    		echo '<td colspan= $nbJours >' . $case .'</td>';
     
    	}
    	echo '</tr>';
    }
    est ce que je suis dans la bonne direction pour utiliser le colspan?

  14. #114
    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
    Actuellement la boucle qui lit la base de données inscrit une valeur par jour de la plage.
    Si tu veux une seule cellule, le tableau $tableau n'a plus qu'à contenir le jour de début et le nombre de jours.
    Utilise datediff pour avoir le nombre de jours plutôt que ton horrible fonction nbJours.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #115
    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
    avec le date_diff ,effectivement c'est beaucoup moins lourd
    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
     
    <?php
    $nbJours= date_diff($objDatedebut ,$objDatefin);
     
    foreach ($tblSalles as $key=>$Salle) {
     
    	echo '<tr>
    				<td style="background:#FF5862;">' . $Salle . '</td>';
    	for ($date = clone $objDatedebut; $date <= $objDatefin; $date->modify('+1 day')) {
     
    		if ($key === 'Salles') {
    			$case = $date->format('d/m/Y');
    		}
    		else {
     
        $case = isset($tableau[$key][$date->format('Y-m-d')]) ? $tableau[$key][$date->format('Y-m-d')] : ' ' ;
     
    }?>
    		echo '<td colspan= <?php echo $nbJours ->format('%a');?> ><?php echo $case ; ?></td>';
    <?php
    	}
    	echo '</tr>';
    }
     
    ?>
     
    </table>
    </body>
    </html>
    Si tu veux une seule cellule, le tableau $tableau n'a plus qu'à contenir le jour de début et le nombre de jours.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau[$donnees['SALLE']][$date= new datetime('2015-07-20 +5 day')] = $donnees['PRODUITS'];
    j'ai essayé également cela mais pas top au niveau résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau[$donnees['SALLE']][$date= strtotime(date("Y-m-d",strtotime($date)). "+ 5 day")] = $donnees['PRODUITS'];

  16. #116
    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
    j'ai trouvé pour rajouter 5 jours a la date mais j'ai une erreur
    Fatal error: Call to a member function modify() on a non-object
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    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('+1 day')) {
     
    $tableau[$donnees['SALLE']][$date=(date("Y-m-d",strtotime('+5day')))] = $donnees['PRODUITS'];

  17. #117
    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
    Ta syntaxe est complétement fantaisiste.
    Mais pourquoi cherches-tu à ajouter 5 jours ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  18. #118
    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 voulait déjà voir si cela me rajouter des jours, est ce que le nombre de jours peut être en variable?

  19. #119
    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
    Tu veux ajouter des jours à quoi ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  20. #120
    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
    J'avais pu comprendre qu'il fallait que je rajoute des jours à la date pour que je puisse afficher en 1 cellule les cas où ma période était supérieure à 1 journée.

+ Répondre à la discussion
Cette discussion est résolue.
Page 6 sur 8 PremièrePremière ... 2345678 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