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

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

  • md5

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

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


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

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

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

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

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

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

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


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

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

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


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

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


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

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

    Spritz 23 декабря 2008 г. 17: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 23 декабря 2008 г. 17: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 23 декабря 2008 г. 17:42, спустя 49 секунд

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

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

    Spritz 23 декабря 2008 г. 19: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 г. 14:22, спустя 1333 дня 18 часов 5 минут

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

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