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?
- Ariën - op 13/01/2016 17:26:42

@Thomas: Ook include() geeft foutmeldingen als het pas niet klopt.

Een E_WARNING ja, en alleen als het melden + weergeven van fouten aan staat.

De fout zicht echt in onderstaande pagina, want als ik via een gewoon formulier post wordt alles opgeslagen...

<?php
error_reporting(E_ALL);
$itemID= '17';

echo $itemID;
?>


<script type="text/javascript">var itemID= '<?php echo $itemID; ?>';</script>
<script>
$(document).ready(function(){
loadData(itemID);

function loadData(id) {
    $.ajax({
        url: "shared/blocktime.php",
        type: "POST",
        data: "{'itemID':'" + itemID+ "'}",
        cache: false,
        success: function(html){
            $(".result").empty().html(html);
                setTimeout(function () { 
                    loadData(username, time); 
                }, 3000);
            },
        error:function (xhr, ajaxOptions, thrownError){
            $(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
        }    
    });
}
});

</script>



Ik heb dit gebruikt om te testen (en dit werkte):

<form method="post" action="shared/blocktime.php"><input type="text" name="itemID" size="55"><input type="submit" value="ok" /></form>


Hoe kan ik er achter komen waar de fout zit? Ik ben een leek in Jquery en weet niet hoe ik foutmeldingen kan weergeven...
Zie mijn tip eens die ik eerder in het topic gaf.

- Ariën - op 13/01/2016 16:50:45

Zet anders eens op diverse plekken een alert() met een logische tekst op wat strategische plekken in je JavaScript. Dan heb je een idee hoe je script wordt doorlopen.

Opsich is een console.log('Debug tekst hier') ook een mogelijkheid. Deze berichten kan je dan in de Debug-console van je browser zien, en scheelt je een hoop alerts().

Ik gok erop dat de vraagsteller geen $_POST aan $itemID heeft gelinkt.

Edit: Als itemID pas doorgegeven wordt na het submitten, dan zou die function() niet nodig zijn.
Hoe bedoel je Davy?
Dat submitten is alleen bedoeld als test voor het formulier. Maar een add-on zoals Poster is ook een stuk makkelijker om zelf GET, POST, PUT requests te doen.
Bedoel je dat, Davy?
@Arien

Oh okies, ik wist niet dat het formulier als test bedoelt was. Ik volg het allemaal even niet, omdat het verhaal nogal rammelt.. Als ik het goed begrijpt, voert TS zelf de item nummer in? of wordt dat ergens opgehaald? Uit database? Of vanuit het formulier dat men invult?
Het itemID komt uit de database, maar heb ik voor het gemak even in een variabel gezet in test.php (in dit geval is het itemID 17).
Het formulier zit er normaal gesproken niet in, maar heb ik gebruikt om te testen (hieruit bleek dat de fout in test.php zit).
Dus dat levert het volgende bestand op:

test.php

<?php
error_reporting(E_ALL);
$itemID= '17';

echo $itemID;
?>


<script type="text/javascript">var itemID= '<?php echo $itemID; ?>';</script>
<script>
$(document).ready(function(){
loadData(itemID);

function loadData(id) {
    $.ajax({
        url: "shared/blocktime.php",
        type: "POST",
        data: "{'itemID':'" + itemID+ "'}",
        cache: false,
        success: function(html){
            $(".result").empty().html(html);
                setTimeout(function () { 
                    loadData(username, time); 
                }, 3000);
            },
        error:function (xhr, ajaxOptions, thrownError){
            $(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
        }    
    });
}
});

</script>


Maar de pagina shared/blocktime.php krijgt geen $_POST['itemID'] binnen, waardoor de database niet kan worden ge-update.
De verbinding met de database klopt namelijk (want als ik via een formulier naar deze pagina postte kwam alles er netjes in te staan).

<?php
error_reporting(E_ALL);
require("includes/globals.php");

$itemID = $_POST['itemID'];
$blocktime = time();
$update_item = mysql_query("UPDATE items SET blocktime = '".$blocktime."' WHERE itemID ='".$itemID."'");

?>


Maar omdat ik een leek ben op het gebied van jQuery zie ik niet waar de fout in test.php zit, waardoor de $_POST['itemID'] niet aankomt in shared/blocktime.php....
Dat heeft te maken met dat je verkeerde parameter doorgeeft:

function loadData(id)


data: "{'itemID':'" + itemID+ "'}",


Dus:


data: "{'itemID':'" + id + "'}",
Davy, ik heb het op drie plekken aangepast, maar dan nog werkt het niet.
Of heb ik het verkeerd gedaan?


<?php
error_reporting(E_ALL);
$itemID= '17';

echo $itemID;
?>


<script type="text/javascript">var itemID= '<?php echo $itemID; ?>';</script>
<script>
$(document).ready(function(){
loadData(id);

function loadData(id) {
    $.ajax({
        url: "shared/blocktime.php",
        type: "POST",
        data: "{'itemID':'" + id + "'}",
        cache: false,
        success: function(html){
            $(".result").empty().html(html);
                setTimeout(function () { 
                    loadData(id);
                }, 3000);
            },
        error:function (xhr, ajaxOptions, thrownError){
            $(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
        }    
    });
}
});

</script>

Reageren