powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (MySQL) Неправильно обновляются поля.
20 сообщений из 20, страница 1 из 1
(MySQL) Неправильно обновляются поля.
    #32960785
McLighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть такая строчка в php скрипте:
Код: plaintext
mysql_query("update counters set last_time='$dates', counter=counter+1 where ip_adr='$ips' and $dates-last_time>10000");
В ней все работает. если условие $dates-last_time>10000 не проходит, запись не обновляется.
Ниже дописал следующее :
Код: plaintext
mysql_query("update counters set last_count='$dates' where ip_adr='$ips'");
В результате кроме поля last_count, всегда обновляется и last_time(что не должно быть, когда условие не проходит), что делать?
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961123
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читать про синтаксис оператора UPDATE?
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961196
McLighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что не правильно то?
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961204
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
McLighterВ результате кроме поля last_count, всегда обновляется и last_time(что не должно быть, когда условие не проходит), что делать?Телепаты в отпуске - структура таблицы?
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961262
McLighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Table counters:

id_counter
ip_adr
last_time
counter
last_count

Пример записей:

1 - идентификатор
192.168.0.5 - varchar
20050315151757 - timestamp
5 - mediumint
20050315151757 - timestamp
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961284
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 McLighter

Дык приведи лучше кусок кода для наглядности...
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961316
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажи реальные запросы, которые идут в mysql
(уточню : покажи именно запросы а не ПХП-код)
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961324
McLighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот код моего злосчастного счетчика. (Он меня уже самого достал!)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?php
//счетчик посещений.
$dates=date('YmdHis', time());
$ips=$REMOTE_ADDR;
$id2=mysql_connect("localhost","root","");
mysql_select_db ("document");

if ( !mysql_num_rows(mysql_query("select ip_adr from counters where ip_adr='$ips'")) ) {
        // то вставляем, новую запись
        mysql_query("insert into counters values ('','$ips','$dates','1','$dates')");
} else {
        // иначе увеличиваем счетчик
        mysql_query("update counters set last_time='$dates', counter=counter+1 where ip_adr='$ips' and $dates-last_time>10000");
        mysql_query("update counters set last_count='$dates' where ip_adr='$ips'");
}

mysql_close($id2);
?>
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961330
McLighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Макс М.покажи реальные запросы, которые идут в mysql
(уточню : покажи именно запросы а не ПХП-код)

Я не з-н-а-ю-ю-ю-ю-ю откуда взять эти запросы!!!!!
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961341
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
McLighter Макс М.покажи реальные запросы, которые идут в mysql
(уточню : покажи именно запросы а не ПХП-код)

Я не з-н-а-ю-ю-ю-ю-ю откуда взять эти запросы!!!!!

Эмоции всегда мешают делу, друг мой!
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961382
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 McLighter

Я так понял, что проблема в этом куске кода:
Код: plaintext
1.
2.
3.
4.
5.
else {
        // иначе увеличиваем счетчик
        mysql_query("update counters set last_time='$dates', counter=counter+1 where ip_adr='$ips' and $dates-last_time>10000");
        mysql_query("update counters set last_count='$dates' where ip_adr='$ips'");
}
Если так, то давай заново, по порядку и спокойно, что как работает и что работает не так, как надо?

А то из поста
" результате кроме поля last_count, всегда обновляется и last_time(что не должно быть, когда условие не проходит), что делать "
не понятно, что вообще должно получится.
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961547
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
McLighter Макс М.покажи реальные запросы, которые идут в mysql
(уточню : покажи именно запросы а не ПХП-код)

Я не з-н-а-ю-ю-ю-ю-ю откуда взять эти запросы!!!!!
ужас
Код: plaintext
1.
2.
$sql = 'UPDATE .....';
echo htmlspecialchars($sql);
mysql_query($sql); 
выполняем скрипт и внимательно смотрим на экран
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961551
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вообще структуры БД не понял и логики соотвественно.
Для чего нужно два поля last_time и last_count, если они апдейтятся одновременно одинм и тем же значением?
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961613
6epkyT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 McLighter

Скоро по вашим постам можно будет вообще восстановить весь ход событий в хронологическом порядке и написать такую же прогу...

P.S> Нельзя ли задавать вопросы поконкретнее и попонятнее (например, описание структуры БД сразу делать, исходные данные, а не потом когда попросят и т.п.)... а то вообще ни":% не понятно, что же все таки требуется, ИМХО.
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32961712
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
McLighterВ результате кроме поля last_count, всегда обновляется и last_time(что не должно быть, когда условие не проходит), что делать?
...
timestamp Читать до полного просветления
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32963263
McLighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу максимально подробно.

Я пишу счетчик. Он считает общее кол-во посещений. Посещения каждого. Кол-во людей на сайте в данное время.

