Aspetta php è linguaggio lato server mentre Javascript lato cliente.
Da cliente (browser) "example.com/index.php?pulsante=1"
Probabile switch cliente: (richiesta GET tramite browser, o Javascript, o php che effettua una richiesta GET ergo cliente)
[CODE]<?php
$super_var = 0;
if(isset($_GET['pulsante']) && $_GET['pulsante'] == '1') //Condizione vera
$super_var = 1;
//altrimenti default 0
Mentre il codice Javascript è eseguito dal tuo cliente e ovviamente non sarà aggiornato ma avrà un valore locale, se poi effettui una richiesta GET/POST (con o senza ajax) aggiorni il valore nel codice php (lato server) e quindi crei il valore Javascript in base alla variabile $super_var. Lo switch cambia da 1 a 0 o 0 a 1 (sia per php o Javascript).
Potresti riscontrare problemi di collisioni se ci sono più connessioni eseguite allo stesso tempo o con differenza di millesimi di secondi (a seconda di quanto impiega php per analizzare e eseguire il codice, ma prima della fine di esecuzione) e giustamente con stato opposto (cioè se il primo stato è 0 e il secondo è 1, php li mostra all'ultimo codice eseguito, ove è chiamato più di una volta ma purtroppo arriva allo stato del cambiamento senza completare l'esecuzione di ogni singola chiamata). In questo caso il database MySQL gestisce le connessioni simultanee e quindi crei/aggiorni il tuo 1 o 0 proprio come fai adesso mentre da cliente javascript recuperi il valore php che ti da MySQL, quindi da random dovrai passare a quasi random (che non deve cambiare per tutto il tempo di esecuzione massimo allo stato di cambiamento). "Il tempo massimo di esecuzione allo stato di cambiamento" significa calcola dal tuo codice "if, else se dentro ciclo etc" quanto tempo impiega. Altrimenti rimarrai sorpreso dalla collisione.
Recupero variabile php con script di html5, il codice php deve terminare esattamente con il recupero del valore del database, nemmeno altri echo o print etc a eccezione del semplice markup testuale che completa il sorgente html "dunque veloce".
[CODE]<?php
$sql = 'SELECT stato FROM tabella';
$result = $mysqli->query($sql);
$row = $result->fetch_array(MYSQLI_ASSOC);
//se non uso echo non stampo a video $row['stato']
[CODE]<script>
var MyJSStringVar = "<?php echo $super_var; ?>";
</script>
Funzione Javascript ogni 2 secondi, effettua una richiesta GET con 0 o 1 e verifica il valore dal database e poi invia la risposta.
[CODE]var NuovaMyJSStringVar = setInterval(myCallback, 2000);
function myCallback()
{
// Your code here
//Request POST here
return 1+1; // qui va la risposta invece del 2
}
console.log(NuovaMyJSStringVar)
Jquery AJAX:
https://api.jquery.com/jquery.ajax