[PHP] pagina autoaggiornante

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
ilababy
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 585
Iscrizione: mercoledì 28 dicembre 2005, 19:26

[PHP] pagina autoaggiornante

Messaggio da ilababy »

Buongiorno, ho un programmino in C che legge dalla seriale una variabile da una centralina. Questa variabile può avere valore 0 o 1 e viene scritta in un db MySQL. Ora dovrei fare una pagina PHP che legge costantemente il valore della variabile e a seconda del valore mi visualizza un immagine o un'altra in modo continuo. Come posso fare? Grazie.
Avatar utente
Eresia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 362
Iscrizione: venerdì 30 giugno 2006, 1:20
Distribuzione: gentoo
Sesso: Maschile

Re: [PHP] pagina autoaggiornante

Messaggio da Eresia »

Qui un ottimo inizio

Codice: Seleziona tutto

<?php
$server = "localhost";
$user = "username";
$pass = "password";
$dbname = "myDB";

// Crea connessione
$conn = new mysqli($server, $user, $pass, $dbname);

// Check connessione
if ($conn->connect_error) {
    die("Connessione fallita: " . $conn->connect_error);
}

// Qui devi cambiare i valori secondo la tabella del tuo database
$sql = "SELECT id, tua_var FROM TuaTabella";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output 
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Valore della variabile: " . $row["tua_var"];
    }
} else {
    echo "nessun valore trovato";
}
$conn->close();
?> 
per l'auto refresh -> http://stackoverflow.com/questions/1149 ... e#11497617
emerge --auD --oneshot life/lucky-*
ilababy
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 585
Iscrizione: mercoledì 28 dicembre 2005, 19:26

Re: [PHP] pagina autoaggiornante

Messaggio da ilababy »

Grazie della risposta.
Il mio problema però è proprio che non vorrei eseguire un autorefresh, perchè ci mette troppo tempo.
Mi piacerebbe che automaticamente, senza refresh, un bottone passi da verde a rosso nel momento in cui il valore passi da 0 a 1.
Avatar utente
Eresia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 362
Iscrizione: venerdì 30 giugno 2006, 1:20
Distribuzione: gentoo
Sesso: Maschile

Re: [PHP] pagina autoaggiornante

Messaggio da Eresia »

Cosa intendi ci mette troppo? Hai bisono di refresh i termini di millisecondi?

Codice: Seleziona tutto

$(document).ready(function() {
    // refresh automatico 1secondo.
    setInterval('refreshPage()', 1000);
});

function refreshPage() { 
    location.reload(); 
}
oppure guarda qui
https://datatables.net/reference/api/ajax.reload%28%29
emerge --auD --oneshot life/lucky-*
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP] pagina autoaggiornante

Messaggio da Zoff »

ilababy [url=http://forum.ubuntu-it.org/viewtopic.php?p=4956296#p4956296][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Grazie della risposta.
Il mio problema però è proprio che non vorrei eseguire un autorefresh, perchè ci mette troppo tempo.
Mi piacerebbe che automaticamente, senza refresh, un bottone passi da verde a rosso nel momento in cui il valore passi da 0 a 1.
Se vuoi un aggiornamento realmente tempestivo dovresti utilizzare le websocket, così lo script che si occupa dell'aggiornamento del valore può notificare immadiatamente tutte le pagine aperte. Ma è una soluzione complessa.

L'auto-refresh di HTTP lavora a secondi, quindi può aggiornarsi ogni secondo, se è piu' lento è colpa del server o dello script che fa caricare la pagina.
Se non ti piace vedere continuamente ricaricare l'immagine (effetto sfarfallio) puoi aggiornarla da javascript.

Un codice molto semplice.
Pagina visualizzazione:

Codice: Seleziona tutto

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Monitoraggio stato</title>
</head>
<body>
  <h1>Stato:</h1>
  <img id="status-image" src="" alt="">
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  <script type="text/javascript">
    function updateImage(){
    	var imageOk = './image/imageok.jpg';
    	var imageKo = './image/imageko.jpg';
    	var checkUrl = './check-status.php';
    	jQuery.getJSON(checkUrl, function(status){
			jQuery('#status-image').attr('src',status ? imageOk : imageKo)
    	});
    }
    var refreshMilliseconds = 1000;
    setInterval(updateImage,refreshMilliseconds);
  </script>
</body>
</html>
Script di check di esempio:

Codice: Seleziona tutto

<?php echo json_encode(!!rand(0,1));
Eresia [url=http://forum.ubuntu-it.org/viewtopic.php?p=4956429#p4956429][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Cosa intendi ci mette troppo? Hai bisono di refresh i termini di millisecondi?

Codice: Seleziona tutto

$(document).ready(function() {
    // refresh automatico 1secondo.
    setInterval('refreshPage()', 1000);
});

function refreshPage() { 
    location.reload(); 
}
oppure guarda qui
https://datatables.net/reference/api/ajax.reload%28%29
Usare setInterval sul refresh della pagina è decisamente inutile, meglio usare setTimeout, tuttavia quel codice non ha nulla di differente da:

Codice: Seleziona tutto

<meta http-equiv="refresh" content="1">
.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
Eresia
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 362
Iscrizione: venerdì 30 giugno 2006, 1:20
Distribuzione: gentoo
Sesso: Maschile

Re: [PHP] pagina autoaggiornante

Messaggio da Eresia »

@zoff ottimo a saperlo, grazie!
emerge --auD --oneshot life/lucky-*
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Bing [Bot], Google [Bot] e 18 ospiti