• 04-10-2023, 23:09:17
    #10
    @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
  • 04-10-2023, 23:21:20
    #11
    eraynac adlı üyeden alıntı: mesajı görüntüle
    @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
    Inner join yerine left join yaptım ama yine de değişen bir şey olmadı. Olur birlikte oluşturabiliriz çok memnun olurum
  • 05-10-2023, 08:59:12
    #12
    admin_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:26
    #13
    DarkBlueSa adlı üyeden alıntı: mesajı görüntüle
    admin_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']
        ));
    }
    Bende 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.

    $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
    #14
    HasanAB adlı üyeden alıntı: mesajı görüntüle
    Bende 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.

    $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']
        ));
    }
    === 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?

    var_dump($user_role);
    var_dump($komisyon_id);
  • 10-10-2023, 14:50:30
    #15
    DarkBlueSa adlı üyeden alıntı: mesajı görüntüle
    === 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?

    var_dump($user_role);
    var_dump($komisyon_id);
    Kusura bakmayın geçen haftadan beridir bilgisayarın başına geçemedim anca şimdi oturabildim. Dediklerinizi denedim NULL şeklinde yazı geliyor.
  • 10-10-2023, 14:56:02
    #16
    HasanAB adlı üyeden alıntı: mesajı görüntüle
    Kusura bakmayın geçen haftadan beridir bilgisayarın başına geçemedim anca şimdi oturabildim. Dediklerinizi denedim NULL şeklinde yazı geliyor.
    Estağfurullah. Session-dan veriler gelmiyor muhtemelen. Kodun en başında session_start() satırını eklediniz mi?
  • 10-10-2023, 15:01:30
    #17
    DarkBlueSa adlı üyeden alıntı: mesajı görüntüle
    Estağfurullah. Session-dan veriler gelmiyor muhtemelen. Kodun en başında session_start() satırını eklediniz mi?
    Evet ekledim. session_start(); header.php dosyasında var. komisyonlar sayfasına include 'header.php'; şeklinde çekiyorum. Aşağıdaki kodlardan da bakabilirsiniz.

    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:42
    #18
    Bu kısımda session_start() yok. Kodun üst kısmında include var mıydı? İçerisinde session_start() olan.

    Alıntı
    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;
        }
    
    
    }