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?
http://www.w3schools.com/jquery/ajax_ajax.asp

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...
In het JavaScript jQuery-framework zou dit moeten helpen. Je moet dan de loadData functie eenmalig aanroepen met de username en tijd.

In script.php sla je die doorgegeven data op in je database.

$(document).ready(function(){
function loadData(username,time) {
	$.ajax({
		url: "script.php",
		type: "POST",
		data: "{'username':'" + username+ "', 'time':'" + time+ "'}",
		cache: false,
		success: function(html){
			$(".result").empty().html(html);
				setTimeout(function () { 
					loadData(username, time); 
				}, 30000);
			},
		error:function (xhr, ajaxOptions, thrownError){
			$(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
		}    
	});
}
});
- Ariën - op 12/01/2016 16:20:46

In het JavaScript jQuery-framework zou dit moeten helpen. Je moet dan de loadData functie eenmalig aanroepen met de username en tijd.

In script.php sla je die doorgegeven data op in je database.

$(document).ready(function(){
function loadData(username,time) {
	$.ajax({
		url: "script.php",
		type: "POST",
		data: "{'username':'" + username+ "', 'time':'" + time+ "'}",
		cache: false,
		success: function(html){
			$(".result").empty().html(html);
				setTimeout(function () { 
					loadData(username, time); 
				}, 30000);
			},
		error:function (xhr, ajaxOptions, thrownError){
			$(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
		}    
	});
}
});



Je vergeet hier wel de loadData() functie aan te roepen
Goed gezien, hoewel ik had het al wel duidelijk gemaakt in mijn post.
Ik heb nu het volgende, maar het werkt niet... Iemand enig idee?

pagina.php

<?php
$itemID = '5';
?>

<script>
			$(document).ready(function(){
function loadData(username,time) {
    $.ajax({
        url: "shared/blocktime.php",
        type: "POST",
        data: "{'<? echo $itemID; ?>':'" + itemID+ "'}",
        cache: false,
        success: function(html){
            $(".result").empty().html(html);
                setTimeout(function () { 
                    loadData(username, time); 
                }, 30000);
            },
        error:function (xhr, ajaxOptions, thrownError){
            $(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
        }    
    });
}
});
</script>


shared/blocktime.php

<?
if(isset($_POST['itemID'])){
$itemID = $_POST['itemID'];
$blocktime = time();
$update_item = mysql_query("UPDATE items SET blocktime = '".$blocktime."' WHERE itemID ='".$itemID."'");
}
?>
Je roept de loadData() functie nergens aan.
<? - shorttags zijn niet meer toegestaan.
Je mist een connectie met MySQL.
De foutafhandeling mist.

PS: Stap liever over op de MySQLi functies of PDO. De mysql-functies gaan er in PHP uit.
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.

Reageren