За последние 24 часа нас посетили 20280 программистов и 1724 робота. Сейчас ищут 2179 программистов ...

Помогите пожалуйста со скриптом

Тема в разделе "Сделайте за меня", создана пользователем slowpoke59rus, 14 июл 2014.

  1. slowpoke59rus

    slowpoke59rus Новичок

    С нами с:
    14 июл 2014
    Сообщения:
    27
    Симпатии:
    0
    Есть вот такой вот скрипт голосования


    functions.php

    <?php

    function drawForm() // отображение формы для голосования
    {
    $r=mysql_query ("SELECT * FROM vote WHERE votes is NULL");
    $row=mysql_fetch_array($r);
    echo "<p class=\"poles\">".$row['title']."</p>";
    echo "<form style=\"margin-bottom: 0px;\" name='vote_form'>";
    $r=mysql_query ("SELECT * FROM vote WHERE votes is not NULL");
    $i = 1;
    while ($row=mysql_fetch_array($r))
    echo "<input type='radio' class=\"radio_lol\" id=\"choice-++$i\" name='vote' value='{$row['id']}'> <label for=\"choice-++$i\"><span><span></span></span>
    {$row['title']}</label><br/>";
    echo "<br/><input class=\"button_vote\" type='button' onclick='showContent(\"vote.php?select=\"+getRadioGroupValue(document.vote_form.vote));' value='Голосовать'>";
    echo "</form>";
    }

    function drawResults() // отображение результатов
    {
    $r=mysql_query ("SELECT * FROM vote WHERE votes is NULL");
    $row=mysql_fetch_array($r);
    echo "<p class=\"poles\">".$row['title']."</p>";
    $r=mysql_query ("SELECT * FROM vote WHERE votes is not NULL");
    $query=mysql_query("SELECT SUM(votes) FROM vote");
    $sum=mysql_result($query,0);
    while ($row=mysql_fetch_array($r))
    echo "<div class=\"block_vote\"><span class=\"text_vote_left\">{$row['title']}</span> <span class=\"text_vote\">{$row['votes']}</span></div><br/>";
    }
    ?>


    vote.php

    <?php
    include ("dbconnect.php");
    include ("functions.php");

    // установка cookie для избежания повторного голосования с одного браузера.
    setcookie ("codething_vote","1");

    // добавление выбранного варианта
    $select = $_REQUEST['select'];
    mysql_query ("UPDATE vote SET votes = votes + 1 WHERE id = '$select'");

    // отображение результатов
    drawResults();


    ?>


    dbconnect.php

    <?php
    // название сервера БД
    define ("HOST", "");
    // название базы данных
    define ("DATABASE", "");
    // пользователь MySQL
    define ("MYSQL_USER", "");
    // пароль к MYSQL
    define ("MYSQL_PASS", "");


    // создаем базу данных и таблицу gb
    $link1=mysql_connect(HOST, MYSQL_USER, MYSQL_PASS) or die("Нет соединения с MySQL сервером!");
    mysql_query ("CREATE DATABASE IF NOT EXISTS ".DATABASE) or die ("Не могу создать базу данных!");
    mysql_select_db(DATABASE) or die("Нет содениения с требуемой базой данных!");
    mysql_query ("CREATE TABLE IF NOT EXISTS vote (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, title VARCHAR (250), votes INT)") or die ("Не могу создать таблицу vote.");

    // если таблица пуста, заполним её начальными значениями
    $r=mysql_query ("SELECT * FROM vote");
    if (mysql_num_rows($r)==0)
    {
    mysql_query ("INSERT INTO vote (title) VALUES ('Куда вы сегодня пойдете?')");
    mysql_query ("INSERT INTO vote (title, votes) VALUES ('Никуда',0)");
    mysql_query ("INSERT INTO vote (title, votes) VALUES ('В кино',0)");
    mysql_query ("INSERT INTO vote (title, votes) VALUES ('В клуб',0)");
    mysql_query ("INSERT INTO vote (title, votes) VALUES ('В магазин',0)");
    mysql_query ("INSERT INTO vote (title, votes) VALUES ('В спортзал',0)");
    mysql_query ("INSERT INTO vote (title, votes) VALUES ('Другое',0)");
    }


    ?>


    showcontent.js

    function showContent(link) {

    var cont = document.getElementById('contentBody');
    var loading = document.getElementById('loading');

    cont.innerHTML = loading.innerHTML;

    var http = createRequestObject(); // создаем ajax-объект
    if( http ) {
    http.open('post', link); // инициируем загрузку страницы
    http.onreadystatechange = function () { // назначаем асинхронный обработчик события
    if(http.readyState == 4) {
    cont.innerHTML = http.responseText; // присваиваем содержимое
    }
    }
    http.send(null);
    } else {
    document.location = link; // если ajax-объект не удается создать, просто перенаправляем на адрес
    }
    }

    // создание ajax объекта
    function createRequestObject() {
    try { return new XMLHttpRequest() }
    catch(e) {
    try { return new ActiveXObject('Msxml2.XMLHTTP') }
    catch(e) {
    try { return new ActiveXObject('Microsoft.XMLHTTP') }
    catch(e) { return null; }
    }
    }
    }


    index.php

    <div id="contentBody">
    <?php
    if ($_COOKIE['codething_vote']=='1')
    drawResults();
    else
    drawForm();
    ?>
    </div>
    <div id="loading" style="display: none">
    Идет загрузка
    </div>


    Все работает, и очень даже не плохо, но есть одно но!
    Я хочу сделать отображение процентов возле каждого из ответов, можно сделать это следующим образом: брать число голосов у ответа, и делить на все число голосов у вопроса, после этого умножать на 100. Но вот как это сделать я не врубаюсь, новичок в php. Это делается в файле functions.php, а конкретнее в этой строке "{$row['votes']}", вот как записать это деление и умножение в echo я не знаю, помогите пожалуйста!
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
  3. slowpoke59rus

    slowpoke59rus Новичок

    С нами с:
    14 июл 2014
    Сообщения:
    27
    Симпатии:
    0
    напиши пожалуйста так, как должно быть, я по разному пытался написать, гуглил, не получалось.
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    echo (число ответов)/(числоВопросов)*100;
     
  5. slowpoke59rus

    slowpoke59rus Новичок

    С нами с:
    14 июл 2014
    Сообщения:
    27
    Симпатии:
    0
    echo "{$row['title']}{$row['votes']}<br/>";
    вот так у меня щас записано, я вот с этими скобками квадратными нифига не понимаю как сделать

    Добавлено спустя 1 минуту 33 секунды:
    то есть: сначала выводиться название ответа, а потом количество голосов у этого ответа
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    например у нас на сайте 256 пользователей зареганных, проголосовало из них лишь 39 значит:
    echo (39/256*100)." % голосовало.";

    Добавлено спустя 1 минуту 23 секунды:
    $row['votes'] - кол-во ответов так..
    а где вопросы (переменка)?
     
  7. slowpoke59rus

    slowpoke59rus Новичок

    С нами с:
    14 июл 2014
    Сообщения:
    27
    Симпатии:
    0
    это я понимаю, как написать не понимаю, посмотрите сам крипт, и поймете как он тупо работает

    я сделал вот так ({$row['votes']})/($sum)*(100)
    поясняю, {$row['votes']} - это количество голосов за данный ответ, $sum - это все число голосов всех ответов,

    получилось так: (5)/(6)*(100)
     
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    Код (Text):
    1. echo '<div class="block_vote"><span class="text_vote_left">'.$row['title'].'</span> <span class="text_vote">'.($row['votes']/$sum*100).'</span></div><br/>';
     
  9. slowpoke59rus

    slowpoke59rus Новичок

    С нами с:
    14 июл 2014
    Сообщения:
    27
    Симпатии:
    0
    вы не понимаете, мне нужно не отношение проголосовавших ко всему числу людей на сайте, а число проголосовавших за один ответ (на пример их 1) ко всем ответам, всего их допустим 5, получается 1/5*100
     
  10. dapperkop

    dapperkop Активный пользователь

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    там, наверное нужно (39 * 100) / 256?
     
  11. slowpoke59rus

    slowpoke59rus Новичок

    С нами с:
    14 июл 2014
    Сообщения:
    27
    Симпатии:
    0
    просто гигантское спасибо)
     
  12. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
  13. slowpoke59rus

    slowpoke59rus Новичок

    С нами с:
    14 июл 2014
    Сообщения:
    27
    Симпатии:
    0
    а если выходит не целое число, (85.33333, например, как его округлить до 85?
     
  14. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    round($row['votes']/$sum*100)
     
  15. slowpoke59rus

    slowpoke59rus Новичок

    С нами с:
    14 июл 2014
    Сообщения:
    27
    Симпатии:
    0
    отличный вы человек)) спасибки)