AJAX wywołanie skryptu PHP co określony czas

0

Witam. Próbuję zrealizować aplikację, która będzie co np 2s pobierać dane z bazy danych i wyświetlać je na stronie. Zdecydowałem, aby zrealizować to za pomocą PHP. Jak zrealizować wywołanie skryptu PHP wyświetlającego dane na stronie co określony czas? Ponoć służy do tego AJAX, ale nie mogę znaleźć dokładnej informacji jak to zrealizować. Na próby testu napisałem skrypt, która wyświetla losową liczbę

<?php 
 echo rand(1,10);
 ?>

Jak wywołać ten skrypt na osobnej podstronie? Jak zrealizować to np AJAX'em?
Pozdrawiam

4

A czy czytałeś trochę o tym, jak AJAX działa? Jeśli nie, to najpierw rzuć okiem na te linki:
https://pl.wikipedia.org/wiki/AJAX
https://www.w3schools.com/php/php_ajax_php.asp
https://kursjs.pl/kurs/ajax/ajax.php

Jak to przeczytasz to zauważysz, że AJAX składa się z dwóch części, odpalanych po przeciwnych stronach barykady. Jedna część - po stronie użytkownika, odpalana w przeglądarce, łączy się z serwerem, na którym stoi druga część - zwracająca do przeglądarki jakieś treści. Biorąc to pod uwagę, wywołanie musi być inicjowane ze strony przeglądarki/klienta. Czyli, jeśli chcesz coś okresowo odczytywać przez AJAX, to nie musisz niczego zmieniać na serwerze, tylko w przeglądarce, prawdopodobnie przy wykorzystaniu JavaScript, musisz stworzyć mechanizm, który co jakiś czas będzie się łączyć z serwerem i go odpytywać o dane.

A tak poza tym to AJAX jest już lekko passe, teraz sexy jest fetch API - https://kursjs.pl/kurs/ajax/fetch.php. Ale oczywiście stary dobry AJAX też da radę, tak tylko zaznaczam dla formalności ;)

0

Kolega chyba nieco początkujący.

Przypomnę najstarszy sposób na odświeżanie całej (niestety i stety) strony
https://www.w3schools.com/tags/att_meta_http_equiv.asp

0

Witam ponownie. Poczytałem trochę i wiem już jak wyświetlać co pewien czas dane z bazy danych. Jednak napotkał mnie inny problem. Czy jest możliwość wyświetlenia każdej kolumny tabeli w innym divie? Na chwilę obecną zastosowałem trochę prymitywną metodę, a mianowicie podzielenie tekstu odebranego z PHP na mniejsze za pomocą polecenia Substr. Jednak wiem, że jest to prymitywna metoda. Czy istnieje jakaś inna, która pozwala na taki manewr bez tworzenia dodatkowych plików PHP?

function odbior(){
	const xhr=new XMLHttpRequest();
	
	
xhr.onload=()=>{
		if(xhr.status==200 && xhr.readyState==4)
		{
			var wa=parseInt(xhr.responseText.substr(0,5));
			var wi=parseInt(xhr.responseText.substr(xhr.responseText.length-2,xhr.responseText.length));
			document.getElementById('wilgotnosc').innerHTML=wi;
			document.getElementById('waga').innerHTML=wa;
		}
		else alert("Błąd");
	}
	xhr.open('GET','przyjecia.php',true)
	xhr.send()
}
<?php
include("baza.php");
try{
$stmt=$db_conn->query('select waga, ziarno,wilgotnosc from przyjecia order by id desc limit 1');
while($row=$stmt->fetch()) {
	echo $row['waga'];
	echo $row['ziarno'];
	echo $row['wilgotnosc'];
}	
}
catch (PDOException $a){ echo "Błąd zapytania";}
?>

W pliku HTML mam 3 divy, w których chciałbym wyświetlać każda kolumnę tabeli z osobna.
Z góry dzięki za pomoc

0

Muszę zasymulować linię technologiczną, i chciałbym, aby wartości z bazy znajdowały się bezpośrednio przy urządzeniach i były aktualizowane co pewien czas. Dlatego chciałbym zapisywać je do divów, które są rozmieszczone w różnych miejscach na stronie. Może to głupio zabrzmi sugerując się moimi pytaniami, ale jest to moja praca inżynierska :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1