Accesare functie JavaScript dupa un anumit timp

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
Avatar utilizator
ionatan
Mesaje:94

Accesare functie JavaScript dupa un anumit timp

buna,
acest cod imi actualizeaza fisierul din vizionari-video/id-8.php dupa 5 minute dupa ce am intrat pe pagina pt a face un UPDATE in baza de date
De ex videoclipul are 7 min Eu vreau ca dupa 5 min de vizionare sa faca Update-ul. ( sa imi contorizeze numarul de vizionari) NU in momentul in care am accesat pagina sau dau refresh (dupa 5 min)

Cod: Selectaţi tot

<script type="text/javascript" src="js/jquery-1.4.2.min"></script>
<script type="text/javascript">
//Definimos la funcion
CargarDiv = function (objetivo, url)
 {$(document).ready(function() {$(objetivo).load(url+"?" + (new Date()).getTime());});}

//La llamamos pasando parametros. Primero el ID del DIV a actualizar, y luego la URL desde la cual actualizamos.
//CargarDiv("#reciberespuesta", "  ");

// Si es necesario que recargue cada cierto tiempo podemos usar setInterval
setInterval('CargarDiv("#reciberespuesta", "vizionari-video/id-8.php")', 300000); //300 secunde- 5 minute
</script>

<div id="reciberespuesta"></div>
in id-8.php am

Cod: Selectaţi tot

<?php 
  $AdresaBazaDate = "db";
$UtilizatorBazaDate = "dbo";
$ParolaBazaDate = "pass";
 $NumeBazaDate = "aaaaa";

$conexiune = mysql_connect($AdresaBazaDate,$UtilizatorBazaDate,$ParolaBazaDate) or die("Nu ma pot conecta la MySQL!");
mysql_select_db($NumeBazaDate, $conexiune) or die("Nu gasesc baza de date!");
$query="UPDATE video  SET nrvizionari=nrvizionari+1 WHERE id=8";
$result=mysql_query($query);
?>
Totul e ok si functioneaza bine.
Nu stiu daca am ales cea mai buna metoda
Problema mea este :
Exixta o instructiune care sa nu mai repete setInterval (la fiecare 5 min) din javascript. ma refer... sa faca o singura data
sau ar trebui sa folosesc si cokie ca atunci cand utilizatorul ramane pe pagina sa nu se faca Update decat o singura data
Nu stiu daca sunt inteles.... Va rog frumos sa imi dati o idee ... o rezolvare

Cu respect, Ionatan
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

MarPlo Mesaje:4343
Salut
Inlocuieste setInterval() cu setTimeout() .
- setTimeout() exact asta face, acceseaza functia dupa un anumit timp, o singura data.

ionatan Mesaje:94
Buna,
Acest cod

Cod: Selectaţi tot

<?php 
$AdresaBazaDate = "db";
$UtilizatorBazaDate = "dbo";
$ParolaBazaDate = "pass";
 $NumeBazaDate = "aaaaa";

$conexiune = mysql_connect($AdresaBazaDate,$UtilizatorBazaDate,$ParolaBazaDate) or die("Nu ma pot conecta la MySQL!");
mysql_select_db($NumeBazaDate, $conexiune) or die("Nu gasesc baza de date!");
$query="UPDATE video SET nrvizionari=nrvizionari+1 WHERE id=8";
$result=mysql_query($query);
?>
accesat prin aceasta functie javascript

Cod: Selectaţi tot

<script type="text/javascript" src="js/jquery-1.4.2.min"></script>
<script type="text/javascript">
//Definimos la funcion
CargarDiv = function (objetivo, url)
{$(document).ready(function() {$(objetivo).load(url+"?" + (new Date()).getTime());});}

//La llamamos pasando parametros. Primero el ID del DIV a actualizar, y luego la URL desde la cual actualizamos.
//CargarDiv("#reciberespuesta", "  ");

// Si es necesario que recargue cada cierto tiempo podemos usar setInterval
setInterval('CargarDiv("#reciberespuesta", "vizionari-video/id-8.php")', 300000); //300 secunde- 5 minute
</script>

<div id="reciberespuesta"></div>
e Ok face cea ce vreau.. dupa 5 min de la accesarea paginii face update-ul in baza de date
acum as vrea sa fac un update in functie de fiecare utilizator
cu acest cod:

Cod: Selectaţi tot

<?php 
//  update numar vizionari pentru fiecare utilizator      
$AdresaBazaDate = "db";
$UtilizatorBazaDate = "dbo";
$ParolaBazaDate = "pass";
$NumeBazaDate = "aaaaa";

$conexiune = mysql_connect($AdresaBazaDate,$UtilizatorBazaDate,$ParolaBazaDate) or die("Nu ma pot conecta la MySQL!");
mysql_select_db($NumeBazaDate, $conexiune) or die("Nu gasesc baza de date!");

$query="UPDATE users  SET nrvizionari=nrvizionari+1 WHERE `name`='".$_SESSION['username']."'";
$result=mysql_query($query);
?>
face update-ul, dar daca e accesat prin aceasta functia jawascript nu face nici un update si nu imi dau seama de ce.. nu imi recunoaste numele din sesiune ...... nu stiu....este o alta varianta??
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/

MarPlo Mesaje:4343
Lipseste session_start() care trebuie adaugat la inceputul fisierului PHP, daca se lucreaza cu $_SESSION.

Cod: Selectaţi tot

<?php
session_start();
// ...
?>

ionatan Mesaje:94
Va multumesc pentru rezolvare.
Nu m-am mai gandit si la aceasta pt. ca vazand ca UPDATE-ul il facea doar atunci cand nu era apelat prin javascript... dar acum imi dau seama ca fiind apelat prin aceasta functie acest cod aflandu-se in alt fisier care este apelat dupa un anumit timp.....are nevoie de session_start();
"sunt incepator....am de invatat multe..."
Mult respect,
Ionatan
Cumpără adevărul, şi nu-l vinde, înţelepciunea, învăţătura şi priceperea.
https://www.crestinmultimedia.com/