• 30-03-2010, 19:54:24
    #1
    Eposta Aktivasyonu Gerekmekte


    Merhaba öncelikle ilginiz için teşekkür ederim , sizi sorunum hakkında bilgilenmeniz için detaylı şekilde anlattım.

    bir test oluşturma sayfam var buradan dersini ve düzeyini seçtikten sonra resimdeki gibi bir sayfa açılıyor , bu sayfada yapmak istediğim formda belirtilen konularda belirtilen soru sayısını sonraki sayfada yazdırmak istiyorum.

    konu sayısı uzuyor , bu kadar değil.

    mesela üslü ifadelerden 10 soru , hız problemlerinden 5 soru , parabolden 10 bunu bir while içine alark yazdıracağız ama mantığını çözemedim bir türlü,

    formda soru sayısı girilmeyen konuları dahil etmeyecek ,

    değişkenler :
    ders değişkeni : $ders(veritabanındaki kaydı 'ders')
    konu değişkeni : $konu (veritabanındaki kaydı 'konu' )
    düzey değişkeni : $duzey(veritabanındaki kaydı 'duzey' )
    çekilecek tablonun adı "soru_test"
    Çekilecek değerler ( aciklama , resim , a , b,c,d,e,dogru_sik )

    her bir konu için ayrı sorgu cümleciği yapacağız sanırım , çünkü her bir konu için ayrı limit belirtiliyor.

    ödevim için gerekiyor , az da zamanım kaldı.
  • 30-03-2010, 20:43:11
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Arkadaşım form olayını hallettiysen yapacağın, gelen form değerine bakıp, ona göre veritabanından seçmen. Yani gelen değere bakacaksın, bir de toplam adet değişkeni tutacaksın 25 soruyu geçmemesi için. Daha sonra toplam 25 i geçmiyorsa o kadar kayıtı veritabanından seçeceksin. Diyelim 15 soru seçildiyse:

    $sorgu = 'select * from sorular where ders="ders_id" limit 15';
    gibi. Sonra toplam değişkenine bakıp, kalan hakkı yetiyorsa, sonraki kaydı alacaksın, bu şekilde gidecek. Önemli olan mantığı oluşturman. Eğer içinden çıkamazsan, formu oluşturduğun kodlarla beraber buraya ekle, yardımcı oluruz.
  • 30-03-2010, 20:47:31
    #3
    Eposta Aktivasyonu Gerekmekte
    her konu için ayrı ayrı sorgu cümlesi oluşturmam lazım değilmi

    $sorgu = 'select * from sorular where ders="ders_id" limit 15';
    her konu için şu şekilde yapmam gerekmiyormu

     
    $sorgu = 'select * from sorular where ders="$ders" and konu ='$konu' limit 15';
    çünkü her sorunun ayrı miktarı olacak buraya kadar tamam

    en son yazdırırken bütün bu sorguları tek bir whilede nasıl toplayacağım

    bu arada soru çekiminde bir limit yok , yani 25 değil onu öylesine yazdım 50 soruda olabilir onun için ayrıca kontrol uğraşmayalım.
  • 30-03-2010, 21:05:59
    #4
    Eposta Aktivasyonu Gerekmekte


    örnek olması için
  • 30-03-2010, 21:11:09
    #5
    Arkadaşım sen 25 soru dedin diye öyle dedim, yani 50 soru da olsa, eğer kontrol koymazsan adam forma 100 yazsa 100 soru çekersin onun için kontrol gerekli. Ama diyorsan bu sadece ders gerek yok, yukarıda ki şekilde yapabilirsin, her ders için ayrı sorguyla en basiti, diğer türlü biraz ileri seviye olur sanırım. Tek while'de toplamana gerek yok. Sorgu yaptıkça yazdırabilirsin.

    $sorgu = mysql_query( 'select * from sorular where ders="'.$ders.'" and konu ="'.$konu.'" limit 15');
    while($sonuc = mysql_fetch_assoc($sorgu1)){
    print_r($sonuc);
    }
    $sorgu2 = mysql_query('select * from sorular where ders="'.$ders.'" and konu ="'.$konu.'" limit 15');
    while($sonuc = mysql_fetch_assoc($sorgu2)){
    print_r($sonuc);
    }
    gibi. İlla tek arraya toplayacaksan:

    $sorgu1 = mysql_query( 'select * from sorular where ders="'.$ders.'" and konu ="'.$konu.'" limit 15');
    while($sonuc = mysql_fetch_assoc($sorgu1)) $toplam[] = $sonuc;
    
    $sorgu2 = mysql_query('select * from sorular where ders="'.$ders.'" and konu ="'.$konu.'" limit 15');
    while($sonuc = mysql_fetch_assoc($sorgu2)) $toplam[] = $sonuc;
    
    print_r($toplam);//toplam dizi