Web Server: PHP e Database

  • Cosa è il PHP?
    PHP (acronimo ricorsivo per PHP: Hypertext Preprocessor) è un linguaggio di scripting,open source molto utilizzato, è specialmente indicato per lo sviluppo web e può essere integrato nell’HTML.
    Il codice PHP è delimitato da speciali istruzioni di elaborazione di inizio e fine <?php e ?> che permettono di entrare e uscire dalla “modalità PHP”.
    La cosa più interessante nell’uso di PHP è che si tratta di un linguaggio estremamente semplice ma offre molte prestazioni avanzate.
  •  Cosa fa il php?
    PHP ha come obiettivo principale lo scripting server-side come raccogliere dati da un form, generare pagine dai contenuti dinamici, oppure mandare e ricevere cookies. Ma PHP può fare molto di più.
    Esistono tre campi principali in cui vengono usati gli scripts PHP:
    Lo scripting server-side. Questo è il campo più tradizionale ed il maggiore obiettivo del PHP.
    Lo scripting di righe di comando. Si può creare uno script PHP da usare senza alcun server o browser. Per usarlo in questo modo, l’unica cosa necessaria è un parser PHP. Questi script possono essere utilizzati per semplici task di processamento testi.
    Scrittura di applicazioni desktop. Probabilmente PHP non è il linguaggio più adatto per scrivere applicazioni desktop, con interfaccia grafica, ma, se lo si conosce molto bene, e se se ne vogliono usare delle caratteristiche avanzate in applicazioni client-side, si può anche usare per scrivere questo tipo di pogrammi
    Una delle caratteristiche più importanti e significative di PHP è la possibilità di supportare una completa gamma di database. Scrivere una pagina web collegata ad un database è incredibilmente semplice utilizzando una delle specifiche estensioni del database (p.e., per mysql.)
    PARSER PHP:
    In informatica il parsing, analisi ,è un processo che analizza un flusso continuo di dati in ingresso (input) (letti per esempio da un file o una tastiera) in modo da determinare la sua struttura grazie ad una data grammatica formale. Un parser è un programma che esegue questo compito.
    OPEN SOURCE:
    Open source (che significa sorgente aperta) indica un software di cui gli autori rendono pubblico il codice sorgente, favorendone il libero studio e permettendo a programmatori indipendenti di apportarvi modifiche ed estensioni per poter migliorare il progetto stesso.
  • Cosa è MySQL?
    I database MySQL sono tipologie di basi di dati. Esistono diversi formati di database, ma OVH ha scelto di utilizzare il formato MySQL poiché è attualmente uno dei formati più semplici e contemporaneamente uno dei più efficaci. Una base di dati è un’entità nella quale è possibile conservare dati in modo strutturato e con meno ridondanza possibile. L’obiettivo è fare in modo che questi dati possano in seguito essere utilizzati facilmente da programmi o scripts.
    I database MySQL possono essere associati a script PHP alfine di realizzare siti dinamici. e desiderate realizzare un sito moderno che presenti funzionalità avanzate, vedrete che i database MySQL sono utility indispensabili.

 

Il seguente frammento programma illustra la connessione e l‘autenticazione al nostro server .


<?php
/*
*/
// Si crea una connessione con username e password presso il nostro database.
$hostname = "dbname";
$username = "youruser";
$password = "xxxxxxxx";
$db = "dbuser";
$con = mysqli_connect($hostname, $username, $password, $db);

// Controllo della connessione se è andata a buon fine.
// Se la connessione fallisce viene emesso un messaggio che avvisa dell'errore.
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// Procedo con la lettura del numero di record per ogni parametro nel database
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT COUNT(*) FROM temperatura') as $row) {
$num_record = $row['COUNT(*)'];
}
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT COUNT(*) FROM luminosita') as $row) {
$num_record = $row['COUNT(*)'];
}
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
foreach($dbh->query('SELECT COUNT(*) FROM umidita') as $row) {
$num_record = $row['COUNT(*)'];
}



LETTURA E VISUALIZZAZIONE DEI VALORI



//Lettura valori temperatura e creazione di un array per la memorizzazione dei dati
{
$resultArray = array();
$tempArray = array();
// Passare attraverso ogni riga dei valori
while($row = $result->fetch_object())
{
//Aggiunta delle righe al nostro array
$tempArray = $row;
array_push($resultArray, $tempArray);
}
// Codifica dell'aray a JSON ed in invio dei risultati
$json = json_encode($resultArray);
$T = explode('"', $json);
echo $T[3];
}
}
//Lettura valori umidita' e creazione di un array per la memorizzazione dei dati
{
$resultArray = array();
$tempArray = array();
// Passare attraverso ogni riga dei valori
while($row = $result->fetch_object())
{
// Aggiunta delle righe al nostro array
$tempArray = $row;
array_push($resultArray, $tempArray);
}
// Codifica dell'aray a JSON ed in invio dei risultati
$json = json_encode($resultArray);
$H = explode('"', $json);
echo $H[3];
}
//Lettura valori LUX e creazione di un array per la memorizzazione dei dati
{
$resultArray = array();
$tempArray = array();
// Passare attraverso ogni riga dei valori
while($row = $result->fetch_object())
{
// Aggiunta delle righe al nostro array
$tempArray = $row;
array_push($resultArray, $tempArray);
}
//Codifica dell'aray a JSON ed in invio dei risultati
$json = json_encode($resultArray);
$L = explode('"', $json);
echo $L[3];
}

