Ciao a tutti,
avrei un problema: devo scrivere una pagina php da usare coi miei ex compagni di liceo per organizzare una pizzata di classe.
L'idea del lavoro è avere una cosa del genere:
http://www.websmasher.altervista.org...ta/pizzata.php
Tutta la tabella viene creata dinamicamente con questo codice, che si basa su un file di testo (Core.txt) dove sono contenuti nome, vettore delle checkbox di selezione attivate, ed eventuali note aggiuntive.
Il mio problema è creare una funzione che, letti i parametri della pagina, li salvi sul file di testo Core.txt, sovrascrivendolo.
Core.txt
Codice PHP:
_|_|_|_| //separatore di persone
A Nome1 //A = identificatore persona; Nome1 = nome persona
giorni:1;5;8; //giorni: stringa di default per la terza riga; poi numeri separati da ";". Servono a indicare il vettore delle disponibilità in ordine crescente di checkbox
note:nota1 //note: stringa di default per la quarta riga; poi stringa con note, saranno inserite in un <textarea>
_|_|_|_|
B Nome2
giorni:4;8;
note:nota2
_|_|_|_|
C Nome3
giorni:1;6;
note:
_|_|_|_|
D Nome4
giorni:1;2;3;7;
note:ciao
//....e così via
Il codice che crea la tabella, completo di codice html, è questo:
Codice completo tabella dinamica
Codice PHP:
<form method="POST" action="pizzata.php">
<table border="1" width="100%" id="table1" bordercolorlight="#000000" bordercolordark="#000000" style="border-collapse: collapse">
<tr>
<td width="20%">Nome</td>
<td width="52%" colspan="8">Disponibilità</td>
<td width="30%">Note</td>
</tr>
<tr>
<td width="20%" rowspan="2"></td>
<td width="24%" height="25" colspan="2">Marzo</td>
<td width="26%" height="25" colspan="6">Aprile</td>
<td width="30%" rowspan="2"></td>
</tr>
<tr>
<td width="7%">30</td>
<td width="7%">31</td>
<td width="6%">7</td>
<td width="6%">8</td>
<td width="6%">14</td>
<td width="6%">15</td>
<td width="6%">20</td>
<td width="6%">21</td>
</tr>
<tr>
<?php
$handle = fopen("core.txt","r");
while(!feof($handle)) {
$buffer = fgets($handle, 4096);
$buffer = fgets($handle, 4096);
if( sscanf($buffer, "%s %s", $id, $nome) == 2 ) {
echo "<td width='20%'>$nome</td>";
$buffer = fgets($handle, 4096);
$tokens = substr($buffer,7);
$arr_tkns = explode(";", $tokens);
$k = 0;
while($k < 8) {
$k2 = $k + 1;
$finale = sprintf("%s%d",$id,$k2);
echo "<td width='7%'><input type='checkbox' name='$finale' value='vero'";
$i = 0; $checked = 0;
if(count($arr_tkns) > 1) while($i < count($arr_tkns)) { if($k+1 == $arr_tkns[$i]) $checked = 1; $i++; }
if($checked == 1) echo " checked></td>";
else echo "></td>";
$k++;
}
$buffer = fgets($handle, 4096);
$note = substr($buffer,5);
$id_note = "S_".$id;
echo "<td width='30%'><textarea rows='2' name='".$id_note."' cols='15'>".$note."</textarea></td></tr>";
}
}
?>
</tr>
</table>
<input type="hidden" value="1" name="salva">
<input type="submit" value="invia">
</form>
Tutto questo codice crea la tabella che vedete su
http://www.websmasher.altervista.org...ta/pizzata.php
a partire da un file di testo Core.txt, opportunamente riempito (spiegato prima).
Ora, se qualcuno modifica la pagina dopo averla letta, per esempio entra il tizio "Nome 4" e decide che è disponibile per il 7 aprile, seleziona la checkbox corrispondente, e scrive come nota "ciao mfonz85".
La pagina magari era già stata riempita da altre persone.
Ora, come scrivo la funzione che prende i "dati della tabella" e li rimette nel file Core.txt, sovrascrivendolo?
Proponetemi, se ce ne sono, ottimizzazioni e diverse strutture dati anche per la parte di scrittura della tabella su browser client...