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 :

creation tableau agenda


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Par défaut creation tableau agenda
    Bonjour,
    Je me permet de venir vers vous car j'ai un problème depuis plusieurs jours que je n'arrive pas à résoudre... Je ne fais que débuter en PHP...

    Je cherche à créer un agenda sous forme de tableau issu d'une requête qui va chercher des périodes de travail.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $sql_lt = "SELECT periodes.* FROM periodes WHERE periodes.id_film=47" ;
    $req = mysql_query($sql_lt) or die('Erreur SQL !<br>'.$sql_lt.'<br>'.mysql_error());
    while($data = mysql_fetch_array($req))
    { 
    list($date_deb_tour_Year,$date_deb_tour_Month,$date_deb_tour_Day)=explode('-',$data['date_deb']);
    list($date_fin_tour_Year,$date_fin_Month,$date_fin_tour_Day)=explode('-',$data['date_fin']);
    $debut_date = mktime(0, 0, 0, $date_deb_tour_Month, $date_deb_tour_Day, $date_deb_tour_Year);
    $fin_date = mktime(0, 0, 0, $date_fin_Month, $date_fin_tour_Day, $date_fin_tour_Year);
    for($i = $debut_date; $i <= $fin_date; $i+=86400)
    {
    echo '<td bgcolor="#aaa">','<div align="center">',$jour_t+1,'</div>','</td>';$jour_t++;
    }
    }
    Je fais cette requête à chaque ligne de mon tableau, ce qui me paraît démesuré puisque ma page comptabilise un nombre de ligne également issu d'une requête. Ainsi, l'utilisateur en créant de nouvelles lignes multiplie le nombre de requête et çà peut rapidement craindre pour le serveur!!!

    Deuxième problème :
    Je cherche à placer des événements dans les colonnes correspondant au jour de l'événement, pour celà, j'ai donc la requête qui crée les colonnes pour chaque jour travaillé dans l'agenda, et si le jour de l'événement correspond au jour de l'agenda, j'affiche l'événément. Sauf que lorsque j'ai plusieurs événements le même jour :
    1/Soit je fais la requête globale au début et le nombre de colonnes est multiplié par le nombre d'événements, alors que je veux afficher tous les événement dans la même case correspondant à leur jour
    2/ Soit je fais la requête dans la boucle (et j'ai lu moultes fois qu'il ne fallait pas) et j'arrive à afficher mes évenements les uns sur les autres dans la bonne case, le bon jour, mais la requête du nombre de jours entre les dates de début et dates de fin s'arrête à la première période et la ligne est incomplète si j'ai plusieurs périodes.

    J'espère être suffisamment clair, je vous envoie le code de la requête dans la boucle, qui est le plus proche de ce que je cherche à obtenir (sachant bien que ce n'est pas raisonnable comme méthode) :


    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
    $sql_lt = "SELECT periodes.* FROM periodes WHERE periodes.id_film=47" ;
    $req = mysql_query($sql_lt) or die('Erreur SQL !<br>'.$sql_lt.'<br>'.mysql_error());
    while($data = mysql_fetch_array($req))
    { 
    list($date_deb_tour_Year,$date_deb_tour_Month,$date_deb_tour_Day)=explode('-',$data['date_deb']);
    list($date_fin_tour_Year,$date_fin_Month,$date_fin_tour_Day)=explode('-',$data['date_fin']);
    $debut_date = mktime(0, 0, 0, $date_deb_tour_Month, $date_deb_tour_Day, $date_deb_tour_Year);
    $fin_date = mktime(0, 0, 0, $date_fin_Month, $date_fin_tour_Day, $date_fin_tour_Year);
    for($i = $debut_date; $i <= $fin_date; $i+=86400)
       	{
    		echo '<td bgcolor="#ddd">';
    		$db = mysql_connect('localhost', 'root', 'root');
                    mysql_select_db('ifilms',$db);
                    $sql_lt = "SELECT rel_jour_seq.* FROM rel_jour_seq WHERE rel_jour_seq.id_film=47" ;
                    $req = mysql_query($sql_lt) or die('Erreur SQL !<br>'.$sql_lt.'<br>'.mysql_error());
                    while($data = mysql_fetch_assoc($req))
                          {
                                  list($date_even_Year,$date_even_Month,$date_even_Day)=explode('-',$data['id_jour']);
                                  $date_even_jour =  mktime(0, 0, 0,$date_even_Month,$date_even_Day,$date_even_Year);
                                  if ($i==$date_even_jour){echo '<div align="center">',$data['seq'],'</div>';}
                           }
                                  echo '</td>';
               }
    }

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Par défaut
    J'ai essayé différents "GROUP BY" pour ne faire qu'une seule requête, mais le résultat n'est jamais bon. Je sens pourtant que la solution est par là. Avez vous un avis ?

    les événements groupés par jour semble logique mais çà ne fonctionne pas, un seul événement apparait dans la colonne correspondante et les colonnes s'arrêtent avant la deuxième période.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Par défaut
    Pour simplifier, si je veux afficher l'info 'seq' dans la même case, j'utilise ce 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
    $sql_lt = "SELECT periodes.*,rel_jour_seq.*
    FROM periodes,rel_jour_seq
    WHERE periodes.id_film=47
    AND rel_jour_seq.id_film=47
    GROUP BY seq
    " ;
    $req = mysql_query($sql_lt) or die('Erreur SQL !<br>'.$sql_lt.'<br>'.mysql_error());
           { 
    		echo '<td bgcolor="#ddd">';
    		while($data = mysql_fetch_assoc($req))
    			{
    				echo '<div align="center">',$data['seq'],'</div>';
    			}
    		echo '</td>';
    	}
    Mais là, je n'arrive pas à placer mon affichage de 'périodes' pour avoir le nombre exact de colonnes et ensuite afficher 'seq' dans la bonne colonne.
    Suis-je assez clair ?

Discussions similaires

  1. probleme creation tableau de string
    Par redox13 dans le forum MATLAB
    Réponses: 3
    Dernier message: 24/04/2009, 09h19
  2. Creation tableau avec array
    Par Vascogil dans le forum SAS Base
    Réponses: 4
    Dernier message: 23/01/2008, 20h55
  3. [Dates] creation mini agenda PHP
    Par redah75 dans le forum Langage
    Réponses: 6
    Dernier message: 28/12/2007, 12h31
  4. [Tableaux] creation tableau multidimensionnel
    Par calitom dans le forum Langage
    Réponses: 4
    Dernier message: 23/11/2006, 15h31
  5. Erreur creation tableau
    Par jamy79 dans le forum iReport
    Réponses: 1
    Dernier message: 02/11/2006, 14h01

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