Automatisch controleren of er verandering is in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Erwin Leemans

Erwin Leemans

06/05/2024 08:08:30
Quote Anchor link
Ik ben dj en heb een lijst gemaakt met al mijn plaatjes. De klant kan deze lijst inzien dmv QR code die in de zaak hangt. Nu kunnen klanten ook een plaatje aanvragen.Deze aanvragen worden opgeslagen in een database waarna ik een tabel heb hemaakt die enkel alle aanvragen toont die vandaag binnen zijn gekomen. Op mijn computer staat deze lijst open en heb op dit moment op de pagina een refresh (om de 10 sec) code gezet maar ik heb me laten vertellen dat je beter een code kunt schrijven die om de ... sec kijkt of er verandering is gebeurd in database en zoniet dat de pagina dus ook niet moet vernieuwd worden. Weet iemand waar ik informatie vind over deze code of onder welke naam ik dit moet gaan zoeken? Alvast bedankt. Erwin.
Gewijzigd op 06/05/2024 08:10:27 door Erwin Leemans
 
PHP hulp

PHP hulp

24/12/2024 20:08:49
 
- Ariën  -
Beheerder

- Ariën -

06/05/2024 08:09:47
Quote Anchor link
Kijk eens naar een AJAX refresh in JavaScript.
 
Erwin Leemans

Erwin Leemans

06/05/2024 09:45:02
Quote Anchor link
Na een tijdje zoeken heb ik dit gevonden:
https://aiocollective.com/blog/ajax-auto-refresh-volume-ii/
Ik ga dit even verder bestuderen, het voorbeeld werkt zoals ik het wil dus nu nog enkel bekijken hoe ik dit in praktijk zet voor mezelf. Alvast bedankt.
 
Jan Koehoorn

Jan Koehoorn

08/05/2024 16:17:55
Quote Anchor link
Hou wel in de gaten, de schrijfster zegt dit:

Quote:
So here’s the deal. More than two years ago i wrote a post about auto refresh content after changes in database – AJAX.


maar dat is enigszins misleidend. De verandering in de database triggert de refresh niet, ze zet gewoon een JavaScript interval op 20s
 

09/05/2024 09:06:48
Quote Anchor link
Via NOTIFY kan je een bericht sturen over een channel dat er iets is gewijzigd. Dat kan handmatig in een transactie of automatisch via een TRIGGER.

Op een centraal punt kan je alle wijzigingen in de database monitoren via LISTEN.
Vervolgens kan je het doorgeven aan je browser op verschillende manieren, via de Push API of via een WebSocket.
Voor meer informatie over pushen, zie SO.

N.B.: NOTIFY en LISTEN zijn PostgreSQL-extensies en werken niet in MySQL of MariaDB.
Er is wel een uitbreiding mysql-notification, die moet je dan even zelf compileren en installeren.
Gewijzigd op 09/05/2024 09:13:42 door
 
Ward van der Put
Moderator

Ward van der Put

10/05/2024 09:28:45
Quote Anchor link
Ad Fundum op 09/05/2024 09:06:48:
Er is wel een uitbreiding mysql-notification, die moet je dan even zelf compileren en installeren.


Waarom een koe melken als je boter kunt kopen? ;-)

Je kunt gewoon het PHP-script waarmee je een nieuw verzoeknummer inschiet in de database gebruiken om na een geslaagde INSERT een push-notificatie te verzenden.

Of je laat het PHP-script een klein JSON-bestand bijwerken met de laatste 10 verzoeknummers. Dan kun je dat als simpele cache service met AJAX pollen.
 

10/05/2024 15:28:41
Quote Anchor link
Ward van der Put op 10/05/2024 09:28:45:
Waarom een koe melken als je boter kunt kopen? ;-)

Het hangt van je idee van databases af.

Als je er van uitgaat dat een database een uitgebreide bestandenbak is die ondergeschikt is aan PHP, dan is je voorstel niet gek.

Als je wilt dat de data die je ophaalt ook absoluut klopt, moet je zorgen dat de database de baas is van de data, zodat die garanties kan geven over de data. (Een beetje NoSQL vs. SQL dit)
Bijvoorbeeld wanneer er mutaties kunnen zijn vanuit andere kanten dan alleen PHP, zoals via psql of een andere clients.

Wanneer je gekozen hebt voor slechts een enkel invoerpunt met extra werk in PHP dan werkt het niet altijd. Terwijl de code in feite overbodig is omdat die functies al in je database zitten.

Waarom weer opnieuw het wiel uitvinden?
Gewijzigd op 10/05/2024 15:32:50 door
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.