Так как все происходит в локальной сети, идентифицирую пользователей по их статическому IP адресу.

В своем скрипте делаю следущее.
Получаю текущее время(ТВ) и адрес пользователя.
Подключаюсь к базе и проверяю:
1. Адреса пользователя нет - вставляю запись ('','адрес','дата+время','1-число посещений')
2.Пользователь есть - Обновляю запись с его IP, меняю дату+время и число посещений при условии что последнее его посещение было более часа назад(чтоб не накручивали счетчик).

Теперь число посещений для конкретного пользователя вывести легко из базы.
Общее число посещений - это сумма посещений всех пользователей.

Теперь осталось только вывести число тех кто сейчас на сайте.
Это я определяю так:
Те чье последнее время посещения отличается от текущего меньше чем на десять минут есть на сайте, остальных нет.
Но тут проблема из пункта 2. Человек на сайте, активно жмет на ссылки. Его запись не обновляется пока не пройдет час. Следовательно уже через 10 минут скрипт будет считать что человека на сайте нет, что неправда.
Поэтому я и ввел вторую дату одна должна обновляться постоянно. А первая только через час.

Теперь еще раз скрипт:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?php
//счетчик посещений.
$dates=date('YmdHis', time());
$dates2="20001212121212";
$ips=$REMOTE_ADDR;
$id2=mysql_connect("localhost","root","");
mysql_select_db ("document");

if ( !mysql_num_rows(mysql_query("select ip_adr from counters where ip_adr='$ips'")) ) {
        // то вставляем, новую запись
        mysql_query("insert into counters values ('','$ips','$dates','1','$dates')");
} else {
        // иначе увеличиваем счетчик
        mysql_query("update counters set last_time='$dates', counter=counter+1 where ip_adr='$ips' and $dates-last_time>10000");
        mysql_query("update counters set last_count='$dates2' where ip_adr='$ips'");
}

mysql_close($id2);
?>

А это скрипт вывода результата:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?
$id=mysql_connect("localhost","root","");
mysql_select_db("document");

$t1=mysql_query("select sum(counter) from counters");
$sums=mysql_fetch_row($t1);
$t2=mysql_query("select counter from counters where ip_adr='$ips'");
$yoursign=mysql_fetch_row($t2);
$t3=mysql_query("select count(counter) from counters where $dates-last_time<10");
$now=mysql_fetch_row($t3);


mysql_close($id);
?>

<table>
<tr><td height= 5 ><b class="linklight">Всего посещений:<br></td><td><b class="sendtop"><?echo $sums[ 0 ];?></b></td></tr>
<tr><td height= 5 ><b class="linklight">Ваши посещения:<br></td><td><b class="sendtop"><?echo $yoursign[ 0 ];?></b></td></tr>
<tr><td height= 5 ><b class="linklight">Сейчас на сайте:<br></td><td><b class="sendtop"><?echo $now[ 0 ];?></b></td></tr>

</tr>
</table>

Может можно сделать и проще. Но я хочу заставить работать именно эту программу.
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32965319
McLighter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и что?
Описать проблему я описал. А отвечать кто нибудь будет?
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32965375
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
McLighterНу и что?
Описать проблему я описал. А отвечать кто нибудь будет?
кто захочет, тот ответит.
Звездочка тебе в последнем сообщении написал, в чем проблема
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32965602
Comiljou
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Внимательно прочитай идущие ниже строки.


Automatic updating of the first TIMESTAMP column occurs under any of the following conditions:

1 The column is not specified explicitly in an INSERT or LOAD DATA INFILE statement.

2 The column is not specified explicitly in an UPDATE statement and some other column
changes value. (Note that an UPDATE that sets a column to the value it already has
will not cause the TIMESTAMP column to be updated, because if you set a column to its
current value, MySQL ignores the update for efficiency.)

3 You explicitly set the TIMESTAMP column to NULL.
...
Рейтинг: 0 / 0
(MySQL) Неправильно обновляются поля.
    #32965781
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ComiljouВнимательно прочитай идущие ниже строки.


Automatic updating of the first TIMESTAMP column occurs under any of the following conditions:

1 The column is not specified explicitly in an INSERT or LOAD DATA INFILE statement.

2 The column is not specified explicitly in an UPDATE statement and some other column
changes value. (Note that an UPDATE that sets a column to the value it already has
will not cause the TIMESTAMP column to be updated, because if you set a column to its
current value, MySQL ignores the update for efficiency.)

3 You explicitly set the TIMESTAMP column to NULL.
Кстати, НАМ об этой причине твоей приходится догадываться, т.к. структура базы так и не была приведена в удовлетворительном виде. А тебе достаточно было внимательно прочитать документацию.
Это, конечно, адресовано автору вопроса, а не ответа...)
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (MySQL) Неправильно обновляются поля.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]