yapay zeka kardeş böyle demiş belki işine yarar

Kodlarınızda tarih filtreleme ile ilgili birkaç sorun görüyorum. Ana problemler şunlar:

Tespit Ettiğim Sorunlar:
  1. Tarih input'ları başlangıç değeri almıyor
  2. convertDateTime fonksiyonu null döndüğünde default tarih yanlış ayarlanıyor
  3. Takvim input'larında value attribute'ları eksik
Çözüm:

1. HTML Tarih Input'larını Düzeltin:


<!-- Mevcut kodunuzun yerine: -->
<input type="date" name="start" id="start" value="<?= date('Y-m-d') ?>" class="form-control">

<input type="date" name="stop" id="stop" value="<?= date('Y-m-d') ?>" class="form-control">

2. PHP Tarih İşleme Kodunu Güncelleyin:


// Tarihleri düzgün formata çevir
function convertDateTime($date, $hour, $minute) {
if (empty($date)) {
return null;
}

// Eğer tarih Y-m-d formatındaysa (HTML date input'tan geliyorsa)
if (preg_match('/^d{4}-d{2}-d{2}$/', $date)) {
return sprintf('%s %02d:%02d:00', $date, $hour, $minute);
}

// Eğer d.m.Y formatındaysa
$parts = explode('.', $date);
if (count($parts) === 3) {
return sprintf('%04d-%02d-%02d %02d:%02d:00',
$parts[2], $parts[1], $parts[0],
$hour, $minute
);
}

return null;
}

// Tarih değerlerini al
$start = isset($_POST['start']) ? $_POST['start'] : date('Y-m-d');
$stop = isset($_POST['stop']) ? $_POST['stop'] : date('Y-m-d');
$saat = isset($_POST['saat']) ? (int)$_POST['saat'] : 0;
$dakika = isset($_POST['dakika']) ? (int)$_POST['dakika'] : 0;
$saat2 = isset($_POST['saat2']) ? (int)$_POST['saat2'] : 23;
$dakika2 = isset($_POST['dakika2']) ? (int)$_POST['dakika2'] : 59;

$startDate = convertDateTime($start, $saat, $dakika);
$stopDate = convertDateTime($stop, $saat2, $dakika2);

// Eğer tarihler geçersizse bugünün tarihini kullan
if (!$startDate) {
$startDate = date('Y-m-d') . ' 00:00:00';
}
if (!$stopDate) {
$stopDate = date('Y-m-d') . ' 23:59:59';
}

3. Form Submit Sonrası Değerleri Koruyun:


<input type="date" name="start" id="start"
value="<?= isset($_POST['start']) ? $_POST['start'] : date('Y-m-d') ?>"
class="form-control">

<input type="date" name="stop" id="stop"
value="<?= isset($_POST['stop']) ? $_POST['stop'] : date('Y-m-d') ?>"
class="form-control">

<!-- Saat seçimleri için de: -->
<select name="saat">
<?php for($i = 0; $i < 24; $i++): ?>
<option value="<?= sprintf('%02d', $i) ?>"
<?= (isset($_POST['saat']) && $_POST['saat'] == sprintf('%02d', $i)) ? 'selected' : '' ?>>
<?= sprintf('%02d', $i) ?>
</option>
<?php endfor; ?>
</select>

Bu değişiklikler tarihlerin doğru şekilde işlenmesini ve formda kalıcı olmasını sağlayacaktır. Kodlarınızda SELECT sorgularında da * eksik görünüyor, onları da SELECT * FROM şeklinde düzeltmeniz gerekiyor.