Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[PHP-AJAX] Passare Variabile da Javascript a PHP

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[PHP-AJAX] Passare Variabile da Javascript a PHP

Messaggioda alessio pinna » sab dic 01, 2012 2:37 am

Salve a tutti, averei un problema da risolvere.
Considerate questo countdown in javascript:

Codice: Seleziona tutto
<html>
<body>

<script type="text/javascript">
/*countdown - conto alla rovescia*/
var_anno=2020;
var_mese=11;
var_giorno=30;
var_ore=16;
var_minuti=0;
var_secondi=0;
a=0;

function countdown()
{
data_scandeza= new Date(var_anno,var_mese-1,var_giorno,var_ore,var_minuti,var_secondi);
data_oggi= new Date();
differenza=(data_scandeza-data_oggi);
giorni=parseInt(differenza/86400000);
differenza=differenza-(giorni*86400000);
ore=parseInt(differenza/3600000);
differenza=differenza-(ore*3600000);
minuti=parseInt(differenza/60000);
differenza=differenza-(minuti*60000);
secondi=parseInt(differenza/1000);
differenza=differenza-(secondi*1000);

if (secondi < "1")
{
a=a+10;
}

if (giorni <= "0" && ore <= "0" && minuti <= "0" && secondi <= "0")
{
document.getElementById("countdown").innerHTML="Tempo scaduto";
}
else
{
document.getElementById("countdown").innerHTML=secondi+' sec <br><br>' +a+ ' a';
setTimeout("countdown()",1000)
}
}
</script>

<body onload="countdown()"><div id="countdown"></div>


</body>
</html>


Come potete vedere, ogni minuto il countdown incrementa una variabile "a" con un valore "+10".
A me servirebbe inviare questa variabile "a" da questo file javascript a php (esempio: $a) per poi poterla salvare in un database.

Potreste darmi una mano per completare questo piccolo progetto?

P.S.
So che serve AJAX per fare una cosa del genere, ma attualmente non ho ancora messo mani in quel campo...
Avatar utente
alessio pinna
Neo Iscritto
Neo Iscritto
 
Messaggi: 5
Iscritto il: sab dic 01, 2012 2:33 am

Re: [PHP-AJAX] Passare Variabile da Javascript a PHP

Messaggioda M@ttia » dom dic 02, 2012 2:12 pm

Il modo più semplice sarebbe, sempre nel codice javascript dove serve, aggiungere:
Codice: Seleziona tutto
  location.href="miapagina.php?Contatore=" + a;

Questo, ammettendo che la variabile a valga 30 in quel momento, forza il browser ad andare alla pagina miapagina.php?Contatore=30
Da lì poi con PHP leggi la variabile:
Codice: Seleziona tutto
<?php
$a = $_GET[Contatore];
?>
Nota che ovviamente la pagina può essere la stessa dove si trova il timer (in pratica ricaricherebbe sé stessa).



---



Se invece vuoi fare la cosa in tempo reale (ovvero senza rivisitare una pagina e senza interrompere il countdown), allora devi appunto farlo con AJAX.
Nota comunque che PHP viene interpretato dal server al momento della creazione di una pagina, quindi per salvare qualcosa nel database dovrai comunque ricorrere ad un'altra pagina (ad es. SalvaNelDatabase.php) che faccia l'operazione richiesta senza nessun output grafico, ma che viene richiamata da AJAX ed eseguita senza che l'utente noti nulla e senza lasciare la pagina corrente.

Per risolvere con AJAX, crea le seguenti 2 pagine:

Contatore.php
Codice: Seleziona tutto
<html>
<body>


<script>
function SalvaValore(a)
{
var xmlhttp;

if(window.XMLHttpRequest)
  xmlhttp = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
else
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5


xmlhttp.onreadystatechange=function()
{
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
    document.getElementById("Risultato").innerHTML=xmlhttp.responseText;
  }
}

xmlhttp.open("GET","SalvaNeldatabase.php?a=" + a,true);
xmlhttp.send();
}
</script>




<script type="text/javascript">
/*countdown - conto alla rovescia*/

// Qui inserisci il tuo codice, e quando vuoi che il valore "a" debba
// venir salvato (ad es. dopo il +10), aggiungi una chiamata alla funzione
// SalvaValore(a);
</script>





<body onload="countdown()">

<div id="countdown"></div>

<div id="Risultato">-</div>


</body>
</html>

SalvaNeldatabase.php
Codice: Seleziona tutto
<?php

$a = $_GET["a"];

// Salva nel Database il valore $a e ritorna come risultato (successo/insuccesso) $Risultato
// Qui simulo un risultato positivo
$Risultato = 'Salvato il valore a=' . $a . ' Correttamente nel Database!';

echo $Risultato;

?>


Così facendo sei a posto, e in Contatore.php puoi anche ricevere una conferma scritta dell'avvenuto salvataggio nel div "Risultato" (prova!). [^]

Se vuoi fare una prova veloce copia-incolla, crea la pagina SalvaNelDatabase.php come sopra e la pagina Contatore.php col codice qui sotto (dove ho già inserito il tuo codice col salvataggio della variabile "a" dopo ogni +10). Metti le due pagine nella stessa cartella ed apri Contatore.php.

Codice: Seleziona tutto
<html>
<body>

<script>
function SalvaValore(a)
{
var xmlhttp;

if(window.XMLHttpRequest)
  xmlhttp = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
else
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5


xmlhttp.onreadystatechange=function()
{
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
    document.getElementById("Risultato").innerHTML=xmlhttp.responseText;
  }
}

