SELECT na submit haalt row niet weg na UPDATE.
Ik zit weer eens met een probleem. Ik ben bezig met een soort van 'gevangenis', waarin je mensen ook kunt uitbreken. Dit werkt prima, alleen wanneer ik iemand uitbreek en het lukt, blijft de persoon in kwestie wel staan in de lijst met 'gevangenen'... Ik heb het al proberen op te lossen door de SELECT na de submit te plaatsen, maar dat werkt ook niet helemaal goed.
Ik heb een interval van bijvoorbeeld 2 minuten en die voeg ik toe op de tijd hoe laat diegene de 'gevangenis' in moest. Nu wil ik d.m.v. een UPDATE de tijd naar 'NOW()' updaten, zodat diegene uit de 'gevangenis' gaat.
Als ik vervolgens de geüpdatete tijd selecteer, laat hij de goede tijd zien, zonder een pagina refresh. Maar, zodra ik alleen de rows wil selecteren die daadwerkelijk in de 'gevangenis' zitten, staat die er gewoon bij...
Ik hoop hierbij voldoende informatie gegeven te hebben, hieronder het stukje relevante code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<form method="post" action="">
<?php
include("../loginsystem/connect.php");
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$sql =
'UPDATE times
SET last_jail = NOW()
WHERE user_id="'.$_POST['jail'].'"
';
$query = mysql_query($sql);
}
$sql =
"SELECT username, last_jail, user_id
FROM times
WHERE times.last_jail >= NOW()
";
$query = mysql_query($sql);
while($row = mysql_fetch_assoc($query)) {
echo $row['username'].' ';
echo $row['last_jail'];
echo '<input type="radio" name="jail" value="'.$row['user_id'].'" checked><br>';
}
?>
<input type="submit" value="breek uit" name="submit">
</form>
<?php
include("../loginsystem/connect.php");
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$sql =
'UPDATE times
SET last_jail = NOW()
WHERE user_id="'.$_POST['jail'].'"
';
$query = mysql_query($sql);
}
$sql =
"SELECT username, last_jail, user_id
FROM times
WHERE times.last_jail >= NOW()
";
$query = mysql_query($sql);
while($row = mysql_fetch_assoc($query)) {
echo $row['username'].' ';
echo $row['last_jail'];
echo '<input type="radio" name="jail" value="'.$row['user_id'].'" checked><br>';
}
?>
<input type="submit" value="breek uit" name="submit">
</form>
Verder mis je behoorlijk wat foutafhandeling waardoor je niet weet of dingen gelukt zijn.
Klopt, de foutafhandeling heb ik buiten beschouwing gelaten, omdat het in dit geval niet noodzakelijk is, gezien het feit dat alles het 'doet', alleen niet snel genoeg...
Maar je probleem.
Je UPDATE naar NOW() en een multimiliseconde later kijk je met SELECT of ie gelijk (of groter) is dan NOW(). Ik denk dat ie dan gelijk is. UPDATE gewoon naar NOW()-10 of zo.
Ah, zo simpel, de SELECT komt dus echt te vroeg. Bedankt voor het meedenken, allebei.
Gewijzigd op 20/10/2013 15:52:32 door Ger van Steenderen