//Chiusura della connessione al database
mysqli_close($con);
?>

INSERIMENTO DEI VALORI


<?php
/*
*/
// Si crea una connessione con username e password presso il nostro database.
 $hostname = "dbname";
 $username = "youruser";
 $password = "xxxxxxxx";
 $db = "dbuser";
 $con = mysqli_connect($hostname, $username, $password, $db);
//Controllo della connessione se è andata a buon fine.
//Se la connessione fallisce viene emesso un messaggio che avvisa dell'errore.
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$db_table = "temperatura"; 
// Leggo il numero di record prima del nuovo inserimento
 $dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);
 foreach($dbh->query('SELECT COUNT(*) FROM temperatura') as $row) {  
 $num_record = $row['COUNT(*)';
}

// Fisso il numero max di record che voglio tenere
//-------------
$num_max = 30;
//-------------
// Se il $num_record < $num_max
// Inserisco ultima lettura
if ($num_record < $num_max) {
	if (isset($_GET['T'])) {
		$valore = $_GET['T'];
		$cron = $num_record + 1;
		$sql = "INSERT INTO $db_table(cron, valore) VALUES ($cron, $valore)";
		mysqli_query($con, $sql);
	}
}
// Se $num_record = $num_max 
else {
	// Elimino il record di cron = 1
	$delete_id = "DELETE FROM $db_table WHERE cron = 1";
	mysqli_query($con, $delete_id);	
	// Shift in giù di 1 su tutti i cron
	for($x = 1; $x <= $num_record; $x++) {
		$x_mod = $x + 1;
		$sql = "UPDATE $db_table SET cron=$x WHERE cron=$x_mod";
		mysqli_query($con, $sql);
	}
	// Inserimento ultima lettura
	if (isset($_GET['T'])) {
		$valore = $_GET['T'];
		$cron = $num_record;
		$sql = "INSERT INTO $db_table(cron, valore) VALUES ($cron, $valore)";
		mysqli_query($con, $sql);
	}
}
//Print T e num_record
echo "Temperatura inserita = ".$_GET['T'];
echo "</br>";
echo "Numero records = ".$num_record;
//----------------------------------------------
$db_table2 = "umidita";

// Leggo il numero di record prima del nuovo inserimento
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);  
foreach($dbh->query('SELECT COUNT(*) FROM umidita') as $row) {  
	$num_record = $row['COUNT(*)'];
}

// Fisso il numero max di record che voglio tenere
//-------------
$num_max = 30;
//-------------
// Se il $num_record < $num_max
// Inserisco ultima lettura
if ($num_record < $num_max) {
	if (isset($_GET['H'])) {
		$valore = $_GET['H'];
		$cron = $num_record + 1;
		$sql = "INSERT INTO $db_table2(cron, valore) VALUES ($cron, $valore)";
		mysqli_query($con, $sql);
	}
}
// Se $num_record = $num_max 
else {
	// Elimino il record di cron = 1
	$delete_id = "DELETE FROM $db_table2 WHERE cron = 1";
	mysqli_query($con, $delete_id);	
	// Shift in giù di 1 su tutti i cron
	for($x = 1; $x <= $num_record; $x++) {
		$x_mod = $x + 1;
		$sql = "UPDATE $db_table2 SET cron=$x WHERE cron=$x_mod";
		mysqli_query($con, $sql);
	}
	// Inserimento ultima lettura
	if (isset($_GET['H'])) {
		$valore = $_GET['H'];
		$cron = $num_record;
		$sql = "INSERT INTO $db_table2(cron, valore) VALUES ($cron, $valore)";
		mysqli_query($con, $sql);
	}
}
//Print H e num_record
echo "Umidita inserita = ".$_GET['H'];
echo "</br>";
echo "Numero records = ".$num_record;
//----------------------------------------------
$db_table3 = "luminosita";
// Leggo il numero di record prima del nuovo inserimento
$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);  
foreach($dbh->query('SELECT COUNT(*) FROM luminosita') as $row) {  
	$num_record = $row['COUNT(*)'];
}

// Fisso il numero max di record che voglio tenere
//-------------
$num_max = 30;
//-------------
// Se il $num_record < $num_max
// Inserisco ultima lettura
if ($num_record < $num_max) {
	if (isset($_GET['L'])) {
		$valore = $_GET['L'];
		$cron = $num_record + 1;
		$sql = "INSERT INTO $db_table3(cron, valore) VALUES ($cron, $valore)";
		mysqli_query($con, $sql);
	}
}
// Se $num_record = $num_max 
else {
	// Elimino il record di cron = 1
	$delete_id = "DELETE FROM $db_table3 WHERE cron = 1";
	mysqli_query($con, $delete_id);	
	// Shift in giù di 1 su tutti i cron
	for($x = 1; $x <= $num_record; $x++) {
		$x_mod = $x + 1;
		$sql = "UPDATE $db_table3 SET cron=$x WHERE cron=$x_mod";
		mysqli_query($con, $sql);
	}
	// Inserimento ultima lettura
	if (isset($_GET['L'])) {
		$valore = $_GET['L'];
		$cron = $num_record;
		$sql = "INSERT INTO $db_table3(cron, valore) VALUES ($cron, $valore)";
		mysqli_query($con, $sql);
	}
}


//Print L e num_record
echo "Luminosita inserita = ".$_GET['L'];
echo "</br>";
echo "Numero records = ".$num_record;

//Chiusura della connessione al database
mysqli_close($con);

?-->