За последние 24 часа нас посетили 23056 программистов и 1726 роботов. Сейчас ищет 1541 программист ...

Голосование

Тема в разделе "PHP и базы данных", создана пользователем uMnepaTop, 16 июн 2008.

  1. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    Все добрый вечер, пишу скрипт "ранк/голосование"...
    Появился вопрос, как написать, чтобы после голосования и записи IP & DATE в БД, ссылка голосования убиралась на 24 часа? Я только учусь, не пинайте мну)
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Дату в каком типе храните?
    В общем надо сравнивать по таймштампам
    if (time() >= (mktime($DATE) + 24*3600)) {
    //Показываем счетчик
    }

    Это все можно сделать лучше, просто сейчас уже не в состоянии (там через функцию прибавлять 25 часов).
     
  3. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    IP в CHAR & DATE в DATETIME (Y-m-d H:i:s)
     
  4. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    файл голосования:
    PHP:
    1. $user_ip = $REMOTE_ADDR;
    2. $date = date("Y-m-d H:i:s");
    3.  
    4. $q = mysql_query("UPDATE ips SET hits=hits+1 WHERE id='$id'", $dbcon);
    5.  
    6. if ($user_ip) {
    7. mysql_query("INSERT INTO users (id,user_ip,date) VALUES ('', '$user_ip', '$date')", $dbcon);
    8. } else {
    9. mysql_query("UPDATE users SET date='$date' WHERE user_ip='$user_ip'", $dbcon);
    10. }
    Главный файл:
    PHP:
    1. <?
    2. include 'cfg.php';
    3. $sql = "SELECT id,ip,port,name,map,current,max,ping,secure,hits FROM address GROUP BY name ORDER BY hits DESC";
    4. $result = @mysql_query($sql,$dbcon)
    5. or die ("Невозможно выполнить запрос");
    6. ?>
    7. <table style='width: 100%; border-collapse: collapse'>
    8. <?
    9. while ($row = mysql_fetch_array($result)) {
    10.  
    11. $id = $row['id'];
    12. $hits = $row['hits'];
    13. $ip = $row['ip'];
    14. $port = $row['port'];
    15. $name = $row['name'];
    16. $map = $row['map'];
    17. $current = $row['current'];
    18. $max = $row['max'];
    19. $ping = $row['ping'];
    20. $secure = $row['secure'];
    21.  
    22. echo "<tr>
    23. <td style='width: 75px'>
    24. <a href='/vote.php?id=$id' target=_blank><img src='up.PNG' border=0></a> $hits</span></td>
    25. <td style='width: 175px'><p align=center>$ip:$port</p></td>
    26. <td>$name</td>
    27. <td style='width: 150px'>$map</td>
    28. <td style='width: 75px'><p align=center>$current/$max</p></td>
    29. <td style='width: 50px'><p align=center>$ping</p></td>
    30. </tr>";
    31. }
    32. ?>
    33. </table>
    Напишите пожалуйста, как должно быть, я просто не разу с этим не сталкивался и не понимаю куда, чего...
    Уже несколько дней сижу на этом месте, даже методом тыка не помогает 8(

    Понимаю, что Вы скажете:
    Не занимайся програмированием

    Но...
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Вообще, я бы посоветовал метки времени хранить в формате UNIX TIMESTAMP, ибо с ними удобнее оперировать. Тем более, что у вас действительно временные метки между голосованиями (это я так, к слову).
    Хранить в столбце с типом int
    Чтобы вывести дату в человекоподобную, то можно прямо в запросе к базе указывать FROM_UNIXTIME(`date`, "%d %m %Y")

    Тогда все становится гораздо проще:
    PHP:
    1.  
    2. <?php
    3.  echo "<tr>
    4. <td style='width: 75px'>";
    5. if (time() >= ($date + 24*3600)) {
    6.    echo "<a href='/vote.php?id=$id' target=_blank><img src='up.PNG' border=0></a>";
    7. }  
    8.   echo $hits[b]"</span>(Откуда??)[/b]</td>
    9. <td style='width: 175px'><p align=center>$ip:$port</p></td>
    10. <td>$name</td>
    11.  <td style='width: 150px'>$map</td>
    12.  <td style='width: 75px'><p align=center>$current/$max</p></td>
    13.  <td style='width: 50px'><p align=center>$ping</p></td>
    14.  </tr>";
    15.  
    16. ?>
    17.  
    Что-то в этом роде, только не забудьте создать новый столбец с базой, переправить скрипт, и в запросе выбирать и дату!
    Кстати - переименование переменных - это Вы зря...
     
  6. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    А как проверку по IP написать?
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Да, вообще-то нужен запрос, который бы как раз и узнавал о юзере (запрос из базы о ип, дате)...
     
  8. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    И для IP лучше INT использовать.
     
  9. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    Угу, только вот как написать?
     
  10. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    INT не работает, показывает только до первой точки)
     
  11. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  12. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    Это что? Оо
     
  13. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  14. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    А зачем мне она?
     
  15. Anonymous

    Anonymous Guest

    Для исправления ошибок в ДНК...
     
  16. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    Да пока что все равно на это, главное как написать что бы просто по IP проверялось из БД)

    Пытаюсь так:
    PHP:
    1. $q = "SELECT * FROM users";
    2. $query = mysql_query($q);
    3. $user_ip = $REMOTE_ADDR;
    4. while ($row1 = mysql_fetch_assoc($query)) {
    5.  
    6. $user_ips = $row1['user_ip'];
    7.  
    8. if ($user_ips = $user_ip) {
    9. echo "<a href='/vote.php?id=$id' target=_blank><img src='up.PNG' border=0></a> $hits</span></td>";
    10. } else {
    11. echo "$hits";
    12. }
    13. }
    Не работает)
     
  17. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    Помогите пожалуйста с этим разобраться, а то я так и буду мучаться хоть и не получается 8(
     
  18. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
  19. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    [​IMG] Почему мне никто не помогайет 8(
     
  20. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    uMnepaTop
    Аватару смените, разрешены только личные фото.
     
  21. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    Сменил) А кто поможет мне вопрос решить с проверкой IP?)
    Я оооочень прошу, уже просто сил нету, уже все методы испробывал!
     
  22. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    PHP:
    1. $user_ip = $REMOTE_ADDR;
    2. if (mysql_num_rows(mysql_query("SELECT id FROM users WHERE user_ip='$user_ip' AND date=NOW()"))) {
    3. echo "$hits";
    4. } else {
    5. echo "<a href='/vote.php?id=$id' target=_blank><img src='up.PNG' border=0></a> $hits</span></td>";
    6. }
    Что то типа этого... только этот не работает (как всегда) :(
     
  23. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    Тааакс)))) С этим я разобрался!!!!!!! Ура))))
    Теперь вопрос в другом, как обновить страницу, после нажатия на ссылку?
     
  24. Johnatan

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

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Ыыы.. жжошь, товарисч.

    Подозреваю, что
    PHP:
    1. header("Location: [url=http://localhost]http://localhost[/url]");
     
  25. uMnepaTop

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

    С нами с:
    28 дек 2007
    Сообщения:
    58
    Симпатии:
    0
    Эм... а куда ее пихать?)

    PHP:
    1. echo "<a href='javascript:winop();'><img src='up.PNG' border=0></a> $hits";
    2. } else {
    3. echo "$hits";
    4. }