• 06-10-2023, 09:53:38
    #1
    Arkadaşlar sql kodunda Türkçe kategorisinde Türkçe 1 dersinin 2019 yılı için oluşturulan online testine eklenen soruları listeliyorum.

    Sql kodu:

    $sql = $db->prepare("SELECT id, ad FROM dersListesi WHERE id = ".$donemId);
    $sql->execute();

    $fafe = $sql->fetch(PDO::FETCH_ASSOC)['ad'];

    $sql = $db->prepare("SELECT * FROM testSorular INNER JOIN testListesi on testListesi.id = testSorular.test_id WHERE testSorular.test_id = ?");
    $sql->execute(array($testId));

    $liste = $sql->fetchAll(PDO::FETCH_ASSOC);
    $title = $liste[0]['ad'];

    Fakat ben şöyle bir şey yapmak istiyorum.

    Türkçe kategorisinde Türkçe 1 dersinin 2018 yılı ve 2019 yılında yer alan toplam 5 testin her biri 20 sorudan oluşuyor ve toplam 100 sorudan ibaret bende bunun rastgele 9 sorudan oluşmasını nasıl sağlarım?
  • 06-10-2023, 10:16:12
    #2
    $sql = $db->prepare("
        SELECT testSorular.id, testSorular.soru_metni
        FROM dersListesi
        INNER JOIN testListesi ON dersListesi.id = testListesi.ders_id
        INNER JOIN testSorular ON testListesi.id = testSorular.test_id
        WHERE dersListesi.ad = 'Türkçe 1'
        AND YEAR(testListesi.olusturma_tarihi) IN (2018, 2019)
        ORDER BY RAND()
        LIMIT 9
    ");
    
    $sql->execute();
    $secilenSorular = $sql->fetchAll(PDO::FETCH_ASSOC);
  • 06-10-2023, 13:27:18
    #3
    hocam sql kodlarım şu şekilde

    <?php
    include "./appy/connectPDO.php";

    $testId = $_GET['testId'];

    $donemId = $_GET['donemId'];
    $bolumId = $_GET['bolumId'];
    $backUrl = '/uygulama/test-sec.php?donemId='.$donemId.'&bolumId='.$bolumId;

    $sql = $db->prepare("SELECT id, ad FROM dersListesi WHERE id = ".$donemId);
    $sql->execute();

    $fafe = $sql->fetch(PDO::FETCH_ASSOC)['ad'];

    $sql = $db->prepare("SELECT * FROM testSorular INNER JOIN testListesi on testListesi.id = testSorular.test_id WHERE testSorular.test_id = ?");
    $sql->execute(array($testId));

    $liste = $sql->fetchAll(PDO::FETCH_ASSOC);
    $title = $liste[0]['ad'];

    ?>

    Burada ders listesinden

    Örnek olarak admin panelden oluşturduğum 2018 yılı 1. dönem de çıkmış olan 20 soru ile test çözüyorlar. 2019 yılı için olan da var 2020 yılı olanda var.

    Türkçe -> Türkçe 1 -> 2018 yılı 1. dönem

    Benim yapmak istediğim ise
    Türkçe -> Türkçe 1 -> Rastgele
    Burada yapmak istediğim 2018 yılı 2019 yılı ve 2020 yıllarından rastgele çıkmasını sağlamak