Salve,
ho una domanda un po' complessa e spero che il codice che copio qui sotto sia comprensibile.
Ho costruito la mia agenda, con gli eventi elencati giorno per giorno, ciascuno con un'icona che ne indica il tipo (concerto, sport ecc ...).
Ora vorrei migliorarla raggruppando, all'interno di nuo stesso giorno, gli eventi per tipo (tutti i concerti, tutti gli eventi sportivi del giorno x, poi di seguito tutti i concerti, tutti gli eventi sportivi del giorno x+1 ecc...).
Ho provato usando un array che contiene i tipi di eventi e inserendo un foreach ($categoria as $val) nel while principale (quello che crea i 7 giorni della settimana).
In questo modo riesco a raggruppare gli eventi per tipo all'interno dei singoli giorni, proprio come desidero: l'unico inconveniente è che se in un determinato giorno non ci sono eventi di una certa categoria (ad es non ci sono concerti) lo script mi mostra lo stesso la categoria concerti (icona e spazio apposito) naturalmente senza voci.
Non so come poter non visualizzare le categorie che in un determinato giorno non hanno eventi.
L' if(mysql_num_rows($result) = 0) non funziona, perché il controllo sui giorni viene fatto dopo la query, quindi nel database ci possono benissimo essere n concerti (e quindi il numero di righe è diverso da 0) anche se nessuno è in quel giorno.
Ah, nel db ho la data d'inizio, quella di fine e la frequenza delle evento (giornaliero, settimanale ecc...).
Qualcuno sa darmi qualche consiglio?
$oggi=date('Y-m-d', time());
$day_count = 0;
$giorni=array();
while ($day_count < 7) {
$a = time()+($day_count*86400);
$giorno = date('l', $a);
$days[$giorno]=$giorno;
$ita_gior=array('Monday'=>'Lunedì', 'Tuesday'=>'Martedì', 'Wednesday'=>'Mercoledì',
'Thursday'=>'Giovedì','Friday'=>'Venerdì', 'Saturday'=>'Sabato', 'Sunday'=>'Domenica');
$oggi = date('Y-m-d', $a);
foreach ($days as $key => $val) {
$giorni=array_merge($days,$ita_gior);
}
echo "<tr bgcolor='#cccccc'><td colspan='2' class='ag_giorni'><a name='" . $giorni[$giorno] . "'>" . $giorni[$giorno] . "</a> " . date('j',$a) . "</u></td><td></td><td></td></tr>";
$categorie = array('cine', 'conc', 'drink', 'teatro', 'sport', 'festa', 'disco', 'enogastr', 'cult', 'folk', 'arte');
$icone = array('cine'=>'cinema.jpg', 'conc'=>'nota.jpg', 'drink'=>'drink.jpg', 'teatro'=>'teatro.jpg', 'sport'=>'sport.jpg', 'festa'=>'festa.jpg', 'disco'=>'disco.jpg', 'enogastr'=>'eno.jpg', 'cult'=>'cultura.jpg', 'folk'=>'mercato.jpg', 'arte'=>'arte.gif');
foreach ($categorie as $val) {
$somma=0;
$queryb = "SELECT UNIX_TIMESTAMP(agenda.inizio) AS inizio, UNIX_TIMESTAMP(agenda.fine) AS fine, agenda.frequenza, agenda.locale, agenda.nome, agenda.tipo, agenda.id, agenda.pubblicare, agenda.cliente, agenda.citta, locali.indirizzo
FROM agenda LEFT JOIN locali ON agenda.locale = locali.nome WHERE agenda.tipo LIKE '%$val%' AND agenda.pubblicare=1";
$resultb = mysql_query($queryb, $db);
echo "<tr><td valign='top'>[img]" . $icone[$val] . "[/img]: " . mysql_num_rows($resultb) . "<td colspan='3'>";
while ($rowb = mysql_fetch_array($resultb)) {
$b=$rowb['inizio'];
$arr=array(date('Y-m-d',$b));
while ($b<$rowb['fine']) {
$b+=$rowb['frequenza']*86400;
$arr[]=date('Y-m-d',$b);
}
if (in_array($oggi,$arr)) {
$addendo=1;
if ($rowb['cliente']==1) {
echo "<span style='color:#000000;background-color:#FFFDCC' bgcolor='#FFFDCC'>";
} else {
echo "<span>";
}
echo "" . $rowb['nome'] . "" . $rowb['citta'] . ": " . $rowb['locale'];
if (isset($rowb['indirizzo'])) echo " - " . $rowb['indirizzo'];
echo "[b]"; ?>
')">info</span>
<?php
} else {
$addendo=0;
}
$somma+=$addendo;
}
echo "</td></tr><tr><td colspan='4' align='right' valign='bottom'>$somma
top</td></tr>
<tr><td colspan='4'><hr></td></tr>";
}
$day_count++;
}
?>