Door
Stan Smolenaars
op 06-11-2019 12:41
gewijzigd op 06-11-2019 17:56
1.412 views
Hallo,
ik ben zogezegt echt een noob met PHP.
Maar ik wil het volgende opzetten.
Dat als iemand op [button] drukt dat er in een tabel (kan ook kladblok bestand zijn) een waarde 10 hoger dan de vorige komt.
Heeft iemand tips hoe dat makkelijk gedaan kan worden?
op dit moment is er nog geen data.
Het gaat om dat gebruikers een gesprek moeten gaan voeren en zich moeten aanmelden.
Als de gebruiker zich aanmeld kan hij automatisch 10 minuten later ingedeeld worden in een tabel, dit zodat dit makelijk uit te lezen is van hoelaat tot hoelaat de gesprekken gaan duren.
@Stan; Wie doet het plannen? Als je altijd de laatste tijd + 10 minuten doet, maar dit al een half uur geleden is, valt dit dus in het verleden. Ik zou niet te moeilijk denken, zeker niet omdat het maar eenmalig is. Hierbij een beginnetje
<?php
$filename = 'plannen.json'; // Bestandsnaam
$arr = (file_exists($filename) ? json_decode(file_get_contents($filename),true) : array()); // Bestand ophalen mits deze bestaat
if(count($arr) > 0) {
array_multisort(array_column($arr, 'date'), SORT_DESC, $arr); // Array sorteren op datum. Eerste key is de nieuwste datum/tijd
}
if($_SERVER['REQUEST_METHOD'] == 'POST') {
if(isset($_POST['username']) && trim($_POST['username']) != "") { // Controleren of het veld niet leeg is
if(isset($arr[0]['date']) && (new \DateTime($arr[0]['date']) > (new \DateTime())->modify('-10 minutes'))) { // Controleren of er een laatste tijd is en of deze niet in het verleden ligt.
$dt = (new \DateTime($arr[0]['date'])); // Laatst opgeslagen tijd
} else {
$dt = (new \DateTime()); // Tijd van nu
}
$newtime = $dt->modify('+10 minutes')->format("Y-m-d H:i:s"); // Tel er 10 minuten bij op.
array_unshift($arr, array('username'=>htmlentities($_POST['username']), 'date'=>$newtime));
file_put_contents($filename, json_encode($arr)); // Opslaan
header('Location: ' . $_SERVER['SCRIPT_NAME']); // Voorkom opnieuw posten door het vernieuwen van je browser
exit();
}
}
?>
<form method="POST">
<input type="text" name="username" placeholder="Typ je gebruikersnaam">
<button>Plannen</button>
</form>
<?php
if(count($arr) > 0) {
array_multisort(array_column($arr, 'date'), SORT_ASC, $arr); // De eerste volgende bovenaan.
foreach($arr as $key=>$val) {
echo $val['username'] . ' staat ingepland voor ' . (new \DateTime($val['date']))->format('d M H:i') . '<br>';
}
}
?>
[edit]Controle toegevoegd. Er zit ALTIJD minimaal 10 minuten tussen het plannen en de afspraak[/edit]