4E SIA: Esercizio verifica sui file di testo in Php e totalizzazione - traccia e soluzioni dell'alunna Federica Anghileri



Traccia
Creare un software in Php con il file di testo che gestisca le visite di una classe ad un museo.
Il record deve contenere i seguenti campi: codice visita, data visita, ora visita, n componenti del gruppo, cognome dell’insegnante accompagnatore, nome dell’insegnante accompagnatore, costo della visita.
Creare le pagine: inserimento, modifica, visualizzazione, cancellazione e effettuare il calcolare il costo complessivo dell’importo pagato presente nell’archivio e stamparlo a video.
Il nome fisico del file si deve chiamare: museo.txt
Il nome logico del file: $museo.
Il nome del vettore (array): $visite.
La pagine Php devono essere commentate.
L’intera procedura informatica deve essere salvata sul server di Altervista e sullo spazio del prof. Paolo Latella in un unico file zippato con il nome verifica_cognome_studente.
Lo studente può consultare tutte gli esercizi svolti fino alla data della verifica.
Link del libro sul Php scritto dal prof. Paolo Latella e presente sul sito dell’Istituto Bassi:http://www.bassi.gov.it/documents/PLATELLA/ebook%20sul%20php%20in%20formato%20pdf.pdf
Linguaggi da utilizzare: Html, Php.
Memorizzazione: file di testo
Tempo della verifica 2 ore.
La consegna deve rispettare in modo tassativo quanto richiesto.


Soluzione

file di testo: Museo.txt:
2123|12/10/2019||20|Anghileri|Giovanna|10
0000|10/10/2020||10|Rossi|Maria|15
5555|17/10/2003||20|Rossi|Monica|20
327|12/10/2019||10|Ferrari|Maria|20
123|12/05/2019||5|abc|vcd|10


Pagina di inserimento dei dati: form_insert.php

<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css" /> 
</head>
<body>
<body bgcolor="silver">
<h2><a href="pagina.php">Torna alla lista delle visite al museo</a></h2>
<form action="action.php" method="post">
<label for="codice">Codice Visita</label>
<input type="text" id="codice" name="codice" /> <br><br>
<label for="data">Data Visita</label>
<input type="text" id="data" name="data" /> <br><br>
<label for="componenti">Componenti gruppo</label>
<input type="text" id="componenti" name="componenti" /> <br><br>
<label for="cognome">Cognome Insegnante accompagnatore</label>
<input type="text" id="cognome" name="cognome" /> <br><br>
<label for="nome">Nome Insegnante accompagnatore</label>
<input type="text" id="nome" name="nome" /> <br><br>
<label for="prezzo">Costo della Visita</label>
<input type="text" id="prezzo" name="prezzo" /> <br><br>

<input type="submit" name="scrivi" value="scrivi" />
</form>
</body>
</html>

Pagina aggiornamento dei dati di un record: form_update.php

<?php
include("setting.php");
if(!isset($_GET['row'])){
header("location: pagina.php");
exit;
}
$museo = file($my_database_txt);
if(!isset($museo[$_GET['row']])){
exit('errore nella chiave dell\'array');
}
list($codice, $data, $ora, $componenti, $cognome, $nome, $prezzo) = explode("|", $museo[$_GET['row']]);
?>
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<h2><a href="pagina.php">Torna alla lista delle visite del museo</a></h2>
<form action="action.php" method="post">
<label for="codice">Codice visita</label>
<input type="text" id="articolo" name="codice" value="<?php echo htmlentities($codice, ENT_QUOTES); ?>" />
<label for="data">Data visita</label>
<input type="text" id="data" name="data" value="<?php echo htmlentities($data, ENT_QUOTES); ?>" />   
<label for="ora">Ora visita</label>
<input type="text" id="ora" name="ora" value="<?php echo htmlentities($ora, ENT_QUOTES); ?>" />
<label for="componenti">Numero componenti del gruppo</label>
<input type="text" id="componenti" name="componenti" value="<?php echo htmlentities($componenti, ENT_QUOTES); ?>" />   
<label for="cognome">Cognome Insegnante accompagnatore</label>
<input type="text" id="cognome" name="cognome" value="<?php echo htmlentities($cognome, ENT_QUOTES); ?>" />
<label for="nome">Nome Insegnante accompagnatore</label>
<input type="text" id="nome" name="nome" value="<?php echo htmlentities($nome, ENT_QUOTES); ?>" />   
<label for="prezzo">Prezzo</label>
<input type="text" id="prezzo" name="prezzo" value="<?php echo htmlentities($prezzo, ENT_QUOTES); ?>" />
<input type="hidden" name="row_update" value="<?php echo $_GET['row']; ?>" />
<input type="submit" name="modifica" value="modifica" />
</form>
</body>
</html>


Pagina di configurazione del file: setting.php

<?php
$my_database_txt = 'museo.txt';
?>

Pagina di visualizzazione di tutte le prenotazioni delle visite al museo: pagina.php