xmlhttp.open("GET","SalvaNeldatabase.php?a=" + a,true);
xmlhttp.send();
}
</script>




<script type="text/javascript">
/*countdown - conto alla rovescia*/
var_anno=2020;
var_mese=11;
var_giorno=30;
var_ore=16;
var_minuti=0;
var_secondi=0;
a=0;

function countdown()
{
data_scandeza= new Date(var_anno,var_mese-1,var_giorno,var_ore,var_minuti,var_secondi);
data_oggi= new Date();
differenza=(data_scandeza-data_oggi);
giorni=parseInt(differenza/86400000);
differenza=differenza-(giorni*86400000);
ore=parseInt(differenza/3600000);
differenza=differenza-(ore*3600000);
minuti=parseInt(differenza/60000);
differenza=differenza-(minuti*60000);
secondi=parseInt(differenza/1000);
differenza=differenza-(secondi*1000);

if (secondi < "1")
{
a=a+10;
SalvaValore(a);
}

if (giorni <= "0" && ore <= "0" && minuti <= "0" && secondi <= "0")
{
document.getElementById("countdown").innerHTML="Tempo scaduto";
}
else
{
document.getElementById("countdown").innerHTML=secondi+' sec <br><br>' +a+ ' a';
setTimeout("countdown()",1000)
}
}
</script>






<body onload="countdown()">

<div id="countdown"></div>

<div id="Risultato">-</div>


</body>
</html>
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: [PHP-AJAX] Passare Variabile da Javascript a PHP

Messaggioda alessio pinna » ven dic 07, 2012 12:11 pm

ti sto amando XD

grazie di tutto
Avatar utente
alessio pinna
Neo Iscritto
Neo Iscritto
 
Messaggi: 5
Iscritto il: sab dic 01, 2012 2:33 am


Re: [PHP-AJAX] Passare Variabile da Javascript a PHP

Messaggioda M@ttia » ven dic 07, 2012 1:06 pm

Prego! [^]
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: [PHP-AJAX] Passare Variabile da Javascript a PHP

Messaggioda alessio pinna » ven dic 07, 2012 3:34 pm

m@ttia ho un problema :

quando vado a verificare la scrittura della variabile $a del salvaneldatabase.php mi da questo problema :

http://prntscr.com/lk1kw

ovviamente nel file salvaneldatabase.php ho scritto i tuoi codici :
http://prntscr.com/lk1sp

infatti se provo a salvare in database il contenuto della variabile in questione non mi dà niente
Avatar utente
alessio pinna
Neo Iscritto
Neo Iscritto
 
Messaggi: 5
Iscritto il: sab dic 01, 2012 2:33 am

Re: [PHP-AJAX] Passare Variabile da Javascript a PHP

Messaggioda M@ttia » ven dic 07, 2012 3:51 pm

Questo significa che la variabile "a" inSalvaNeldatabase.php non è stata letta, ovvero non ha un valore. Ovviamente questo accade se apri la pagina SalvaNeldatabase.php direttamente dalla barra degli indirizzi.

Per vedere dove è l'errore, prova ad aprire direttamente la pagina

SalvaNeldatabase.php?a=57

nell'URL del browser e vedi se funziona.
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: [PHP-AJAX] Passare Variabile da Javascript a PHP

Messaggioda alessio pinna » ven dic 07, 2012 4:18 pm

se metto SalvaNeldatabase.php?a=57

mi da : Salvato il valore a=57 Correttamente nel Database!

se però per esempio metto SalvaNeldatabase.php?a=1000

mi da : Salvato il valore a=1000 Correttamente nel Database!

:-O
Avatar utente
alessio pinna
Neo Iscritto
Neo Iscritto
 
Messaggi: 5
Iscritto il: sab dic 01, 2012 2:33 am

Re: [PHP-AJAX] Passare Variabile da Javascript a PHP

Messaggioda M@ttia » sab dic 08, 2012 3:10 am

Ehm, e dove sarebbe il problema quindi? È esattamente quello che dovrebbe fare no?
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: [PHP-AJAX] Passare Variabile da Javascript a PHP

Messaggioda alessio pinna » sab dic 08, 2012 1:05 pm

ehmmm però non mi salva nel database la variabile $a quindi qualcosa non va

comunque buondi :-D
Avatar utente
alessio pinna
Neo Iscritto
Neo Iscritto
 
Messaggi: 5
Iscritto il: sab dic 01, 2012 2:33 am

Re: [PHP-AJAX] Passare Variabile da Javascript a PHP

Messaggioda M@ttia » sab dic 08, 2012 2:33 pm

Beh ma ovviamente devi sostituire:
Codice: Seleziona tutto
// Salva nel Database il valore $a e ritorna come risultato (successo/insuccesso) $Risultato
// Qui simulo un risultato positivo

con il TUO codice per salvare $a nel database (non posso conoscere la struttura del tuo database, le tabelle, il tuo username/password, ecc.)!
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Re: [PHP-AJAX] Passare Variabile da Javascript a PHP

Messaggioda eesama1234 » mer lug 06, 2016 9:25 am

Correttamente nel Database!

เบอร์มงคล
Avatar utente
eesama1234
Neo Iscritto
Neo Iscritto
 
Messaggi: 19
Iscritto il: gio ott 29, 2015 2:59 am


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising