ciao
se la durata è 6 giorni (da come mi sembra è sempre la stessa) potresti provare a fare così
tabella anagrafica:
id_cliente int(9) prymarikey autoincrement
nome varchar (250) //e altri dati che ti possono interessare nell'anagrafica
tabella attivita:
id_attivita int(12) prymarikey autoincrement
id_cliente int(9)
inizio int(2)
durata int(1) default 6
a_1 enum('0','1') default 0 // 0 = non attivo, 1 = attivo
a_2 //come sopra
a_3
a_4
a_5
a_6 //come sopra
poi lo script
PHP:
<?php
//dati di connessione
$q_cl=mysql_query("SELECT id_cliente FROM anagrafica");
while($r_cl=mysql_fetch_array($q_cl)){
echo "il cliente id=".$r_cl['id_cliente']." ha le seguenti attività<br />";
$id_c=$r_cl['id_cliente'];
$q_at=mysql_query("SELECT * FROM periodo WHERE id_cliente =".$r_cl['id_cliente']);
echo "<table>";
while($r_at=mysql_fetch_array($q_at)){
$id_at=$r_at['id_attivita'];
$inizio=$r_at['inizio'];
$durata=$r_at['durata'];
$a[0]=$r_at['a_1'];
$a[1]=$r_at['a_2'];
$a[2]=$r_at['a_3'];
$a[3]=$r_at['a_4'];
$a[4]=$r_at['a_5'];
$a[5]=$r_at['a_6'];
$stile="";
echo "<tr>";
for($k=0; $k <$durata;$k++){
$inizio +=$k;
if($a[$k] == "0"){
$stile="";
$inverti="1";
}elseif($a[$k] == "1"){
$stile= "style='background-color:#FF0000'";
$inverti="0";
}
$inverti="$id_at|$id_c|$k|$inverti";
echo "<td $stile>";
echo "<a href=\"modifica.php?mod=$inverti\">$inizio</a>";
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
}
?>
e la pag modifica.php
PHP:
<?php
$modifica=$_GET['mod'];
$dati=explode("|", $modifica);
$d_a=$dati[0];//conterrà l'id dell'attività
$d_c=$dati[1];//conterrà l'id del cliente
$d_gg=$dati[2];//il giorno da modificare
$d_at_na=$dati[3];//il valore di inversione, 1 se era 0 , 0 se era 1
switch($d_gg){
case "0": $m= " a_1 = $d_at_na ";
break;
case "1": $m= " a_2 = $d_at_na ";
break;
case "2": $m= " a_3 = $d_at_na ";
break;
case "3": $m= " a_4 = $d_at_na ";
break;
case "4": $m= " a_5 = $d_at_na ";
break;
case "5": $m= " a_6 = $d_at_na ";
break;
default: $m=0;
break;
}
if($m==0){
echo "qualcosa è andato storto";
echo "<meta http-equiv='Refresh' content='3; URL=alla_pag_precedente.php'>";
}else{
$query = "UPDATE attivita SET $m WHERE id_attivita = $d_a AND id_cliente = $d_c";
$ris=mysql_query($query);// or die....
echo "<meta http-equiv='Refresh' content='0; URL=alla_pag_precedente.php'>";
}
?>
lo scrip "
dovrebbe" funzionare in questo modo
la prima pagina ti presenta per ogni cliente (e per ogno sua attività) 6 caselle col il numero del giorno (es 22, 23, 24, 25, 26, 27)
cioè dall'inizio alla fine attività
se (es) il giorno 23 è attivo la cella ha un bck rosso
se vuoi modificare l'attività basta che tu clicci sul numero del giorno
es clicchi sul 24 in cui non era attivo:
si uppa la tabella attivita (per quell'attività e per quel cliente) portando il valore 0 a uno
quando torni alla pag iniziale il giorno 24 avrà il bck rosso
al contrario es. il giorno 23 era attivo e ci clicchi sopra
si uppa la tabella attivita (per quell'attività e per quel cliente) portando il valore uno a 0
tornando alla pag iniziale il bck del giorno 23 non sarà piu rosso
guarda che è un'idea che ho buttato giu , non l'ho testata quindi non è detto che funzi, o per errori di logica (grave) o perchè ho sbagliato qualche copy/paste ...