<html>
<head>
<title>Visite Museo</title>
<link rel="stylesheet" href="style.css" type="text/css" /> 
</head>
<body>
<body bgcolor="silver">

<h1><p align="center">Lista Visite Musei</h1>
<p align="center"><img src="foto.JPG" width="350" height="250"/></p>
<h2><a href="form_insert.php"><p align="left">Inserisci una nuova visita ai musei </a></h2>
<font size="3"><p align="center"><B>Per ogni biglietto viene aggiunta l'IVA del 22&#37;</B></p></font><Br><BR>
<?php
include('setting.php');
$museo = file($my_database_txt);
foreach($museo as $key => $visite){
list($codice, $data, $ora, $componenti, $cognome, $nome, $prezzo) = explode("|", $visite);
    
   $iva=($prezzo*22)/100;
   $totale=($prezzo+$iva)*$componenti;
    
    
echo '
<p>
Codice Visita: ' .$codice. '<br>
Componenti: ' .$componenti. '<br>
        IVA 22&#37: '.$iva.' <br>
        Prezzo totale: ' .$totale. '<br>
<a href="action.php?delete=' .$key. '">Elimina</a> - <a href="form_update.php?row=' .$key. '">Modifica</a>
</p>
     
<hr />';
        
}
?>
</body>
</html>


La pagina "cuore" dell'intera App: action.php

<?php
include("setting.php");

/*************************
SCRITTURA DI UNA NUOVA RIGA NEL FILE DI TESTO 
NUOVO RECORD IN ACCODAMENTO
**************************/
if(isset($_POST['scrivi']))
{
if(!is_writable($my_database_txt)){
exit("il file non ha i permessi di scrittura!");
}
// riceviamo i dati e li filtriamo
$visite = array("|", "\r\n", "\r", "\n");
$codice = str_replace($visite, "", $_POST['codice']);
$data = str_replace($visite, "", $_POST['data']);
$ora = str_replace($visite, "", $_POST['ora']);
$componenti = str_replace($visite, "", $_POST['componenti']);
    $cognome = str_replace($visite, "", $_POST['cognome']);
$nome = str_replace($visite, "", $_POST['nome']);
    $prezzo = str_replace($bad_char, "", $_POST['prezzo']);
 // apriamo il file
$open = fopen($my_database_txt, "a+");
// scriviamo i dati separati dal carattere separatore
fwrite($open, $codice."|".$data."|".$ora."|".$componenti."|".$cognome."|".$nome."|".$prezzo."\r\n"); 
// chiudiamo il file  

fclose($open);
// ritorniamo nella pagina di visualizzazione
header("location: pagina.php");
exit;
// scriviamo i dati separati dal carattere separatore
fwrite($open, $codice."|".$data."|".$ora."|".$componenti."|".$cognome."|".$nome."|".$prezzo."\r\n");
// chiudiamo il file  

fclose($open);
// ritorniamo nella pagina di visualizzazione
header("location: pagina.php");
exit;
}
/*************************
ELIMINARE UNA RIGA (UN RECORD)
**************************/
else if(isset($_GET['delete']))
{
// creiamo l'array con tutti i righi
$museo = file($my_database_txt);
// eliminiamo dall'array il rigo
unset($museo[$_GET['delete']]);
// apriamo il file resettando il contenuto
$open = fopen($my_database_txt, "w");
foreach($museo as $key => $value){
// ri-scriviamo tutti i righi (rimanenti)
fwrite($open, $value);
}
fclose($open);
// ritorniamo nella pagina di visualizzazione
header("location: pagina.php");
exit;
}


/************************
MODIFICARE UNA RIGA (UN RECORD)
*************************/
else if(isset($_POST['modifica']) AND isset($_POST['row_update']))
{
// creiamo l'array con tutti i righi
$museo = file($my_database_txt);
// riceviamo i dati e li filtriamo
$visite = array("|", "\r\n", "\r", "\n");
$codice = str_replace($visite, "", $_POST['codice']);
$data = str_replace($visite, "", $_POST['data']);
$ora = str_replace($visite, "", $_POST['ora']);
    $componenti = str_replace($visite, "", $_POST['componenti']);
$cognome = str_replace($visite, "", $_POST['cognome']);
$nome = str_replace($visite, "", $_POST['nome']);
    $prezzo = str_replace($visite, "", $_POST['prezzo']);
   
// ri-scriviamo LA RIGA (che sostituirà il precedente)
$museo[$_POST['row_update']] = $codice."|".$data."|".$ora."|".$componenti."|".$cognome."|".$nome."|".$prezzo."\r\n";
// apriamo il file resettando il contenuto
$open = fopen($my_database_txt, "w");
foreach($array_righi as $key => $value){
// ri-scriviamo tutti i righi
fwrite($open, $value);
}
// ritorniamo nella pagina di visualizzazione
header("location: pagina.php");
exit;
}
?>


Attenzione alle righe nelle pagine php, qui nel blog potrebbero andare a capo ma gli script devono invece essere sulla stessa riga...

Commenti

Post popolari in questo blog

Simulazioni di reti (con Cisco Packet Tracer)

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)