За последние 24 часа нас посетили 52559 программистов и 1799 роботов. Сейчас ищут 888 программистов ...

Изменение двух переменных

Тема в разделе "MySQL", создана пользователем -Vladimir-, 9 янв 2010.

  1. -Vladimir-

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

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Имеются две переменные: $dates и $ip ($dates = $info[dates]; $ip = $info[ip];)
    В переменной $dates находится текущая дата, а в $ip - через пробел добавляются ip-адреса.

    Помогите пожалуйста сделать следующее:

    Если $dates не равно date("Y.m.d"); то $dates перезаписывается (в базе) на date("Y.m.d"); и полностью затираются данные в переменной $ip.
    После этого происходит проверка $ip на наличие в нём ip пользователя, обратившегося к странице - $_SERVER['REMOTE_ADDR']; (разумеется, его там не будет, т.к. всё затёрто).
    При отсутствии этого ip в переменной $ip, выполняется определённый {сценарий}, после чего в переменную $ip добавляется $_SERVER['REMOTE_ADDR'];

    Если $dates = date("Y.m.d"); то происходит проверка $ip на наличие в нём $_SERVER['REMOTE_ADDR']; Если таковой в нём имеется, то сценарий останавливаниется.
    Если НЕ имеется, то выполняется определённый {сценарий}, после чего в переменную $ip добавляется $_SERVER['REMOTE_ADDR'];

    В переменной $ip список ip-адресов записывается через пробел. Каждый новый добавляемый ip ставится в конец.

    Обновление базы данных:
    $update = "UPDATE `info` SET dates='{$dates}', ip='{$ip}', WHERE id='{$_POST['id']}'";
     
  2. -Vladimir-

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

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Всё просто:
    PHP:
    1. <?
    2. $dates = $info['dates'];
    3. $ip = $info['ip'];
    4.  
    5. //Проверка переменной $dates
    6. if (strpos($dates, date("Y.m.d"))===FALSE)
    7. {
    8. //Перезапись в базе переменной $dates на date("Y.m.d") и перезапись переменной $ip на пустую, если $dates не равно date("Y.m.d")
    9. }
    10.  
    11. //Проверка переменной $ip
    12. if (strpos($ip, $_SERVER['REMOTE_ADDR'])===FALSE)
    13. {
    14. //Сценарий + добавление $_SERVER['REMOTE_ADDR'] в конец текста переменной $ip
    15. }
    16. ?>
    Как теперь сделать перезапись переменных (замену даты и ip) ?

    Обновление одной переменной (увеличение числа на 1) :
    PHP:
    1. <?
    2. {
    3. $view = "SELECT * FROM `info` WHERE id='".mysql_real_escape_string($_GET['id'])."'";
    4. $result = mysql_query($view);
    5. $info = mysql_fetch_array($result);
    6.  
    7. //+1 скачивание
    8. $count = "UPDATE info SET download=download+1 WHERE id=$id";
    9. mysql_query ($count);
    10. }
    11. ?>
     
  3. -Vladimir-

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

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Ещё кое-что сам придумал:
    PHP:
    1. <?
    2. //Перезапись даты
    3. $dates = date("Y.m.d");
    4. $count = "UPDATE info SET dates=$dates WHERE id=$id";
    5.  mysql_query ($count);
    6.  
    7. //Перезапись IP (полная)
    8. $ip = " ";
    9. $count = "UPDATE info SET ip=$ip WHERE id=$id";
    10.  mysql_query ($count);
    11.  
    12. //Добавление ip (пробелы - в качестве разделителей)
    13. $ip.=$info[ip]; //Это все предыдущие ip из переменной
    14. $ip.=" ";
    15. $ip.=$_SERVER['REMOTE_ADDR'];
    16. $ip.=" ";
    17. $count = "UPDATE info SET ip=$ip WHERE id=$id";
    18.  mysql_query ($count);
    19. ?>
    Так будет действовать?
     
  4. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Будет, только используй всегда mysql_real_escape_string для параметров передаваемых в запрос.
     
  5. darkgod

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

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    mysql_real_escape_string для текстовых данных, а для цифровых значений int
     
  6. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    darkgod
    дабы не вычислять текстовые данные или не текстовые, int или float, отлично подходит mysql_real_escape_string для любых значений

    Если уж так хочется типизации, то нужно пользоваться MySQLi и stmt->prepare(), stmt->bind_param(), stmt->execute(), stmt->bind_result()