• 14-04-2008, 11:43:22
    #1
    Üyeliği durduruldu
    Arkadaşlar bir anket uygulaması için yardıma ihtiyacım var, net te dolaşan birçok anket uygulamasını inceledim ama ihtiyacımı karşılamıyor. Okulda öğrenciler için anket yapmamız gerekiyor, aşağıdaki uygulama için yardımlarınızı bekliyorum.

    Elimde olan scriptleri denedim fakat Öğrencilerin sınıflarını belirtmesi ve hangi sınıftan kaç kişi ankete katılmış, kaç kişi soruların hangi şıkkını daha çok işaretlemiş ayarlayamadım. Php yada asp farketmez.

    AÇIKLAMA ;


    Öğrenciler anket doldurmaya başlamadan önce,

    1-) Kendi siniflarini belirtmeli,
    2-) Her soruyu muhakkak cevaplamalı,
    3-) Anketi gonderdikten sonra, tesekkur mesajı almalı.

    Admin kullanıcısı ankete hangi siniftan kac kisi katilmis gorebilsin.

    Anket sonucunda;

    1-) Sorulan her soru için, kaç kişi hangi şıkları işaretlemiş (Yüzde oranı degil, sayısal toplamı önemli)

    Örnek :

    1.Soru : A-) 65 B-) 24 C-) 12 D-) 7 E-) 0 // (kişi tercihlemiş)
    2.Soru : A-) 12 B-) 13 C-) 29 D-) 1 E-) 60 // (kişi tercihlemiş)


    Özel Mesaj ile İletişim Kurarsanız veya buradan yardım ederseniz sevinirim.
  • 14-04-2008, 14:51:27
    #2
    Üyeliği durduruldu
    Arkadaşlar ilk önce tablolarımı oluşturdum.

    CREATE TABLE `anket` (
    
      `id` INT(3) NOT NULL AUTO_INCREMENT,
    
      `baslik` VARCHAR(255) NOT NULL,
    
      `soru` VARCHAR(255) NOT NULL,
    
      `tarih` DATETIME NOT NULL,
    
      PRIMARY KEY  (`id`)
    
    ) ENGINE=MyISAM DEFAULT CHARSET=latin5 AUTO_INCREMENT=1 ; 
    
    
    
    
    
    CREATE TABLE `secenekler` (
    
      `id` BIGINT(5) NOT NULL AUTO_INCREMENT,
    
      `anket_id` INT(3) NOT NULL,
    
      `secenek` VARCHAR(255) NOT NULL,
    
      KEY `id` (`id`),
    
      KEY `anket_id` (`anket_id`)
    
    ) ENGINE=MyISAM DEFAULT CHARSET=latin5 AUTO_INCREMENT=1 ;
    
    
    
    CREATE TABLE `oylar` (
    
      `id` BIGINT(10) NOT NULL AUTO_INCREMENT,
    
      `anket_id` INT(3) NOT NULL,
    
      `secenek_id` BIGINT(5) NOT NULL,
    
      `oy` BIGINT(5) NOT NULL DEFAULT '0',
    
      `kullanici_ip` VARCHAR(25) NOT NULL,
    
      `tarih` DATETIME NOT NULL,
    
      PRIMARY KEY  (`id`),
    
      KEY `anket_id` (`anket_id`),
    
      KEY `secenek_id` (`secenek_id`)
    
    ) ENGINE=MyISAM DEFAULT CHARSET=latin5 AUTO_INCREMENT=1 ;


    Sonra bir form oluşturdum



    <?php
    
    
    
    @mysql_connect("localhost", "root", "") || die ("CONN_ERR_1");
    
    @mysql_select_db("test") || die("CONN_ERR_2");
    
    @mysql_query("SET NAMES 'latin5' ");
    
    
    
    if (! $_POST['submit'] && ! $_POST['submit2']){
    
    
    
    ?>
    
    <html>
    
    <body>
    
       <form action="<?php $_SERVER['$PHP_SELF'] ?>" method="POST">
    
       <table align="center" width="50%" border="1" cellpadding="0" cellspacing="2">
    
          <tr> <!-- ADIM I -->
    
             <td colspan="2">Anket Yaratıcı:</td>
    
          </tr>
    
          <tr>
    
             <td width="50%">Soru: (Max 255 )</td>
    
             <td width="50%"><input type="text" maxlength="255" name="soru"></td>
    
          </tr>
    
          <tr>
    
             <td width="50%">Anket Adı: (Max 255 )</td>
    
             <td width="50%"><input type="text" maxlength="255" name="anket_adi"></td>
    
          </tr>
    
          <tr>
    
             <td width="50%">Kaç Seçenekli</td>
    
             <td width="50%"><input type="text" name="secenek_sayisi" maxlength="5"></td>
    
          </tr>
    
          <tr>
    
             <td>&nbsp;</td>
    
             <td><input type="reset" name="reset" value="TEMIZLE">
    
                 <input type="submit" name="submit" value="ADIM I"></td>
    
          </tr>
    
       </table>
    
       </form>
    
    </body>
    
    </html>


    Seçenekleri belirtecek yerde tamamdır



    <?php
    
    }
    
    
    
    if ($_POST['submit']){
    
    //session_start();
    
            $soru = $_POST['soru'];
    
            $secenek_sayisi = $_POST['secenek_sayisi'];
    
        $anket_adi = $_POST['anket_adi'];
    
    
    
              echo "<html><body>
    
                    <form action=\"" .$_SERVER[$PHP_SELF]. "\" method=\"POST\">
    
                    <table align=\"center\" width=\"50%\" border=\"1\" cellpadding=\"0\" cellspacing=\"2\">
    
                <tr>
    
                    <td width=\"50%\">&nbsp;</td>
    
                    <td width=\"50%\"><input type=\"hidden\" name=\"soru\" value=\"$soru\">
    
                                      <input type=\"hidden\" name=\"secenek_sayisi\" value=\"$secenek_sayisi\">
    
                                      <input type=\"hidden\" name=\"anket_adi\" value=\"$anket_adi\">
    
                    $soru</td>
    
                </tr>";
    
    
    
          for ($i=0; $i<$secenek_sayisi; $i++) {
    
            $secenek_no= intval($i+1);
    
            $secenek_adi[] = $_SESSION['secenek'.$secenek_no.''];
    
          echo "
    
          <tr>
    
             <td width=\"50%\">Seçenek -$secenek_no-</td>
    
             <td width=\"50%\"><input type=\"text\" name=\"secenek_$secenek_no\" value=\"$secenek_adi[$i]\"></td>
    
          </tr>";
    
          }
    
    
    
          echo "<tr>
    
                    <td width=\"50%\">&nbsp</td>
    
    
    
                    <td width=\"50%\">
    
                    <input type=\"reset\" name=\"reset\" value=\"TEMIZLE\">
    
                    <input type=\"submit\" name=\"submit2\" value=\"ADIM II\">
    
                </tr>
    
                </table>
    
                </form>
    
                <body>
    
                </html>";
    
    
    
    }




    Gelen oyları okuyacağım bölümde tamam



    if ($_POST['submit2']) {
    
    //session_start();
    
    
    
    $soru = $_POST['soru'];
    
    $secenek_sayisi = $_POST['secenek_sayisi']; //toplam secenek sayısı//
    
    //echo $secenek_sayisi;
    
    $anket_adi = $_POST['anket_adi'];
    
    //$secenek = "secenek_";
    
    for ($i=0; $i < $secenek_sayisi; $i++){
    
            $secenek_no= intval($i+1);
    
        $_SESSION['secenek'.$secenek_no.''] = $_POST['secenek_'.$secenek_no.''];
    
            //$secenekler[] = $secenek.$secenek_no;
    
            $degerler[] = $_POST['secenek_'.$secenek_no.''];
    
    
    
    
    
    }
    
    
    
    for ($i=0; $i< $secenek_sayisi; $i++) {
    
    
    
            $secenekler[] = $degerler[$i];
    
    
    
    }
    
    //print_r( $secenekler);
    
    
    
    $sql = mysql_query("INSERT INTO anket VALUES ('','$anket_adi','$soru',NOW() ) ");
    
    if (!$sql) { echo "Tabloya yazılamadı : ANKET"; } else {
    
            $sql = mysql_query("SELECT id FROM anket WHERE baslik LIKE '%$anket_adi%' ");
    
             $anket_id = mysql_result ($sql,0);
    
             }
    
    //echo "ANKET ID : ".$anket_id;
    
    
    
     $i=0;
    
              while ( $i < $secenek_sayisi ) {
    
    $sql = mysql_query("INSERT INTO secenekler (id,anket_id,secenek) VALUES ('','$anket_id','$secenekler[$i]') ");
    
    
    
    if ($sql || die("Tabloya Yazılamadı : SECENEKLER"));
    
    $i++;
    
              }
    
    
    
    $sql = mysql_query("SELECT id FROM secenekler WHERE anket_id='$anket_id' ");
    
        while ($read = mysql_fetch_array($sql)){
    
            $secenek_ids[] = $read['id'];
    
        }
    
    
    
    //echo count($secenek_ids);
    
        $i=0;
    
        while ($i < count($secenek_ids)) {
    
        $sql = mysql_query("INSERT INTO oylar VALUES ('','$anket_id','$secenek_ids[$i]',
    
                        '', '', '') ");
    
        if ($sql || die ("Tabloya Yazılamadı : OYLAR") );
    
    
    
    $i++;
    
        }
    
    }
    
    ?>


    Arkadaşlar öğrencinin sınıfını belirtemesi için ve sonuçlarda kaç kişi hangi şıkkı işaretlemiş olayını nasıl yapabilirim. tüyo verebilirmisiniz.
  • 14-04-2008, 15:12:28
    #3
    oylar tablosuna sinif diye bir sütun acarsin.

    anket doldurulacak sayfaya bir input koyarsin. select yada text olabilir

    Sinifin : <INPUT TYPE="text" NAME="sinif">
    bunu GET yada POST ile sonraki sayfada alirsin.

    $sinif = $_GET[sinif];
    oylari girerken $sinif i da girersin.

    sonuclari görecegin sayfada where SINIF = '11/C'

    gibi sadece 11/C sinifindaki kişilerin verdigi oylari görebilirsin.


    kaç kişi hangi şıkkı işaretlemiş olayını yine where ile yapabilirsin
    $A = mysql_query ("SELECT * FROM `oylar` where oy = 'A'");
    $kackisi = mysql_num_rows($A);
    echo $kackisi." kişi A şıkkını işaretlemiş";