ФорумПрограммированиеPHP для идиотов → реализация голосования

реализация голосования

  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 24 декабря 2008 г. 0:31, спустя 26 минут 20 секунд


    md5, хочу что бы ты пыхослет организовал! :-)
    будет..
    в новом году точно :) сначала все утрястись должно
    украинскую сторону посещу уже совсем скоро, потом будем думать о захвате всего мира :)
    все умрут, а я изумруд
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 24 декабря 2008 г. 0:32, спустя 1 минуту 5 секунд

    Одним запросом выбрать из
    vote_questions
    id | question
    vote_answers
    id | answer | question_id

    вопрос  и все ответы к нему
    ???
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 24 декабря 2008 г. 1:06, спустя 34 минуты 27 секунд


    лучше по куке и по ip вместе, это ведь не сложно
    понятно, что 100% предохранения не будет
    мне хватило выбеленной фразы. дальше даже читать не стал. подумал что тема про флуд)
    Сапожник без сапог
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 24 декабря 2008 г. 1:20, спустя 13 минут 36 секунд


    Одним запросом выбрать из
    vote_questions
    id | question
    vote_answers
    id | answer | question_id

    вопрос  и все ответы к нему
    ???


    и все таки =)
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 24 декабря 2008 г. 1:40, спустя 20 минут 4 секунды

    SELECT T.*, TA.* FROM `vote_questions` AS T,
    JOIN `vote_answers` AS TA
    ON T.`id` = TA.`question_id`
    WHERE T.`id`={$question_id}

    Если я правильно понял задачу.
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 24 декабря 2008 г. 1:42, спустя 1 минуту 25 секунд


    SELECT T.*, TA.* FROM `vote_questions` AS T,
    JOIN `vote_answers` AS TA
    ON T.`id` = TA.`question_id`

    Если я правильно понял задачу.


    помогло, спасибо. хм =( надо учить sql
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz 24 декабря 2008 г. 1:42, спустя 49 секунд

    Добавил условие чтобы один вопрос выбирать, потому как без условия выберет все :)
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 24 декабря 2008 г. 3:16, спустя 1 час 33 минуты 22 секунды

    вот что в общем получилось, хотелось, что-то исправить, что-то улучшить

    <?php 
    $db_link = new mysqli('localhost', 'root', '');
      
    $db_link->select_db('voting');
    
    $gentime = microtime(true);
    $geennss  = time();
    
    $query       = 'select `id`, `question` from `vote_questions` limit 1';
    $result      = $db_link->query($query);
    $assoc       = $result->fetch_assoc();
    $question    = $assoc[ 'question' ];
    $question_id = $assoc[ 'id' ]; 
    
    $query    = 'select `id`, `answer` 
                 from `vote_answers` 
                 where question_id = '.$question_id;
    
    $result   = $db_link->query($query);
    $answers  = array();
    while ($assoc = $result->fetch_assoc())
    {
      $answers[] = $assoc;
    }
    
    
    $ip = $_SERVER[ 'REMOTE_ADDR' ];
    $ip = addslashes($ip);
    $ip = $db_link->real_escape_string($ip);
    
    $query = 'select * from `vote_voted` where `ip` = '.$ip.' limit 1';
    $result = $db_link->query($query);
    
    $voted = (!$result) ? false : true;
    
    $show_vote_result = true;
    
    if (!isset($_COOKIE[ 'vote' ]) && $voted)
    {  
      $vote = trim($_POST[ 'vote' ]);
      if ($vote)
      {
        $answer_id = intval($vote);
        // adding information
        $query = "insert into vote_voted 
                  values('$ip', $question_id, $answer_id, ".time().")";      
        $db_link->query($query); 
         
        setcookie("vote", $vote, time() + 3600 * 24 * 7 * 365);
      }
      else 
        $show_vote_result = false; 
    }
    
    
    if ($show_vote_result)
    {
    
      $query = 'select `answer_id` as `id` from vote_voted where question_id = '.$question_id;
      $result = $db_link->query($query);
      $sum = $result->num_rows;
      
      $procent_answers = array();
      $sum_answers = array();
      foreach ($answers as $key => $value)
      {
        $sum_answers[ $value[ 'id' ] ] = 0;
      }
      
      while ($assoc = $result->fetch_assoc())
      {
        $sum_answers[ $assoc[ 'id' ]]++;
      }
      
      $procent_answers = array();
      foreach ($sum_answers as $key => $value)
      {
        $procent_answers[ $key ] = ceil($value / $sum * 100);
      }
      
      echo '<pre>';
      print_r($sum_answers);
      echo '</pre>';
      echo '<pre>';
      print_r($procent_answers);
      echo '</pre>';
    }
    else
    {
      echo '<form method="post" action="">';
      echo $question.'<br />';
      foreach ($answers as $key => $value)
      {
       echo '<input type="radio" name="vote" value="'.$value[ 'id' ].'" />'.$value[ 'answer' ].'<br />';
      }
      echo '<input type="submit" value="click it" />';
      echo '</form>';
    }
    
    $gentime = microtime(true) - $gentime;
    echo '<br />gentime = '.($gentime*1000);
    ?>
  • Frukts

    Сообщения: 28 Репутация: N Группа: Кто попало

    Spritz 18 августа 2012 г. 22:22, спустя 1333 дня 18 часов 5 минут

    Как на киевском вокзале
    Два попа маячили.
    Маячили, маячили,
    Да кассу охуячили.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!