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 in Excel e fogli di Google