PHP randevu saat kısıtlaması

Yeniçocuk

Kilopat
Katılım
30 Kasım 2018
Mesajlar
5.549
Makaleler
2
Çözümler
13
PHP hastane otomasyonu kısmında randevu verilme işlemi esnasında herkes aynı branşa aynı saate randevu alabiliyor bunu nasıl kod yazarak çözebilirim internette aradım bulamadım. Verileri formdan alıp kaydediyorum saat tablosu da oluşturdum. Herkesin aynı saate randevu almasını engelleyecek kodu nasıl yazabilirim? Video kitap kitap önerisi verilse de olur.
 
Alinan randevuyu DB ye yazmadan once daha once yazilip yazilmadigini kontrol eden kod yazarak cozersin.
Eger kullandigin DB ACID ozelligi tasiyorsa ( ACID - Wikipedia ) zaten DB sana ayni anda 2 kisiye kayit yapilamayacagini garanti edecek.

X araligi kayit li mi ? X araligini kaydet : Hata ver.
 
Bu tarz bir mantikla o zaman araliginda cakisan randevu var mi kontrol edebilirsin. Kodda ufak hatalar olabilir direk buradan yazdim kontrol etmeden. Ancak mantigini anlamana yardimi olur diye dusunuyorum. Kolay gelsin.

NOT: Veritabani id sifre gibi hassas veriler iceren kodlari hicbir zaman public_html, www ya da htdocs gibi herkesin okuma izni olan dizinlerde tutmayin. Misafirlerin okuma izni olmayan ayri bir yolda ayri bir dosyada saklayin.

[CODE lang="php" title="cakisan randevu"]<?php

function veritabaninaBaglan()
{
try {
return new PDO('mysql:dbname=testdb;host=127.0.0.1', 'veritabani_kullanici_adi', 'veritabani_sifre');
} catch (Throwable $th) {
return false;
}
}

function cakisanRandevuVarMi($yeni_randevu_baslangic, $yeni_randevu_bitis)
{
$veritabani = veritabaninaBaglan();

if (!$veritabani) {
echo "HATA: Veritabanina baglanilamadi.";
exit;
}

$sql = 'SELECT COUNT(*) FROM randevular_tablosu WHERE baslangic < :yeni_randevu_bitis AND bitis > :yeni_randevu_baslangic';

$sorgu = $veritabani->prepare($sql);
$sorgu->bindValue(':yeni_randevu_baslangic', $yeni_randevu_baslangic, PDO::pARAM_STR);
$sorgu->bindValue(':yeni_randevu_bitis', $yeni_randevu_bitis, PDO::pARAM_STR);
$sorgu->setFetchMode(PDO::FETCH_NUM);
$sorgu->execute();

$cakisan_randevu_sayisi = $sorgu->fetch()[0];

return $cakisan_randevu_sayisi > 0;
}
[/CODE]
 
Son düzenleme:
Bu tarz bir mantikla o zaman araliginda cakisan randevu var mi kontrol edebilirsin. Kodda ufak hatalar olabilir direk buradan yazdim kontrol etmeden. Ancak mantigini anlamana yardimi olur diye dusunuyorum. Kolay gelsin.

Not: Veritabani ID sifre gibi hassas veriler iceren kodlari hiçbir zaman public_html, www ya da htdocs gibi herkesin okuma izni olan dizinlerde tutmayin. Misafirlerin okuma izni olmayan ayri bir yolda ayri bir dosyada saklayin.

Kod yardımı için teşekkür ederim. Hasta sadece gerçek hayatta muayene olurken girdiğimiz verileri veritabanında saklıyorum. Ondan sonra randevu alma ekranına yönlendiriyor. Okuma izni olmayan kastınız admin erişim gibi ise onu da yaptım. Admin sayfasında doktor poliklinik branş adlarını ekleme silme ekranı yaptım. Misafirler hiçbir şekilde o sayfaya ulaşamaz.
 

Geri
Yukarı