За последние 24 часа нас посетил 17401 программист и 1650 роботов. Сейчас ищут 763 программиста ...

foreach и голосования!

Тема в разделе "PHP и базы данных", создана пользователем vl25, 13 мар 2009.

  1. vl25

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

    С нами с:
    30 янв 2009
    Сообщения:
    25
    Симпатии:
    0
    Добрый день всем. Интерисуюсь создание голосования в foreach {}!

    Т.е Напротив каждого выводимого элемента должна быть ссылка на голосование, а рядом колличесвто проголосовавших ...

    Имею код:
    PHP:
    1. foreach ($server_list as $server)
    2.     {        
    3.  
    4.     <td >$country&nbsp;<a onClick='getSereverInf(321);' title=\"\" style=\"cursor:pointer;\">$cou$cif</a></td>
    5.     <td >{$server['b']['ip']}:{$server['b']['c_port']}</td>
    6.     <td >{$server['s']['map']}</td>
    7.     <td><a  href=\"/id/{$server['o']['id']}/\"  rel='players' \">{$server['s']['players']}&nbsp;/&nbsp;{$server['s']['playersmax']}</a></td>
    8.     <td ><a href=\"#\" title=\"Проголосовать\" style=\"cursor:pointer\"><img src=\"/images/vote/arrow_up.gif\" style=\"width:9px;height:19px\" /></a></td>
    9.     <td ><span id=\"r321\">$vote</span></td>
    10.  
    11.    }
    Переменная $vote пустая! Благодарю.
     
  2. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
  3. vl25

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

    С нами с:
    30 янв 2009
    Сообщения:
    25
    Симпатии:
    0
    Хм ... Не вижу связи. Форма это не проблема. Меня интерисует алгоритм записи голосов для каждого id сервера.
     
  4. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Круто! А откуда в ней что-то должно быть?
     
  5. vl25

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

    С нами с:
    30 янв 2009
    Сообщения:
    25
    Симпатии:
    0
    Хм... Тут никто не в силах помочь?
     
  6. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Задачу опиши нормально. Я пока даже не понял кто такие id сервера и почему они должны голосовать.
     
  7. akrinel

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

    С нами с:
    26 янв 2009
    Сообщения:
    955
    Симпатии:
    1
    Адрес:
    Spb
    Не совсем понятно, а она должна быть "полной"? Где ей присваивается значение? Либо Вы выложили слишком маленький участок кода, либо проблема действительно, в том, что вы вместо $_POST['vote']/$_GET['vote'] обращаетесь к $vote, а Register_Globals у Вас установлено в off.


    В таком случае непонятно зачем данный кусок кода вообще?

    Общий алгоритм, например, таков:

    1. Создаем Таблицу:
    [sql]
    CREATE TABLE `vote`(
    # id сервера
    `id` INT NOT NULL AUTO_INCREMENT,
    # Кол-во набранных им голосов
    `votes` INT NOT NULL DEFAULT 0,
    PRIMARY KEY(`id`)
    );
    [/sql]

    2. Когда человек нажимает на ссылку (от него нам в $_GET или $_POST нужно получить id сервера). Проверяем id и делаем:
    [sql]
    UPDATE `vote` SET `votes`=`votes`+1 WHERE `id`={ID_СЕРВЕРА}
    [/sql]


    3. Ставим ему куку, что бы в следующий раз если попробует проголосовать шел лесом.

    P.S. Также было бы недурственно подумать над защитой от накрутки. Вести логи на кол-во запросов с одного IP и не давать с одного IP голосовать больше 20-ти раз, или же просто сделать голосование только для зарегистированных пользователей, или показывать каптчу или и то и другое и третье :)



    Я слышал о создании голосования при помощи PHP. Но о том, что можно обойтись одной лишь Control Structures foreach никогда не догадывался. :))))
     
  8. vl25

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

    С нами с:
    30 янв 2009
    Сообщения:
    25
    Симпатии:
    0
    Благодарю :)