Add files via upload

This commit is contained in:
MatMasIt 2021-06-17 01:23:32 +02:00 committed by GitHub
parent bfc858ee04
commit 4e72a94841
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 1097 additions and 0 deletions

50
README.md Normal file
View File

@ -0,0 +1,50 @@
# BiblioMxWeb
> Not official and not
A system to extract data from a [BiblioMx](http://www.micla.org/freeware/bibliomx.html) system and display it on the Internet in a searchable fashion, trough a semi-automatic process
> **Notice**
>
> The GUI present in this software is in Italian, because of the primary audience of said software
> However, you may freely and easily fix this in your implementation
## Preamble
BiblioMx, despite being a pretty common library management software, saves data in custom binary files, and only allows to export data to CSV.
This is the major limitation that this project tries to address.
## Components
### Server
The server receives a CSV (trough chunking, if necessary) and concerts it into a sqllite database.
The PHP application provides a Web UI for searching and viewing books, including bibliographical data and availability
### Agent
The agent must be set to boot hidden at the start of the computer (functionality not included int the code)
``biblio.ini`` must be configured with the correct information, under the ``[DATA]`` section:
| Key | Value |
| ---- | ----- |
|databasePath|The path to the xbb database|
|csvPath|The path to the csv export file|
|serverUrl|The URL to ``up.php``|
|authCode|The authentication code for that server instance|
|significance|The number of action that must be taken before the server shall be synced again|
|verbose|Show verbose output|
|updateUserWait|After prompting the user to update the CSV, how much time (s) to wait before moving on and uploading the file, starts after pressing "OK"|
|chunkSize|Chunk size (rows) for uploading the CSV|
Once the librarian performs a set number of actions, they will be asked to export the database manually to a csv, then the agent will upload it accordingly
The upload will also trigger the refresh of the sqllite database on the server when ended

221
server/bookDetail.php Normal file
View File

@ -0,0 +1,221 @@
<?php
require("common.php");
function bookDisplay($pdo, $id)
{
/* if(isset($_GET["duid"])){
$ex=base64url_decode($_GET["duid"]);
$stmt = $pdo->prepare("SELECT * FROM Libri WHERE Titolo=:titolo AND ISBN=:isbn");
$stmt->execute([":isbn"=>$ex]);//TODO
}
else{*/
$stmt = $pdo->prepare("SELECT * FROM Libri WHERE id=:id");
$stmt->execute([':id' => $id]);
// }
$data = $stmt->fetch();
$ak=array_keys($data);
for($i=0;$i<count($ak);$i++){
$data[$ak[$i]]=iconv('iso-8859-1', 'UTF-8//IGNORE', $data[$ak[$i]]);
}
?>
<!DOCTYPE html>
<html>
<title><?php echo htmlentities($data["Titolo"]); ?> | <?php echo $GLOBALS["place"]; ?></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" href="https://www.w3schools.com/lib/w3-theme-blue-grey.css">
<link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Open+Sans'>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<style>
html,
body,
h1,
h2,
h3,
h4,
h5 {
font-family: "Open Sans", sans-serif
}
</style>
<body class="w3-theme-l5">
<!-- Navbar -->
<div class="w3-top">
<div class="w3-bar w3-theme-d2 w3-left-align w3-large">
<a href="./" class="w3-bar-item w3-button w3-padding-large w3-theme-d4"><i class="fa fa-home w3-margin-right"></i>Biblioteca | <?php echo $GLOBALS["place"]; ?></a>
</div>
</div>
<!-- Page Container -->
<div class="w3-container w3-content" style="max-width:1400px;margin-top:80px">
<!-- The Grid -->
<div class="w3-row">
<!-- Left Column -->
<div class="w3-content">
<!-- Profile -->
<div class="w3-card w3-round w3-white">
<div class="w3-container">
<h4 class="w3-center"><?php echo htmlentities($data["Titolo"]); ?></h4>
<center><img style="width:10vw" src="books.png" /></center>
<hr>
<?php
if ($data["Autore"]) {
?>
<p><i class="fa fa-user fa-fw w3-margin-right w3-text-theme"></i> <?php echo htmlentities($data["Autore"]); ?></p>
<?php
}
?>
<?php
if ($data["Editore"]) {
?>
<p><i class="fa fa-pencil fa-fw w3-margin-right w3-text-theme"></i> <?php echo htmlentities($data["Editore"]); ?></p>
<?php
}
if ($data["ISBN"]) {
?>
<p><i class="fa fa-hashtag fa-fw w3-margin-right w3-text-theme"></i> ISBN: <?php echo htmlentities($data["ISBN"]); ?></p>
<?php
}
if ($data["Descrizione"]) {
?>
<p><i class="fa fa-book fa-fw w3-margin-right w3-text-theme"></i><?php echo htmlentities($data["Descrizione"]); ?></p>
<?php
}
?>
</div>
</div>
<br>
<!-- Accordion -->
<div class="w3-card w3-round">
<div class="w3-white">
<?php
if ($data["Prestito"] == "P") {
?>
<button onclick="myFunction('Demo1')" class="w3-button w3-block w3-theme-l1 w3-left-align" style="background-color:red!important"><i class="fa fa-circle-o-notch fa-fw w3-margin-right"></i> In prestito</button>
<div id="Demo1" class="w3-hide w3-container">
<p>Il libro risulta essere in prestito in base agli ultimi dati disponibili</p>
</div>
<?php
} else {
?>
<button onclick="myFunction('Demo1')" class="w3-button w3-block w3-theme-l1 w3-left-align" style="background-color:green!important"><i class="fa fa-check fa-fw w3-margin-right"></i>Disponibile</button>
<div id="Demo1" class="w3-hide w3-container">
<p>Il libro risulta essere disponibile al prestito in base agli ultimi dati disponibili</p>
</div>
<?php
}
?>
<button onclick="myFunction('Demo2')" class="w3-button w3-block w3-theme-l1 w3-left-align"><i class="fa fa-info fa-fw w3-margin-right"></i>Informazioni dettagliate</button>
<div id="Demo2" class=" w3-hide w3-container">
<table class="w3-table-all">
<?php if ($data["Genere"]) { ?><tr class="w3-light-grey"><th>Genere</th> <td><?php echo htmlentities($data["Genere"]); ?> </td> </tr class="w3-light-grey"><?php } ?>
<?php if ($data["Titolo"]) { ?><tr class="w3-light-grey"><th>Titolo</th> <td><?php echo htmlentities($data["Titolo"]); ?></td> </tr class="w3-light-grey"><?php } ?>
<?php if ($data["Autore"]) { ?><tr class="w3-light-grey"><th>Autore</th><td><?php echo htmlentities($data["Autore"]); ?></td> </tr class="w3-light-grey"><?php } ?>
<?php if ($data["Editore"]) { ?><tr class="w3-light-grey"><th>Editore</th><td><?php echo htmlentities($data["Editore"]); ?></td> </tr class="w3-light-grey"><?php } ?>
<?php if ($data["Serie"]) { ?><tr class="w3-light-grey"><th>Serie</th><td><?php echo htmlentities($data["Serie"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["Lingua"]) { ?><tr class="w3-light-grey"><th>Lingua</th><td><?php echo htmlentities($data["Lingua"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["Argomento"]) { ?><tr class="w3-light-grey"><th>Argomento</th><td><?php echo htmlentities($data["Argomento"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["ISBN"]) { ?><tr class="w3-light-grey"><th>ISBN</th><td><?php echo htmlentities($data["ISBN"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["Note1"] || $data["Note2"]) { ?><tr class="w3-light-grey"><th>Note</th><td><?php echo htmlentities($data["Note1"])."<br />".htmlentities($data["Note2"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["Posizione"]) { ?><tr class="w3-light-grey"><th>Posizione</th><td><?php echo htmlentities($data["Posizione"]); ?></td> </tr class="w3-light-grey"><?php } ?>
<?php if ($data["Data"]) { ?><tr class="w3-light-grey"><th>Data</th><td><?php echo htmlentities($data["Data"]); ?></td> </tr class="w3-light-grey"><?php } ?>
<?php if ($data["Inventario"]) { ?><tr class="w3-light-grey"><th>Inventario</th><td><?php echo htmlentities($data["Inventario"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["NPag"]) { ?><tr class="w3-light-grey"><th>Numero di Pagine</th><td><?php echo htmlentities($data["NPag"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["Lvlbibliogr"]) { ?><tr class="w3-light-grey"><th>Livello Bibliografico</th><td><?php echo htmlentities($data["Lvlbibliogr"]); ?></td> </tr class="w3-light-grey"><?php } ?>
<?php if ($data["Dewey"]) { ?><tr class="w3-light-grey"><th>Dewey</th><td><?php echo htmlentities($data["Dewey"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["Paesepubblicaz"]) { ?><tr class="w3-light-grey"><th>Paese di pubblicazione</th><td><?php echo htmlentities($data["Paesepubblicaz"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["Luogoeditore"]) { ?><tr class="w3-light-grey"><th>Luogo editore</th><td><?php echo htmlentities($data["Luogoeditore"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["Curatore"]) { ?><tr class="w3-light-grey"><th>Curatore</th><td><?php echo htmlentities($data["Curatore"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["Tipo"]) { ?><tr class="w3-light-grey"><th>Tipo</th><td><?php echo htmlentities($data["Tipo"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["Traduzione"]) { ?><tr class="w3-light-grey"><th>Traduzione</th><td><?php echo htmlentities($data["Traduzione"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["Descrizione"]) { ?><tr class="w3-light-grey"><th>Descrizione</th><td><?php echo htmlentities($data["Descrizione"]); ?></td></tr class="w3-light-grey"><?php } ?>
<?php if ($data["Identificativo"]) { ?><tr class="w3-light-grey"><th>Identificativo</th><td><?php echo htmlentities($data["Identificativo"]); ?></td></tr class="w3-light-grey"><?php } ?>
</table>
<!-- <div class="resultD w3-panel w3-card">
Url permanente: <?php
$uri='http://'. $_SERVER['HTTP_HOST']
. explode('?', $_SERVER['REQUEST_URI'], 2)[0];
$lur=$uri."?duid=".base64url_encode($data["ISBN"]);
echo "<a href=\"$lur\">".htmlentities($lur)."</a>";
?>
</div>-->
</div>
</div>
</div>
<br>
<!-- Interests -->
<!-- End Left Column -->
</div>
<!-- End Grid -->
</div>
<!-- End Page Container -->
</div>
<br>
<!-- Footer -->
<footer class="w3-container w3-theme-d3 w3-padding-16">
<h5>Mattia Mascarello, MIT License, 2021</h5>
</footer>
<footer class="w3-container w3-theme-d5">
<p>Repo <a href="https://www.w3schools.com/w3css/default.asp" target="_blank">github</a></p>
</footer>
<script>
// Accordion
function myFunction(id) {
var x = document.getElementById(id);
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
x.previousElementSibling.className += " w3-theme-d1";
} else {
x.className = x.className.replace("w3-show", "");
x.previousElementSibling.className =
x.previousElementSibling.className.replace(" w3-theme-d1", "");
}
}
// Used to toggle the menu on smaller screens when clicking on the menu button
function openNav() {
var x = document.getElementById("navDemo");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
} else {
x.className = x.className.replace(" w3-show", "");
}
}
myFunction('Demo2')
</script>
</body>
</html>
<?php
}
$dbh = new PDO('sqlite:db');
bookDisplay($dbh, $_GET["id"]);
?>

BIN
server/books.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

92
server/bookshelf.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 146 KiB

38
server/common.php Normal file
View File

@ -0,0 +1,38 @@
<?php
/* Encode data to Base64URL
* @param string $data
* @return boolean|string
*/
function base64url_encode($data)
{
// First of all you should encode $data to Base64 string
$b64 = base64_encode($data);
// Make sure you get a valid result, otherwise, return FALSE, as the base64_encode() function do
if ($b64 === false) {
return false;
}
// Convert Base64 to Base64URL by replacing “+” with “-” and “/” with “_”
$url = strtr($b64, '+/', '-_');
// Remove padding character from the end of line and return the Base64URL result
return rtrim($url, '=');
}
/**
* Decode data from Base64URL
* @param string $data
* @param boolean $strict
* @return boolean|string
*/
function base64url_decode($data, $strict = false)
{
// Convert Base64URL to Base64 by replacing “-” with “+” and “_” with “/”
$b64 = strtr($data, '-_', '+/');
// Decode Base64 string and return the original data
return base64_decode($b64, $strict);
}
$GLOBALS["place"]="Liceo Scientifico Statale \"L.Cocito\"";

29
server/data/current.csv Normal file
View File

@ -0,0 +1,29 @@
"Genere","Titolo","Autore","Editore","Serie","Lingua","Argomento","Prestito","ISBN","Note 1","Note 2","Posizione","Data","Inventario","Npag","Lvl bibliog.","Dewey","Paese pubblicaz.","Luogo editore","Curatore","Tipo documento","Traduzione","Descrizione","Identificat.","PrleChv","Prezzo","Dispnbl","Apprzm","Custom Field 1","Custom Field 2","Custom Field 3","Custom Field 4","Custom Field 5","Custom Field 6","Custom Field 7","Custom Field 8","Custom Field 9","Custom Field 10"
"","The Mammoth Book of Great British Humour","Michael Powell","Little, Brown Book Group","Mammoth Books","","Libri in inglese/Music & Entertainment/Humor/Humor - General","P","9781849010535","Note","","","2010","","","","","","","","","","576 p.; fisico","","","","No","0","","","","","","","","","",""
"Romanzi e Letterature » Romanzi italiani » Racconti e antologie letterarie","Il sistema periodico","Primo Levi","Giulio Einaudi Editore","Einaudi tascabili. Scrittori","Italiano","","","9788806219505","","","","02/02/2014","","266","Monografia","853 (12.) NARRATIVA ITALIANA","ITALIA","","","Testo","","Tascabile","","","","No","0","","","","","","","","","",""
"","Machines Like Me: and people like you","Ian McEwan","London Jonathan Cape, 2019","","INGLESE","","","9781787331662","","","","","","","Monografia","","GRAN BRETAGNA","","","Testo","","305 p. ; 24 cm","","","","No","0","","","","","","","","","",""
"Romanzi e Letterature » Romanzi stranieri","Norwegian wood. Tokyo blues","Haruki Murakami","Giulio Einaudi Editore","Super ET","Italiano","Narrativa Narrativa moderna e contemporanea (dopo il 1945)","","9788806216467","","","","18/03/2013","","399","Monografia","895.635 (21.) NARRATIVA GIAPPONESE. 1945-1999","ITALIA","","","Libro: Copertina morbida","G. Amitrano","Tascabile","","","","No","0","","","","","","","","","",""
"Informatica e Web » Sicurezza informatica","L'arte dell'inganno. I consigli dell'hacker più famoso del mondo","Kevin D. Mitnick","Casa editrice Feltrinelli","Universale economica. Saggi","Italiano","Informatica Sicurezza informatica","","9788807882463","","","","24/09/2013","","324","Monografia","005.8 (22.) SICUREZZA DEI DATI","ITALIA","","","Libro: Copertina morbida","G. Carlotti","Tascabile","","","","No","0","","","","","","","","","",""
"Politica e Società » Comunicazione e Media » Studi sulla comunicazione » Politica e Istituzioni » Pr","Dieci ragioni per cancellare subito i tuoi account social","Jaron Lanier","Il Saggiatore","La piccola cultura","Italiano","Società, scienze sociali e politica Società e cultura: argom","","9788842825166","","","","21/06/2018","","211","Monografia","302.231 (23.) MEDIA DIGITALI","ITALIA","","","Libro: Copertina morbida","F. Mastruzzo","Brossura","","","","No","0","","","","","","","","","",""
"Bambini e Ragazzi » Scienza e Natura » Scienza e tecnologia » Libri per Conoscere » Cultura generale","Chi era Albert Einstein?","Jess M. Brallier","Nord Sud","Narrativa","Italiano","Bambini e ragazzi Non fiction per bambini e ragazzi","","9788865268421","","","","15/02/2018","","105","Monografia","530.092 (23.) FISICA. Biografia","ITALIA","","","Libro: Copertina morbida","C. Bombari","Brossura","","","","No","0","","","","","","","","","",""
"","Se questo è un uomo","Primo Levi","Giulio Einaudi Editore","","","","","9788806354107","","","","","","","","","","","","","","","","","","No","0","","","","","","","","","",""
"Bambini e Ragazzi » Classici » 10-12 anni","La fattoria degli animali","George Orwell","Arnoldo Mondadori Editore","Oscar junior","Italiano","Bambini e ragazzi Narrativa e storie vere per bambini e raga","","9788804663089","","","","01/01/2016","","198","Monografia","","ITALIA","","","Libro: Copertina morbida","G. Bulla","Tascabile","","","","No","0","","","","","","","","","",""
"Scienza e Tecnica » Biologia » Opere divulgative » Zoologia , Ambiente e Animali » Cani Gatti e altr","La vita segreta delle mucche","Rosamund Young","Garzanti","Saggi","Italiano","Casa, hobby, cucina e tempo libero Natura, vita in campagna ","","9788811675747","","","","05/10/2017","","150","Monografia","636.2 (23.) RUMINANTI E CAMELIDI BOVINI","ITALIA","","","Libro: Copertina rigida","A. Di Gregorio","Rilegato","","","","No","0","","","","","","","","","",""
"Scienza e Tecnica » Astronomia, Spazio e Tempo » Cosmologia e Universo » Opere divulgative » Fisica ","Hawking per tutti. Universo, spazio, tempo","Rudiger Vaas","Libreria Geografica","ATLANTI","Italiano","","","9788869852046","","","","31/10/2017","","128","Monografia","530.092 (21.) FISICA. Persone","ITALIA","","","Libro: Copertina morbida","R. Franceschini","Brossura","","","","No","0","","","","","","","","","",""
"Economia Diritto e Lavoro » Management » Impresa: strategia, innovazione, imprenditorialità¿ » Studi","Silicon valley. Sogna credici realizza. Cosa imparare dalla terra dell'innovazione per farcela in Italia","Eleonora Chioda","Ulrico Hoepli Editore","Business & technology","Italiano","Economia e management Affari e gestione (management)","","9788820389161","","","","16/05/2019","","384","Monografia","","ITALIA","","","Libro: Copertina morbida","","Brossura","","","","No","0","","","","","","","","","",""
"Economia Diritto e Lavoro » Finanze personali e Investimenti , Salute Benessere Self Help » Self Hel","Padre ricco padre povero. Quello che i ricchi insegnano ai figli sul denaro","Robert T. Kiyosaki","Gribaudi","","Italiano","Salute e benessere personale Auto aiuto e valorizzazione per","","9788871527741","","","","24/01/2004","","208","Monografia","","ITALIA","","","Libro","D. Ballarini","Libro","","","","No","0","","","","","","","","","",""
"Bambini e Ragazzi » Narrativa » Narrativa » 10-12 anni , Famiglia Scuola e Università » Libri Scuola","L'amico ritrovato","Fred Uhlman","Loescher","Narrativa scuola Feltrinelli/Loescher","Italiano","Bambini e ragazzi Materiale educativo","","9788820116262","","","","15/06/1986","","144","","","","","","Libro","M. Castagnone","Libro","","","","No","0","","","","","","","","","",""
"Religione","Vangelo. Nuovo testo CEI","AA.VV.","Edizioni Paoline","Vangelo. Nuovo Testamento. Testi","ITALIANO","Scienze umane Religione e fede","","9788821592683","","","","05/2015","","400","Monografia","","ITALIA","","","Libro: Copertina morbida","","391 p. ; 10 cm","","","","No","0","","","","","","","","","",""
"Storia e Biografie » Storia: opere generali","Una questione privata","Beppe Fenoglio","Giulio Einaudi Editore","Einaudi tascabili","Italiano","Narrativa Narrativa moderna e contemporanea (dopo il 1945)","","9788806117856","","","","01/01/1990","","334","Monografia","","ITALIA","","","Libro","","Tascabile","","","","No","0","","","","","","","","","",""
"Bambini e Ragazzi » Narrativa » Narrativa » Racconti » 10-12 anni","L'uomo che sapeva contare","Malba Tahan","Salani","","Italiano","Bambini e ragazzi Narrativa e storie vere per bambini e raga","","9788867158836","","","","15/05/2014","","208","Monografia","","ITALIA","","","Libro: Copertina rigida","L. Zannini","Rilegato","","","","No","0","","","","","","","","","",""
"Gialli Noir e Avventura » Gialli per bambini e ragazzi , Bambini e Ragazzi » Narrativa » Avventura, ","Dieci piccoli indiani","Agatha Christie","Arnoldo Mondadori Editore","Oscar junior","Italiano","Bambini e ragazzi Narrativa e storie vere per bambini e raga","","9788804616986","","","","18/06/2012","","229","Monografia","823.912 (19.) NARRATIVA INGLESE. 1900-1945","ITALIA","","","Libro: Copertina morbida","B. Della Frattina","Tascabile","","","","No","0","","","","","","","","","",""
"Romanzi e Letterature » Storie vere , Storia e Biografie » Storie vere , Politica e Società » Proble","Nel mare ci sono i coccodrilli. Storia vera di Enaiatollah Akbari","Fabio Geda","Baldini & Castoldi","I tascabili","Italiano","","","9788868520151","","","","08/07/2013","","155","Monografia","","ITALIA","","","Testo","","Tascabile","","","","No","0","","","","","","","","","",""
"Romanzi e Letterature » Romanzi italiani","L'Arminuta","Donatella Di Pietrantonio","Giulio Einaudi Editore","Super ET","Italiano","","","9788806239848","","","","05/02/2019","","176","Monografia","853.92 (21.) NARRATIVA ITALIANA, 2000-","ITALIA","","","Testo","","Tascabile","","","","No","0","","","","","","","","","",""
"Romanzi e Letterature » Romanzi italiani","Lessico famigliare","Natalia Ginzburg","Giulio Einaudi Editore","Super ET","Italiano","Narrativa Narrativa moderna e contemporanea (dopo il 1945)","","9788806219291","","","","01/01/2014","","296","Monografia","853.914 (21.) NARRATIVA ITALIANA, 1945-1999","ITALIA","","","Libro","","Tascabile","","","","No","0","","","","","","","","","",""
"Romanzi e Letterature » Classici italiani","La luna e i falò","Cesare Pavese","Giulio Einaudi Editore","Super ET","Italiano","","","9788806219383","","","","Super ET","","246","Monografia","853.914 (19.) NARRATIVA ITALIANA. 1945-","ITALIA","","","Libro","","Tascabile","","","","No","0","","","","","","","","","",""
"Bambini e Ragazzi » Narrativa » Narrativa » Temi personali e sociali » Autostima e autocoscienza » 1","Wonder","R. J. Palacio","Giunti Editore","Biblioteca Junior","Italiano","Bambini e ragazzi Narrativa e storie vere per bambini e raga","","9788809058347","","","","07/05/2013","","288","Monografia","","ITALIA","","","Libro: Copertina morbida","A. Orcese","Brossura","","","","No","0","","","","","","","","","",""
"Romanzi e Letterature » Fantascienza , Fantasy Horror e Gothic » Fantascienza","Il ritorno dello Jedi. Star Wars","James Kahn","Arnoldo Mondadori Editore","Oscar grandi bestsellers","Italiano","Narrativa Fantasy e fantascienza","","9788804657019","","","","20/10/2015","","204","Monografia","","ITALIA","","","Libro: Copertina morbida","A. Guarnieri","Tascabile","","","","No","0","","","","","","","","","",""
"","Il nome della rosa ","Eco, Umberto","Bompiani","I libri di Umberto Eco","ITALIANO","Narrativa Narrativa di ambientazione storica","","9788845296833","","","","02/2018","","624","Monografia","853.914 (23.) NARRATIVA ITALIANA, 1945-1999","ITALIA","","","Testo","","618 p. ; 21 cm.","","","","No","0","","","","","","","","","",""
"Gialli Noir e Avventura » Gialli per bambini e ragazzi , Bambini e Ragazzi » Narrativa » Avventura, ","La nave del tempo. Ediz. illustrata","Ulysses Moore","Edizioni Piemme","Il battello a vapore. Ulysses Moore","Italiano","Bambini e ragazzi Narrativa e storie vere per bambini e raga","","9788856631715","","","","21/10/2013","","311","Monografia","853.92 (21.) NARRATIVA ITALIANA, 2000-","ITALIA","","","Libro: Copertina rigida","","Rilegato","","","","No","0","","","","","","","","","",""
"Bambini e Ragazzi » Narrativa » Narrativa » Temi personali e sociali » Autostima e autocoscienza » 1","Dragon Boy","Guido Sgardoli","Edizioni Piemme","Il Battello a vapore. One shot","Italiano","Bambini e ragazzi Narrativa e storie vere per bambini e raga","","9788856648348","","","","03/10/2015","","232","Monografia","","ITALIA","","","Libro: Copertina rigida","","Rilegato","","","","No","0","","","","","","","","","",""
"T","1989. Dieci storie per attraversare i muri","M. Reynolds","Orecchio Acerbo","","ITALIANO","","","9788889025833","","","","01/2009","","87","Monografia","808.83 (20.) NARRATIVA. COLLEZIONI, ANTOLOGIE","ITALIA","","","Libro: Copertina morbida","","87 p. : ill. ; 25 cm","","","","No","0","","","","","","","","","",""
1 Genere Titolo Autore Editore Serie Lingua Argomento Prestito ISBN Note 1 Note 2 Posizione Data Inventario Npag Lvl bibliog. Dewey Paese pubblicaz. Luogo editore Curatore Tipo documento Traduzione Descrizione Identificat. PrleChv Prezzo Dispnbl Apprzm Custom Field 1 Custom Field 2 Custom Field 3 Custom Field 4 Custom Field 5 Custom Field 6 Custom Field 7 Custom Field 8 Custom Field 9 Custom Field 10
2 The Mammoth Book of Great British Humour Michael Powell Little, Brown Book Group Mammoth Books Libri in inglese/Music & Entertainment/Humor/Humor - General P 9781849010535 Note 2010 576 p.; fisico No 0
3 Romanzi e Letterature » Romanzi italiani » Racconti e antologie letterarie Il sistema periodico Primo Levi Giulio Einaudi Editore Einaudi tascabili. Scrittori Italiano 9788806219505 02/02/2014 266 Monografia 853 (12.) NARRATIVA ITALIANA ITALIA Testo Tascabile No 0
4 Machines Like Me: and people like you Ian McEwan London Jonathan Cape, 2019 INGLESE 9781787331662 Monografia GRAN BRETAGNA Testo 305 p. ; 24 cm No 0
5 Romanzi e Letterature » Romanzi stranieri Norwegian wood. Tokyo blues Haruki Murakami Giulio Einaudi Editore Super ET Italiano Narrativa Narrativa moderna e contemporanea (dopo il 1945) 9788806216467 18/03/2013 399 Monografia 895.635 (21.) NARRATIVA GIAPPONESE. 1945-1999 ITALIA Libro: Copertina morbida G. Amitrano Tascabile No 0
6 Informatica e Web » Sicurezza informatica L'arte dell'inganno. I consigli dell'hacker più famoso del mondo Kevin D. Mitnick Casa editrice Feltrinelli Universale economica. Saggi Italiano Informatica Sicurezza informatica 9788807882463 24/09/2013 324 Monografia 005.8 (22.) SICUREZZA DEI DATI ITALIA Libro: Copertina morbida G. Carlotti Tascabile No 0
7 Politica e Società » Comunicazione e Media » Studi sulla comunicazione » Politica e Istituzioni » Pr Dieci ragioni per cancellare subito i tuoi account social Jaron Lanier Il Saggiatore La piccola cultura Italiano Società, scienze sociali e politica Società e cultura: argom 9788842825166 21/06/2018 211 Monografia 302.231 (23.) MEDIA DIGITALI ITALIA Libro: Copertina morbida F. Mastruzzo Brossura No 0
8 Bambini e Ragazzi » Scienza e Natura » Scienza e tecnologia » Libri per Conoscere » Cultura generale Chi era Albert Einstein? Jess M. Brallier Nord Sud Narrativa Italiano Bambini e ragazzi Non fiction per bambini e ragazzi 9788865268421 15/02/2018 105 Monografia 530.092 (23.) FISICA. Biografia ITALIA Libro: Copertina morbida C. Bombari Brossura No 0
9 Se questo è un uomo Primo Levi Giulio Einaudi Editore 9788806354107 No 0
10 Bambini e Ragazzi » Classici » 10-12 anni La fattoria degli animali George Orwell Arnoldo Mondadori Editore Oscar junior Italiano Bambini e ragazzi Narrativa e storie vere per bambini e raga 9788804663089 01/01/2016 198 Monografia ITALIA Libro: Copertina morbida G. Bulla Tascabile No 0
11 Scienza e Tecnica » Biologia » Opere divulgative » Zoologia , Ambiente e Animali » Cani Gatti e altr La vita segreta delle mucche Rosamund Young Garzanti Saggi Italiano Casa, hobby, cucina e tempo libero Natura, vita in campagna 9788811675747 05/10/2017 150 Monografia 636.2 (23.) RUMINANTI E CAMELIDI BOVINI ITALIA Libro: Copertina rigida A. Di Gregorio Rilegato No 0
12 Scienza e Tecnica » Astronomia, Spazio e Tempo » Cosmologia e Universo » Opere divulgative » Fisica Hawking per tutti. Universo, spazio, tempo Rudiger Vaas Libreria Geografica ATLANTI Italiano 9788869852046 31/10/2017 128 Monografia 530.092 (21.) FISICA. Persone ITALIA Libro: Copertina morbida R. Franceschini Brossura No 0
13 Economia Diritto e Lavoro » Management » Impresa: strategia, innovazione, imprenditorialità¿ » Studi Silicon valley. Sogna credici realizza. Cosa imparare dalla terra dell'innovazione per farcela in Italia Eleonora Chioda Ulrico Hoepli Editore Business & technology Italiano Economia e management Affari e gestione (management) 9788820389161 16/05/2019 384 Monografia ITALIA Libro: Copertina morbida Brossura No 0
14 Economia Diritto e Lavoro » Finanze personali e Investimenti , Salute Benessere Self Help » Self Hel Padre ricco padre povero. Quello che i ricchi insegnano ai figli sul denaro Robert T. Kiyosaki Gribaudi Italiano Salute e benessere personale Auto aiuto e valorizzazione per 9788871527741 24/01/2004 208 Monografia ITALIA Libro D. Ballarini Libro No 0
15 Bambini e Ragazzi » Narrativa » Narrativa » 10-12 anni , Famiglia Scuola e Università » Libri Scuola L'amico ritrovato Fred Uhlman Loescher Narrativa scuola Feltrinelli/Loescher Italiano Bambini e ragazzi Materiale educativo 9788820116262 15/06/1986 144 Libro M. Castagnone Libro No 0
16 Religione Vangelo. Nuovo testo CEI AA.VV. Edizioni Paoline Vangelo. Nuovo Testamento. Testi ITALIANO Scienze umane Religione e fede 9788821592683 05/2015 400 Monografia ITALIA Libro: Copertina morbida 391 p. ; 10 cm No 0
17 Storia e Biografie » Storia: opere generali Una questione privata Beppe Fenoglio Giulio Einaudi Editore Einaudi tascabili Italiano Narrativa Narrativa moderna e contemporanea (dopo il 1945) 9788806117856 01/01/1990 334 Monografia ITALIA Libro Tascabile No 0
18 Bambini e Ragazzi » Narrativa » Narrativa » Racconti » 10-12 anni L'uomo che sapeva contare Malba Tahan Salani Italiano Bambini e ragazzi Narrativa e storie vere per bambini e raga 9788867158836 15/05/2014 208 Monografia ITALIA Libro: Copertina rigida L. Zannini Rilegato No 0
19 Gialli Noir e Avventura » Gialli per bambini e ragazzi , Bambini e Ragazzi » Narrativa » Avventura, Dieci piccoli indiani Agatha Christie Arnoldo Mondadori Editore Oscar junior Italiano Bambini e ragazzi Narrativa e storie vere per bambini e raga 9788804616986 18/06/2012 229 Monografia 823.912 (19.) NARRATIVA INGLESE. 1900-1945 ITALIA Libro: Copertina morbida B. Della Frattina Tascabile No 0
20 Romanzi e Letterature » Storie vere , Storia e Biografie » Storie vere , Politica e Società » Proble Nel mare ci sono i coccodrilli. Storia vera di Enaiatollah Akbari Fabio Geda Baldini & Castoldi I tascabili Italiano 9788868520151 08/07/2013 155 Monografia ITALIA Testo Tascabile No 0
21 Romanzi e Letterature » Romanzi italiani L'Arminuta Donatella Di Pietrantonio Giulio Einaudi Editore Super ET Italiano 9788806239848 05/02/2019 176 Monografia 853.92 (21.) NARRATIVA ITALIANA, 2000- ITALIA Testo Tascabile No 0
22 Romanzi e Letterature » Romanzi italiani Lessico famigliare Natalia Ginzburg Giulio Einaudi Editore Super ET Italiano Narrativa Narrativa moderna e contemporanea (dopo il 1945) 9788806219291 01/01/2014 296 Monografia 853.914 (21.) NARRATIVA ITALIANA, 1945-1999 ITALIA Libro Tascabile No 0
23 Romanzi e Letterature » Classici italiani La luna e i falò Cesare Pavese Giulio Einaudi Editore Super ET Italiano 9788806219383 Super ET 246 Monografia 853.914 (19.) NARRATIVA ITALIANA. 1945- ITALIA Libro Tascabile No 0
24 Bambini e Ragazzi » Narrativa » Narrativa » Temi personali e sociali » Autostima e autocoscienza » 1 Wonder R. J. Palacio Giunti Editore Biblioteca Junior Italiano Bambini e ragazzi Narrativa e storie vere per bambini e raga 9788809058347 07/05/2013 288 Monografia ITALIA Libro: Copertina morbida A. Orcese Brossura No 0
25 Romanzi e Letterature » Fantascienza , Fantasy Horror e Gothic » Fantascienza Il ritorno dello Jedi. Star Wars James Kahn Arnoldo Mondadori Editore Oscar grandi bestsellers Italiano Narrativa Fantasy e fantascienza 9788804657019 20/10/2015 204 Monografia ITALIA Libro: Copertina morbida A. Guarnieri Tascabile No 0
26 Il nome della rosa Eco, Umberto Bompiani I libri di Umberto Eco ITALIANO Narrativa Narrativa di ambientazione storica 9788845296833 02/2018 624 Monografia 853.914 (23.) NARRATIVA ITALIANA, 1945-1999 ITALIA Testo 618 p. ; 21 cm. No 0
27 Gialli Noir e Avventura » Gialli per bambini e ragazzi , Bambini e Ragazzi » Narrativa » Avventura, La nave del tempo. Ediz. illustrata Ulysses Moore Edizioni Piemme Il battello a vapore. Ulysses Moore Italiano Bambini e ragazzi Narrativa e storie vere per bambini e raga 9788856631715 21/10/2013 311 Monografia 853.92 (21.) NARRATIVA ITALIANA, 2000- ITALIA Libro: Copertina rigida Rilegato No 0
28 Bambini e Ragazzi » Narrativa » Narrativa » Temi personali e sociali » Autostima e autocoscienza » 1 Dragon Boy Guido Sgardoli Edizioni Piemme Il Battello a vapore. One shot Italiano Bambini e ragazzi Narrativa e storie vere per bambini e raga 9788856648348 03/10/2015 232 Monografia ITALIA Libro: Copertina rigida Rilegato No 0
29 T 1989. Dieci storie per attraversare i muri M. Reynolds Orecchio Acerbo ITALIANO 9788889025833 01/2009 87 Monografia 808.83 (20.) NARRATIVA. COLLEZIONI, ANTOLOGIE ITALIA Libro: Copertina morbida 87 p. : ill. ; 25 cm No 0

BIN
server/db Normal file

Binary file not shown.

251
server/index.php Normal file
View File

@ -0,0 +1,251 @@
<?php
require("common.php");
function main($pdo)
{
?>
<!DOCTYPE html>
<html>
<title>Biblioteca | <?php echo $GLOBALS["place"]; ?></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" href="https://www.w3schools.com/lib/w3-theme-blue-grey.css">
<link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Open+Sans'>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<style>
html,
body,
h1,
h2,
h3,
h4,
h5 {
font-family: "Open Sans", sans-serif
}
</style>
<body class="w3-theme-l5">
<!-- Navbar -->
<div class="w3-top">
<div class="w3-bar w3-theme-d2 w3-left-align w3-large">
<a href="#" class="w3-bar-item w3-button w3-padding-large w3-theme-d4"><i class="fa fa-book w3-margin-right"></i>Biblioteca |<?php echo $GLOBALS["place"]; ?></a>
</div>
</div>
<!-- Page Container -->
<div class="w3-container w3-content" style="max-width:1400px;margin-top:80px">
<!-- The Grid -->
<div class="w3-row">
<!-- Left Column -->
<div class="w3-content">
<!-- Profile -->
<div class="w3-card w3-round w3-white">
<div class="w3-container">
<h3 class="w3-center">Biblioteca online</h3>
<h4 class="w3-center"><?php echo $GLOBALS["place"]; ?></h4>
<center><img style="width:45vw" src="bookshelf.svg" /></center>
<hr>
<p><i class="fa fa-book fa-fw w3-margin-right w3-text-theme"></i> <?php
$stmt = $pdo->prepare("SELECT COUNT(*) as n FROM Libri");
$stmt->execute();
$data = $stmt->fetch();
echo "Volumi: " . $data["n"];
?></p>
<p><i class="fa fa-user fa-fw w3-margin-right w3-text-theme"></i> <?php
$stmt = $pdo->prepare("SELECT COUNT(DISTINCT Autore) as n FROM Libri");
$stmt->execute();
$data = $stmt->fetch();
echo "Autori: " . $data["n"];
?></p>
<p><i class="fa fa-clock-o fa-fw w3-margin-right w3-text-theme"></i> <?php
$f = date("d/m/Y H:i:s", file_get_contents("lastupdate.dat"));
echo "Ultimo aggiornamento: " . $f;
?></p>
</div>
</div>
<br>
<!-- Accordion -->
<div class="w3-card w3-round">
<div class="w3-white">
<button onclick="myFunction('Demo1')" class="w3-button w3-block w3-theme-l1 w3-left-align"><i class="fa fa-search fa-fw w3-margin-right"></i>Interroga l'archivio</button>
<div id="Demo1" class="w3-hide w3-container">
<form method="POST" action="results.php">
<div class="w3-row">
<p class="w3-third"><label>Titolo</label>
<input class="w3-input w3-border" name="Titolo" type="text">
</p>
<p class="w3-third"><label>Autore</label>
<input class="w3-input w3-border" name="Autore" type="text">
</p>
<p class="w3-third"><label>Genere</label>
<input class="w3-input w3-border" name="Genere" type="text">
</p>
</div>
<div class="w3-row">
<p class="w3-third"><label>Editore</label>
<input class="w3-input w3-border" name="Editore" type="text">
</p>
<p class="w3-third"><label>ISBN</label>
<input class="w3-input w3-border" name="ISBN" type="number">
</p>
<p class="w3-third"><label>Inventario</label>
<input class="w3-input w3-border" name="Inventario" type="text">
</p>
</div>
<div class="w3-row">
<p class="w3-third"><label>Serie</label>
<input class="w3-input w3-border" name="Serie" type="text">
</p>
<p class="w3-third"><label>Lingua</label>
<input class="w3-input w3-border" name="Lingua" type="text">
</p>
<p class="w3-third"><label>Argomento</label>
<input class="w3-input w3-border" name="Argomento" type="text">
</p>
</div>
<div class="w3-row">
<p class="w3-third"><label>In prestito</label>
<select class="w3-select" name="Prestito">
<option value="P"></option>
<option value="NP">No</option>
<option selected value="IGNORE">Ignora</option>
</select>
</p>
<p class="w3-third"><label>Dewey</label>
<input class="w3-input w3-border" name="first" type="Dewey">
</p>
<p class="w3-third"><label>Numero di pagine</label>
<input class="w3-input w3-border" name="NPag" type="number">
</p>
</div>
<button class="w3-btn w3-right w3-blue-grey"><i class="fa fa-search fa-fw w3-margin-right"></i>Interroga</button>
<br />
<br />
</form>
</div>
<!--
<button onclick="myFunction('Demo2')" class="w3-button w3-block w3-theme-l1 w3-left-align"><i class="fa fa-newspaper-o fa-fw w3-margin-right"></i>Notizie</button>
<div id="Demo2" class=" w3-hide w3-container">
<h4>Titolo</h4>
<h3>Autore</h3>
Dfsfdf
<hr />
<h4>Titolo</h4>
<h3>Autore</h3>
Dfsfdf
<hr />
<h4>Titolo</h4>
<h3>Autore</h3>
Dfsfdf
</div>
-->
</div>
</div>
<br>
<!-- Interests -->
<!-- End Left Column -->
</div>
<!-- End Grid -->
</div>
<!-- End Page Container -->
</div>
<br>
<!-- Footer -->
<footer class="w3-container w3-theme-d3 w3-padding-16">
<h5>Mattia Mascarello, MIT License, 2021</h5>
</footer>
<footer class="w3-container w3-theme-d5">
<p>Repo <a href="https://www.w3schools.com/w3css/default.asp" target="_blank">github</a></p>
</footer>
<script>
// Accordion
function myFunction(id) {
var x = document.getElementById(id);
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
x.previousElementSibling.className += " w3-theme-d1";
} else {
x.className = x.className.replace("w3-show", "");
x.previousElementSibling.className =
x.previousElementSibling.className.replace(" w3-theme-d1", "");
}
}
// Used to toggle the menu on smaller screens when clicking on the menu button
function openNav() {
var x = document.getElementById("navDemo");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
} else {
x.className = x.className.replace(" w3-show", "");
}
}
//myFunction('Demo2')
myFunction('Demo1')
</script>
</body>
</html>
<?php
}
$dbh = new PDO('sqlite:db');
main($dbh);
?>

47
server/processCsv.php Normal file
View File

@ -0,0 +1,47 @@
<?php
function processCsv(){
$f=file("data/current.csv",FILE_SKIP_EMPTY_LINES);
$dbh = new PDO('sqlite:db');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$q=$dbh->prepare("DELETE FROM Libri");
$q->execute();
$i=0;
foreach($f as $row){
if($i==0){
$i++;
continue;
}
$aL=str_getcsv($row);
$statement=$dbh->prepare("INSERT INTO Libri(Genere,Titolo,Autore,Editore,Serie,Lingua,Argomento,Prestito,ISBN,Note1,Note2,Posizione,Data,Inventario,Npag,Lvlbibliogr,Dewey,Paesepubblicaz,Luogoeditore,Curatore,Tipo,Traduzione,Descrizione,Identificativo) VALUES(:Genere,:Titolo,:Autore,:Editore,:Serie,:Lingua,:Argomento,:Prestito,:ISBN,:Note1,:Note2,:Posizione,:Data,:Inventario,:Npag,:Lvlbibliogr,:Dewey,:Paesepubblicaz,:Luogoeditore,:Curatore,:Tipo,:Traduzione,:Descrizione,:Identificativo)");
$statement->execute([
":Genere"=>$aL[0],
":Titolo"=>$aL[1],
":Autore"=>$aL[2],
":Editore"=>$aL[3],
":Serie"=>$aL[4],
":Lingua"=>$aL[5],
":Argomento"=>$aL[6],
":Prestito"=>$aL[7],
":ISBN"=>$aL[8],
":Note1"=>$aL[9],
":Note2"=>$aL[10],
":Posizione"=>$aL[11],
":Data"=>$aL[12],
":Inventario"=>$aL[13],
":Npag"=>$aL[14],
":Lvlbibliogr"=>$aL[15],
":Dewey"=>$aL[16],
":Paesepubblicaz"=>$aL[17],
":Luogoeditore"=>$aL[18],
":Curatore"=>$aL[19],
":Tipo"=>$aL[20],
":Traduzione"=>$aL[21],
":Descrizione"=>$aL[22],
":Identificativo"=>$aL[23]
]);
$i++;
}
$q=$dbh->prepare("VACUUM");
$q->execute();
file_put_contents("lastupdate.dat",time());
}

328
server/results.php Normal file
View File

@ -0,0 +1,328 @@
<?php
require("common.php");
function main($pdo, $pageN)
{
?>
<!DOCTYPE html>
<html>
<title>Biblioteca | <?php echo $GLOBALS["place"]; ?></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" href="https://www.w3schools.com/lib/w3-theme-blue-grey.css">
<link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Open+Sans'>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<style>
html,
body,
h1,
h2,
h3,
h4,
h5 {
font-family: "Open Sans", sans-serif
}
</style>
<body class="w3-theme-l5">
<!-- Navbar -->
<div class="w3-top">
<div class="w3-bar w3-theme-d2 w3-left-align w3-large">
<a href="./" class="w3-bar-item w3-button w3-padding-large w3-theme-d4"><i class="fa fa-book w3-margin-right"></i>Biblioteca | <?php echo $GLOBALS["place"]; ?></a>
</div>
</div>
<!-- Page Container -->
<div class="w3-container w3-content" style="max-width:1400px;margin-top:80px">
<!-- The Grid -->
<div class="w3-row">
<!-- Left Column -->
<div class="w3-content">
<!-- Profile -->
<div class="w3-card w3-round w3-white">
<div class="w3-container">
<h3 class="w3-center">Biblioteca online</h3>
<h4 class="w3-center"><?php echo $GLOBALS["place"]; ?></h4>
<center><img style="width:45vw" src="bookshelf.svg" /></center>
<hr>
<h4 class="w3-center">Interrogazione completata</h4>
</div>
</div>
<br>
<!-- Accordion -->
<div class="w3-card w3-round">
<div class="w3-white">
<button onclick="myFunction('Demo1')" class="w3-button w3-block w3-theme-l1 w3-left-align"><i class="fa fa-list fa-fw w3-margin-right"></i>Risultati dell'interrogazione</button>
<div id="Demo1" class="w3-hide w3-container">
<?php
$arrayQ = [];
$query = "SELECT id,Titolo,Autore,ISBN FROM Libri WHERE";
$flag = false;
if (!empty($_POST["Titolo"])) {
if (!$flag) {
$flag = true;
} else {
$query .= " AND ";
}
$query .= " Titolo LIKE ('%' || :Titolo || '%')";
$arrayQ[":Titolo"] = $_POST["Titolo"];
}
if (!empty($_POST["Autore"])) {
if (!$flag) {
$flag = true;
} else {
$query .= " AND ";
}
$query .= " Autore LIKE ('%' || :Autore || '%')";
$arrayQ[":Autore"] = $_POST["Autore"];
}
if (!empty($_POST["Editore"])) {
if (!$flag) {
$flag = true;
} else {
$query .= " AND ";
}
$query .= " Editore LIKE ('%' || :Editore || '%')";
$arrayQ[":Editore"] = $_POST["Editore"];
}
if (!empty($_POST["Genere"])) {
if (!$flag) {
$flag = true;
} else {
$query .= " AND ";
}
$query .= " Genere LIKE ('%' || :Genere || '%')";
$arrayQ[":Genere"] = $_POST["Genere"];
}
if (!empty($_POST["ISBN"])) {
if (!$flag) {
$flag = true;
} else {
$query .= " AND ";
}
$query .= " ISBN LIKE ('%' || :ISBN || '%')";
$arrayQ[":ISBN"] = $_POST["ISBN"];
}
if (!empty($_POST["Inventario"])) {
if (!$flag) {
$flag = true;
} else {
$query .= " AND ";
}
$query .= " Inventario LIKE ('%' || :Inventario || '%')";
$arrayQ[":Inventario"] = $_POST["Inventario"];
}
if (!empty($_POST["Serie"])) {
if (!$flag) {
$flag = true;
} else {
$query .= " AND ";
}
$query .= " Serie LIKE ('%' || :Serie || '%')";
$arrayQ[":Serie"] = $_POST["Serie"];
}
if (!empty($_POST["Lingua"])) {
if (!$flag) {
$flag = true;
} else {
$query .= " AND ";
}
$query .= " Lingua LIKE ('%' || :Lingua || '%')";
$arrayQ[":Lingua"] = $_POST["Lingua"];
}
if (!empty($_POST["Argomento"])) {
if (!$flag) {
$flag = true;
} else {
$query .= " AND ";
}
$query .= " Argomento LIKE ('%' || :Argomento || '%')";
$arrayQ[":Argomento"] = $_POST["Argomento"];
}
if ($_POST["Prestito"] == "P") {
if (!$flag) {
$flag = true;
} else {
$query .= " AND ";
}
$query .= " Prestito='P'";
} elseif ($_POST["Prestito"] == "NP") {
if (!$flag) {
$flag = true;
} else {
$query .= " AND ";
}
$query .= " Prestito!='P'";
}
if (!empty($_POST["NPag"])) {
if (!$flag) {
$flag = true;
} else {
$query .= " AND ";
}
$query .= " NPag =:NPag";
$arrayQ[":NPag"] = $_POST["NPag"];
}
if (!$flag) $query .= " 1=1";
$query .= " ORDER BY Titolo ASC";
$query .= " LIMIT " . (10) . " OFFSET " . ($pageN * 10);
$stmt = $pdo->prepare($query);
$stmt->execute($arrayQ);
$i = 0;
while ($data = $stmt->fetch()) {
$ak = array_keys($data);
for ($i = 0; $i < count($ak); $i++) {
$data[$ak[$i]] = iconv('iso-8859-1', 'UTF-8//IGNORE', $data[$ak[$i]]);
}
?>
<div class="resultD w3-panel w3-card">
<table>
<tr>
<th>Titolo</th>
<td><?php echo htmlentities($data["Titolo"]); ?></td>
</tr>
<tr>
<th>Autore</th>
<td><?php echo htmlentities($data["Autore"]); ?></td>
</tr>
<tr>
<th>ISBN</th>
<td><?php echo htmlentities($data["ISBN"]); ?></td>
</tr>
</table>
<form action="bookDetail.php" method="GET">
<input name="id" type="hidden" value="<?php echo $data["id"]; ?>" />
<button class="w3-btn w3-right w3-blue-grey"><i class="fa fa-arrow-circle-right fa-fw w3-margin-right"></i>Vedi</button>
</form>
</div>
<?php
$i++;
}
if ($i == 0) {
echo '<h4 class="w3-center">Nessun risultato</h4>';
}
?>
<div class="w3-row">
<?php
$p = (int)$_POST["page"];
unset($_POST["page"]);
if ($p != 0) {
?>
<div class="w3-third">
<form method="POST">
<?php
foreach ($_POST as $key => $val) {
?><input type="hidden" name="<?php echo htmlentities($key); ?>" value="<?php echo htmlentities($val); ?>" /><?php
}
?>
<input type="hidden" name="page" value="<?php echo $p - 1; ?>">
<button class="w3-btn w3-left w3-blue-grey"> <i class="fa fa-arrow-left fa-fw w3-margin-right "></i>Pagina precedente</button>
</form>
</div>
<?php
} else {
?><div class="w3-third"></div><?php
}
?>
<div class="w3-third">
<?php if ($i != 0) { ?> <h4 class="w3-center">Pagina <?php echo $pageN + 1; ?></h4> <?php } ?>
</div>
<div class="w3-third">
<?php
if ($i != 0) {
?>
<form method="POST">
<?php
foreach ($_POST as $key => $val) {
?><input type="hidden" name="<?php echo htmlentities($key); ?>" value="<?php echo htmlentities($val); ?>" /><?php
}
?>
<input type="hidden" name="page" value="<?php echo $p + 1; ?>">
<button class="w3-btn w3-right w3-blue-grey"> Pagina successiva<i class="fa fa-arrow-right fa-fw w3-margin-left"></i></button>
</form>
<?php
}
?>
</div>
</div>
</div>
</div>
</div>
<br>
<!-- Interests -->
<!-- End Left Column -->
</div>
<!-- End Grid -->
</div>
<!-- End Page Container -->
</div>
<br>
<!-- Footer -->
<footer class="w3-container w3-theme-d3 w3-padding-16">
<h5>Mattia Mascarello, MIT License, 2021</h5>
</footer>
<footer class="w3-container w3-theme-d5">
<p>Repo <a href="https://www.w3schools.com/w3css/default.asp" target="_blank">github</a></p>
</footer>
<script>
// Accordion
function myFunction(id) {
var x = document.getElementById(id);
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
x.previousElementSibling.className += " w3-theme-d1";
} else {
x.className = x.className.replace("w3-show", "");
x.previousElementSibling.className =
x.previousElementSibling.className.replace(" w3-theme-d1", "");
}
}
// Used to toggle the menu on smaller screens when clicking on the menu button
function openNav() {
var x = document.getElementById("navDemo");
if (x.className.indexOf("w3-show") == -1) {
x.className += " w3-show";
} else {
x.className = x.className.replace(" w3-show", "");
}
}
myFunction('Demo1')
</script>
</body>
</html>
<?php
}
$dbh = new PDO('sqlite:db');
main($dbh, $_POST["page"] ?: 0);
?>

41
server/up.php Normal file
View File

@ -0,0 +1,41 @@
<?php
require("processCsv.php");
function filterName($s){
$arr=str_split($s);
$fs="";
$allowedChars=str_split("ABCDEFGHIJLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-");
foreach($arr as $c){
if(in_array($c,$allowedChars)) $fs.=$c;
}
return $fs;
}
$f=file("php://input");
$AUTH="xmeQCwqrQcSQ7TQX2Yyw";
if(trim($f[0])!=$AUTH) echo "UNAUTHORIZED";
$nonce=trim($f[1]);
$command=trim($f[2]);
switch($command){
case "BEGIN":
$files=glob("data/*.csv");
array_diff($files,["data/current.csv"]);
foreach($files as $ff){
unlink($ff);
}
echo "BEGIN";
break;
case "WRITE":
for($i=3;$i<count($f);$i++){
file_put_contents("data/".filterName($nonce).".csv",$f[$i],FILE_APPEND);
}
echo "PROCEED";
break;
case "CONCLUDE":
rename("data/".filterName($nonce).".csv","data/current.csv");
processCsv();
echo "OK";
break;
default:
echo "UNKNOWN";
break;
}