• 24-03-2010, 22:12:44
    #1
    Eposta Aktivasyonu Gerekmekte
    arkadaşlar soru_test diye bir tablom var , ders in adına göre soruları çekiyorum fakat bir bölümde çoklu ders seçme ihtiyacı oluştu , bunu nasıl yapacağımı tam olarak bilmiyorum.

    aşağıdaki şekilde yaptım ama olmadı , $dersler değişkeni doğru şekilde derslerin arasına , koyarak yazıyor ama veritabanından çekemiyorum.
    not: çekilen verileri while ile alt alta yazıyorum. online test olduğu için.

    $dersler = implode(",",$_POST["dersler"]);


    $duzey = $_POST["duzey"];
    $soru = $_POST["soru"];

    echo ("$dersler");
    clude ("config/baglanti.php");


    $sorgu = @mysql_query('select * from soru_test where ders in ('.$dersler.') and duzey= "$duzey" LIMIT $soru');
  • 24-03-2010, 23:09:34
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşım
    <?php
    $sorgu = @mysql_query('select * from soru_test where ders in ('.$dersler.') and duzey= "$duzey" LIMIT $soru'); 
    ?>
    Bu kısmı :

    <?php
    $sorgu = mysql_query('select * from soru_test where ders in ('.$dersler.') and duzey= "'.$duzey.'" LIMIT '.$soru); 
    ?>
    Bu şekilde yap, ayrıca o @ işaretini kullanma ve hata gösterimini aç ki, bir hata olduğunda nedenenini görebilesin.
  • 24-03-2010, 23:29:30
    #3
    Eposta Aktivasyonu Gerekmekte
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/online/public_html/test_olustur.php on line 143

    bu hatayı veriyor

    tabloda veri olmasına rağmen
  • 25-03-2010, 00:14:07
    #4
    Arkadaşım o zaman yaptığın sorguda hata var.

    <?php
    $sor = 'select * from soru_test where ders in ('.$dersler.') and duzey = "'.$duzey.'" LIMIT '.$soru;
    echo 'gönderilen sorgu : '.$sor.'<br>';
    $sorgu = mysql_query($sor) or trigger_error(mysql_error(),E_USER_ERROR); 
    ?>
    Bu şekilde yap ve bak hem sorgu doğru gidiyor mu, yoksa hata mı var belli olur.
  • 25-03-2010, 00:29:09
    #5
    Eposta Aktivasyonu Gerekmekte
    select * from soru_test where ders in (Matematik,Biyoloji,Edebiyat) and duzey = "3" LIMIT 1

    şu şekilde gönderiyor
  • 25-03-2010, 00:42:13
    #6
    Arkadaşım o şekilde olmaz string gönderiyorsan sql'e tırnak içinde olması lazım.

    where ders in ("Matematik","Biyoloji","Edebiyat") gibi . Yukarıda implode ile birleştirmeden tırnak içine aldırman gerekir. foreach veya array_map vs. ile.
  • 25-03-2010, 00:44:56
    #7
    Eposta Aktivasyonu Gerekmekte
    nasıl yapılacağını belirtebilirmisniz mumkunse
  • 25-03-2010, 00:56:36
    #8
    <?php
    
    $duzey = intval($_POST['duzey']);
    $soru = intval($_POST['soru']);
    
    foreach($_POST["dersler"] as $k) $dersler[]= '"'.$k.'"';
    
    $dersler = implode(",", $dersler); 
    $sorgu = mysql_query('select * from soru_test where ders in ('.$dersler.') and duzey= "'.$duzey.'" LIMIT '.$soru);  
    
    ?>