View Full Version : [PHP] Leggere file e creare tabella...
Ciao, eccomi ancora a chiedere suggerimenti...
Comunque, sto studiandomi per i cacchi miei un po di php...
Ora vorrei relaizzare una pagina cha faccio questo, ma non so dove cominciare..
[edit]
Ho trovato cose simili manon ne cavo un ragno da un buco per ora.. Sarà che sono N00B inside per il php.. :D
Fatemi ragionare!! da solo nn e la fò.. hehe
boh non sono espertissimo di php però (se ho capito bene) io farei una roba del genere (se consideriamo $testo un array che contiene le righe del file):
foreach($testo as $riga) {
$toPrint = explode("|", $riga);
echo <<<EOF
<tr bgcolor="#0099FF">
<td><div align="center"><b>{$toPrint[0]}</b></div></td>
<td>{$toPrint[1]}</td>
<td>{$toPrint[2]}</td>
<td>{$toPrint[3]}</td>
</tr>
EOF;
}
non è una soluzione bellissima da vedere ma dovrebbe fare il suo lavoro :p
Si, avevo pensato un cosa simile... (non sapevo esattamente come scriverla.. XD)
Il problema è che le righe sono alternate di colore.. E' li che è sorto il dubio...
pensavo una cosa del genere:
Psudocode:
if file="./score.dat" exist
then $dati = "./score.dat";
else{
error = print("File non esistente");
break;
}
$righe[] = explode ("/n" $dati);
$time = getTime();
$data = detData();
echo <<<EOF
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Air Combat HighScores!</title>
</head>
<body>
<table width="100%" border="1">
<tr bgcolor="#0033FF" style="font-style:oblique">
<td width="4%" height="28"><div align="center"><b>Pos.</b></div></td>
<td width="24%"><div align="center"><b>Nome</b></div></td>
<td width="35%"><div align="center"><b>Cognome</b></div></td>
<td width="37%"><div align="center"><b>Valutazione</b></div></td>
</tr>
EOF;
for ($id = 1; $id<=10; $id++) //tanto so già per certo che le righe son solo 10!!
{
if (even? $id)
{
echo <<<EOF
<tr bgcolor="#0099FF">
<td><div align="center"><b>{$toPrint[0]}</b></div></td>
<td>{$toPrint[1]}</td>
<td>{$toPrint[2]}</td>
<td>{$toPrint[3]}</td>
</tr>
EOF;
}
else
{
echo <<<EOF
<tr bgcolor="#0099FF">
<td><div align="center"><b>{$toPrint[0]}</b></div></td>
<td>{$toPrint[1]}</td>
<td>{$toPrint[2]}</td>
<td>{$toPrint[3]}</td>
</tr>
EOF;
}
}
echo <<<EOF
</table>
</body>
</html>
EOF;
saveToFile("./$data_$time.html")
Però non saprei come trasformare questo pseudcode in php funzionante.. :D
vediamo se mi riesce di fare qualcosa di decente :p
prima di tutto creati la pagina con i vari <html> <table> ecc staticamente, poi aggiungi questa tra <table> e </table>, penso che dovrebbe funzionare :stordita:
$testo = file("nome_file.dat");
foreach($testo as $id => $riga) {
$toPrint = explode("|", $riga);
$color = ($id % 2) ? "0099FF" : "00FFFF";
echo <<<EOF
<tr bgcolor="#$color">
<td><div align="center"><b>{$toPrint[0]}</b></div></td>
<td>{$toPrint[1]}</td>
<td>{$toPrint[2]}</td>
<td>{$toPrint[3]}</td>
</tr>
EOF;
}
WOW,
Ok, grazie.....
Non serviva un if-else quindi.... ah.. ma l' ($id % 2) cosa fa esattamente?
Sapresti dirmi anche come far si che si salvi km pagina html in un ALTRO file?
tipo se il mio è index.php si salvi km dicevo in "data_ora.html"?
Se mi riesce questo sarebbe perfetta la cosa.... (con un po di modifiche che mi faccio da solo.. :D )
beh senza che ti scrivo tutto, conviene che fai qualcosa del genere (credo! potrebbero esserci metodi molto migliori non so :p ):
metti in una variabile tutto quello che intendi far finire nella pagina html, quindi qualcosa come
$newText = "<html></head><title>titolo</titld>" ecc ecc
e quindi invece che fare (per esempio)
echo <<<EOF
<tr><td>{$toPrint[0]}<td></tr>
EOF
fai
$newText .= "<tr><td>{$toPrint[0]}<td></tr>";
e alla fine apri il file su cui vuoi scrivere, ci ficchi tutto dentro e richiudi :D
$newFilename = "./$date_$time.html";
$newFile = fopen($newFilename, "w");
fwrite($newFile, $newText);
fclose($newFile);
disclaimer: probabilmente ci stanno metodi più astuti :p
P.S. il % calcola il resto della divisione tra il numero che sta a sinistra e quello che sta a destra. Quindi x % 2 vale 0 se x è divisibile per 2 (e quindi pari), 1 altrimenti (se quindi è dispari). Poi ho usato l'operatore ternario la cui sintassi è
(espressione1) ? espressione2 : espressione3
che ritorna espressione2 se espressione1 è vera, espressione3 altrimenti
Se io faccio così:
fwrite($newFile, $newText.$newText2.$newText3);
Mi mette le stringhe una dopo l'altra, no?
Non devo fare:
fwrite($newFile, $newText);
fwrite($newFile, $newText2);
fwrite($newFile, $newText3);
. . .
Corretto?
Ah per vedere se il file ".dat" esist posso usare:
$data= file"./dati.dat"
if isset($data)
then......
else....
Oppure no?
per quanto riguarda la prima domanda ti conviene prima creare il "megastringone" contenente tutta la pagina semplicemente facendo $nextText .= "altro html", l'operatore .= funziona come il += per le stringhe.
Per vedere l'esistenza di un file ti conviene invece utilizzare file_exists($filename), che restituisce 1 se esiste, 0 altrimenti
Ok, allora faccio così per il testo:
$text1="asd";
$text2="sad";
$text.....
$textToPage=$text1.$text2.$text.....
//e poi in fine
fwrite($pagina, $textToPage);
Ho capito giusto?
Per l'esistenza del file:
$dati= file"./dati.dat"
if (file_exist($dati) != 1)
//errore
//poi continuo col codice...
Ah un'altro dubbio..
Ma sei io faccio così:
$testo = file("nome_file.dat");
foreach($testo as $id => $riga) {
$toPrint = explode("|", $riga);
$color = ($id % 2) ? "0099FF" : "00FFFF";
echo <<<EOF
<tr bgcolor="#$color">
<td><div align="center"><b>{$toPrint[0]}</b></div></td>
<td>{$toPrint[1]}</td>
<td>{$toPrint[2]}</td>
<td>{$toPrint[3]}</td>
</tr>
EOF;
}
E al posto dell' "echo" metto un variabile... poi nn funziona xke sovrascrive quello che esiste già, no?
$testo = file("nome_file.dat");
foreach($testo as $id => $riga) {
$toPrint = explode("|", $riga);
$color = ($id % 2) ? "0099FF" : "00FFFF";
$text= "<tr bgcolor=/"#".$color."/"> <td><div align="center"><b>".{$toPrint[0]}."<//b><//div><//td> <td>".{$toPrint[1]}."<//td> <td>".{$toPrint[2]}."<//td> <td>".{$toPrint[3]}."<//td> <//tr> "
Mi devo creare 10 variabili e chiamarle in sequnza?
Ok, allora faccio così per il testo:
$text1="asd";
$text2="sad";
$text.....
$textToPage=$text1.$text2.$text.....
//e poi in fine
fwrite($pagina, $textToPage);
Ho capito giusto?
o fai così oppure fai, più semplicemente
$textToPage = "asd";
$textToPage .= "asd";
$textToPage .= ....
fwrite($pagina, $textToPage);
Per l'esistenza del file:
$dati= file"./dati.dat"
if (file_exist($dati) != 1)
//errore
//poi continuo col codice...
ti conviene fare il controllo prima:
if(file_exists($dati) != 1) die("Attenzione, il file non esiste!");
e poi metti tutto il resto del codice.
Ah un'altro dubbio..
Ma sei io faccio così:
$testo = file("nome_file.dat");
foreach($testo as $id => $riga) {
$toPrint = explode("|", $riga);
$color = ($id % 2) ? "0099FF" : "00FFFF";
echo <<<EOF
<tr bgcolor="#$color">
<td><div align="center"><b>{$toPrint[0]}</b></div></td>
<td>{$toPrint[1]}</td>
<td>{$toPrint[2]}</td>
<td>{$toPrint[3]}</td>
</tr>
EOF;
}
E al posto dell' "echo" metto un variabile... poi nn funziona xke sovrascrive quello che esiste già, no?
$testo = file("nome_file.dat");
foreach($testo as $id => $riga) {
$toPrint = explode("|", $riga);
$color = ($id % 2) ? "0099FF" : "00FFFF";
$text= "<tr bgcolor=/"#".$color."/"> <td><div align="center"><b>".{$toPrint[0]}."<//b><//div><//td> <td>".{$toPrint[1]}."<//td> <td>".{$toPrint[2]}."<//td> <td>".{$toPrint[3]}."<//td> <//tr> "
Mi devo creare 10 variabili e chiamarle in sequnza?
ti conviene fare come ti ho detto prima, cioè utilizzi ogni volta l'operatore .= in modo da aggiungere la roba da stampare alla stessa variabile $text, e poi fai fwrite($pagina, $text)
aaaaaah!!!!!!
non avevo notato il " .= " avevo visto solo l'uguale....
Bene ti ringrazio, questa sera provo appena ho 2 minuti.
Ok, quindi funziona il tutto.. :D
http://andrew.giurochesmetto.org/TESTprogrammazione/generaTab.php
;)
Thanks!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.