Ich arbeite an einem stündlichen Buchungssystem. Basierend auf dem ausgewählten TAG habe ich eine JQuery-Funktion eingerichtet, um die TIME-Auswahl in meinem Formular zu ändern.PHP Fetch - Nicht alle Zeilen für Array zurückgeben Check
Als Test versuche ich nur die verfügbaren und verfügbaren TIMES aufzulisten.
Das Problem, das ich bekomme, ist, dass die TIME-Werte, die ich zeigen möchte (21:00 und 22:00) basierend auf dem DAY ausgewählt, nicht richtig funktioniert.
21:00 wird richtig aufgenommen als genommen. 22:00 Uhr wird nicht korrekt aufgenommen.
Meine Tabelle hat die folgende Konfiguration und Testdaten:
ID | NAME | DAY | TIME | HOTEL | HOST
1 | Event 1 | 2 | 21:00 | South | Joe
2 | Event 2 | 2 | 22:00 | South | Matt
Auf meiner Event-Buchung Seite, ich habe folgendes:
SCRIPT TIME Auswahl zu ändern:
<script>
function getData()
{
var formData = new FormData($("#eventbook")[0]);
$.ajax({
url: 'eventdata.php',
type:'POST',
data: formData,
processData: false,
contentType: false,
cache: false,
mimeType: 'multipart/form-data',
success: function(html)
{
$("#eventitems").html(html);
}
});
return false
}
</script>
FORM:
<form id="eventbook" action="">
<div class="form-group">
<p class="text-center">
<label for="selOption">Event Day:</label>
<select class="form-control" id="selOption" onchange="getData()" name="selOption">
<option value="1">Monday</option>
<option value="2">Tuesday</option>
<option value="3">Wednesday</option>
<option value="4">Thursday</option>
<option value="5">Friday</option>
<option value="6">Saturday</option>
<option value="7">Sunday</option>
</select>
</p>
</div>
<div id="eventitems">
<?php
$times = array(
"00:00" => "00:00",
"01:00" => "01:00",
"02:00" => "02:00",
"03:00" => "03:00",
"04:00" => "04:00",
"05:00" => "05:00",
"06:00" => "06:00",
"07:00" => "07:00",
"08:00" => "08:00",
"09:00" => "09:00",
"10:00" => "10:00",
"11:00" => "11:00",
"12:00" => "12:00",
"13:00" => "13:00",
"14:00" => "14:00",
"15:00" => "15:00",
"16:00" => "16:00",
"17:00" => "17:00",
"18:00" => "18:00",
"19:00" => "19:00",
"20:00" => "20:00",
"21:00" => "21:00",
"22:00" => "22:00",
"23:00" => "23:00",
);
if (!isset($_REQUEST['selOption'])) {
$day = 1;
}
$dayInfo = $dbh->prepare("SELECT * FROM events WHERE day=:day");
$dayInfo->execute(array(":day"=>$day));
$dayInfoResult = $dayInfo->fetch(PDO::FETCH_ASSOC);
?>
<div class="form-group">
<p class="text-center">
<?php
foreach ($times as $key => $value) {
if (in_array($value, $dayInfoResult)) {
echo "{$key} with value of {$value} is taken.<br>";
} else {
echo "{$key} with value of {$value} is available.<br>";
}
}
?>
</p>
</div>
</div>
</form>
In eventdata.php Ich habe folgend:
<?php
require_once 'includes/config.php';
$times = array(
"00:00" => "00:00",
"01:00" => "01:00",
"02:00" => "02:00",
"03:00" => "03:00",
"04:00" => "04:00",
"05:00" => "05:00",
"06:00" => "06:00",
"07:00" => "07:00",
"08:00" => "08:00",
"09:00" => "09:00",
"10:00" => "10:00",
"11:00" => "11:00",
"12:00" => "12:00",
"13:00" => "13:00",
"14:00" => "14:00",
"15:00" => "15:00",
"16:00" => "16:00",
"17:00" => "17:00",
"18:00" => "18:00",
"19:00" => "19:00",
"20:00" => "20:00",
"21:00" => "21:00",
"22:00" => "22:00",
"23:00" => "23:00",
);
$day = $_REQUEST['selOption'];
$dayInfo = $dbh->prepare("SELECT * FROM events WHERE day=:day");
$dayInfo->execute(array(":day"=>$day));
$dayInfoResult = $dayInfo->fetch(PDO::FETCH_ASSOC);
?>
<div class="form-group">
<p class="text-center">
<?php
foreach ($times as $key => $value) {
if (in_array($value, $dayInfoResult)) {
echo "{$key} with value of {$value} is taken.<br>";
} else {
echo "{$key} with value of {$value} is available.<br>";
}
}
?>
</p>
</div>
Bei Auswahl Montag, Mittwoch, Donnerstag, Freitag, Samstag oder Sonntag, alle TIMES zeigt korrekt als „Schlüssel mit Wert VALUE ist verfügbar.".
Nach der Auswahl Dienstag, zeigt es nur 21:00 als genommen, aber nicht 22:00.
Hallo Ravinder, möchte ich Ihnen sehr für Ihre Hilfe danken. Ich hatte meinen Code bereits so geändert, wie Sie ihn vor dem Bearbeiten/Hinzufügen von Code vorgeschlagen hatten. Das Ändern in fetchAll und das Erstellen eines Arrays aus dayInfo funktionierte ordnungsgemäß. Danke nochmal. –