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.
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!!!
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++; } }
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>'; } }
Partager