@tematem;
hocamın da dediği gibi left join yapsanız işinizi gorecektir diye düşünüyorum. Fakat db structu biraz yanlış istersen birlikte oluşturabiliriz
PHP yetki sisteminde takıldım
20
●646
- 04-10-2023, 23:21:20Inner join yerine left join yaptım ama yine de değişen bir şey olmadı. Olur birlikte oluşturabiliriz çok memnun olurumeraynac adlı üyeden alıntı: mesajı görüntüle
- 05-10-2023, 08:59:12admin_authority verisi sessionda taşınarak koşullu çift sorgu yazılabilir.
if ( $_SESSION['admin_authority'] == 'admin' ) { // admin için tümünü listeleyen sorgu $komisyonsor=$db->prepare("SELECT * FROM komisyonlar as k"); $komisyonsor->execute(); } else { // yetki kontrollü sorgu $komisyonsor=$db->prepare("SELECT * FROM komisyonlar as k inner join administrator as b on k.komisyon_id=b.komisyon_id WHERE b.admin_username=:username"); $komisyonsor->execute(array( 'username' => $_SESSION['admin_username'] )); } - 05-10-2023, 12:17:26Bende tam bunun gibi bir sorgu denemiştim ama işe yaramamıştı else den sonraki kısım çalışıyor ama adminler için olan kısım boş dönüyor. Bende aşağıdaki kodu denemiştim.DarkBlueSa adlı üyeden alıntı: mesajı görüntüle
$user_role = $_SESSION['admin_authority']; $komisyon_id = $_SESSION['komisyon_id']; if ($user_role === 'admin' && $komisyon_id == 0) { $komisyonsor = $db->prepare("SELECT * FROM komisyonlar"); $komisyonsor->execute(); } else { $komisyonsor = $db->prepare("SELECT * FROM komisyonlar as k LEFT JOIN administrator as b on k.komisyon_id=b.komisyon_id WHERE b.admin_username=:username"); $komisyonsor->execute(array( 'username' => $_SESSION['admin_username'] )); } - 05-10-2023, 21:06:37=== kullanıldığında karşılaştırılan değerlerin veri tipleri de aynı olması gerekiyor. var_dump() ile if-in içerisindeki değişkenleri kontrol ettiğinde neler geliyor?HasanAB adlı üyeden alıntı: mesajı görüntüle
var_dump($user_role); var_dump($komisyon_id);
- 10-10-2023, 14:50:30Kusura bakmayın geçen haftadan beridir bilgisayarın başına geçemedim anca şimdi oturabildim. Dediklerinizi denedim NULL şeklinde yazı geliyor.DarkBlueSa adlı üyeden alıntı: mesajı görüntüle
- 10-10-2023, 14:56:02Estağfurullah. Session-dan veriler gelmiyor muhtemelen. Kodun en başında session_start() satırını eklediniz mi?HasanAB adlı üyeden alıntı: mesajı görüntüle
- 10-10-2023, 15:01:30Evet ekledim. session_start(); header.php dosyasında var. komisyonlar sayfasına include 'header.php'; şeklinde çekiyorum. Aşağıdaki kodlardan da bakabilirsiniz.DarkBlueSa adlı üyeden alıntı: mesajı görüntüle
header.php dosyasının en üst kısmı bu şekilde
ob_start(); session_start(); include '../netting/connect.php'; $adminsor=$db->prepare("SELECT * FROM administrator where admin_username=:username"); $adminsor->execute(array( 'username' => $_SESSION['admin_username'] )); $say=$adminsor->rowCount(); $admincek=$adminsor->fetch(PDO::FETCH_ASSOC); if ($say==0) { Header("Location:../index.php?durum=permission"); exit; }
komisyonlar.php sayfasının en üst kısmıda bu şekilde
include 'header.php'; $user_role = $_SESSION['admin_authority']; $komisyon_id = $_SESSION['komisyon_id']; if ($user_role === 'admin' && $komisyon_id == 0) { $komisyonsor = $db->prepare("SELECT * FROM komisyonlar"); $komisyonsor->execute(); } else { $komisyonsor = $db->prepare("SELECT * FROM komisyonlar as k LEFT JOIN administrator as b on k.komisyon_id=b.komisyon_id WHERE b.admin_username=:username"); $komisyonsor->execute(array( 'username' => $_SESSION['admin_username'] )); }Bu kodda panele login olurkenki çalışan kod. Belki burda bir eksiklik vardır diye paylaşıyorum.
if (isset($_POST['adminLogin'])) { $admin_username=htmlspecialchars($_POST['admin_username']); $admin_password=htmlspecialchars(md5($_POST['admin_password'])); $adminsor=$db->prepare("SELECT * FROM administrator where admin_username=:username and admin_password=:password"); $adminsor->execute(array( 'username' => $admin_username, 'password' => $admin_password )); echo $say=$adminsor->rowCount(); if ($say==1) { $_SESSION['admin_username']=$admin_username; header("location:../html/index.php"); exit; } else { header("location:../index.php?durum=not"); exit; } } - 10-10-2023, 15:06:42Bu kısımda session_start() yok. Kodun üst kısmında include var mıydı? İçerisinde session_start() olan.
Alıntı