Ik ben bezig met een systeem waarin meerdere gebruikers aan een draaiboek met daarin onderwerpen kunnen werken.
Nu is het niet de bedoeling dat als iemand in een onderwerp aan het werken is, iemand anders het onderwerp tegelijkertijd bewerkt.
Dan zou informatie verloren kunnen gaan.
Hoe kan ik ervoor zorgen dat maar een iemand tegelijkertijd een pagina (met daarin het formulier) kan bezoeken?
Hiermee kan je een AJAX-request uitvoeren. Deze voer je regelmatig uit met setInterval, bijv.elke 30 sec.
Hierin geef je de userID mee van diegene die hem bewerkt, en de huidige tijd en datum.
Als deze bij het openen van het wijzigingsformulier jonger dan +/- 1 minuut is, dan wordt er aan gewerkt en geef je een foutmelding.
Als je grotere artikelen aan het schrijven bent submit je lang niet zo vaak / zo snel teksten. Wat je ook zou kunnen doen is een soort van crontaak inroosteren voor het vrijgeven van de lock, en elke keer als iemand een wijziging doet schuif je deze een uur verder in de tijd. Je zult ook enigszins met inactiviteit van een gebruiker en/of sessie-timeouts rekening moeten houden en misschien is het doorstarten van sessies wel naadloos in het systeem geïntegreerd dus enkel een sessie-timeout zegt ook lang niet alles.
Heb je een voorbeeldregel Ariën?
Ik bekijk je voorbeeld, maar heb nog nooit gewerkt met AJAX... Ik heb geen idee hoe ik er elke 30 seconden voor kan zorgen dat er een SQL-update wordt uitgevoerd...
De connectie met mysql heb ik ondertussen toegevoegd.
Hoe roep ik dan de loadData() aan? En welke foutafhandeling mist?
En moet <script> in de head of mag het ook in de body?
Bedenk eerst een welke data je mee wilt sturen in je POST-request naar blocktime.php.
De userID en de ItemID lijken me het interessants, evenals de huidige datum: 2016-01-12 18:23:00.
Deze data moet je in de loadData functie aanroepen, en verwerk je dus in de data-event van je $.ajax() functie.
Verder kan je PHP-variabelen niet direct in JavaScript gebruiken. Je moet ze uiteraard eerst echo'en. PHp draait op de server, en JavaScript bij de client.