Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (MySQL) Неправильно обновляются поля. / 20 сообщений из 20, страница 1 из 1
15.03.2005, 13:53
    #32960785
McLighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
У меня есть такая строчка в 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
15.03.2005, 15:22
    #32961123
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
Читать про синтаксис оператора UPDATE?
...
Рейтинг: 0 / 0
15.03.2005, 15:40
    #32961196
McLighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
А что не правильно то?
...
Рейтинг: 0 / 0
15.03.2005, 15:42
    #32961204
*
*
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
McLighterВ результате кроме поля last_count, всегда обновляется и last_time(что не должно быть, когда условие не проходит), что делать?Телепаты в отпуске - структура таблицы?
...
Рейтинг: 0 / 0
15.03.2005, 15:56
    #32961262
McLighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
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
15.03.2005, 16:01
    #32961284
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
2 McLighter

Дык приведи лучше кусок кода для наглядности...
...
Рейтинг: 0 / 0
15.03.2005, 16:08
    #32961316
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
покажи реальные запросы, которые идут в mysql
(уточню : покажи именно запросы а не ПХП-код)
...
Рейтинг: 0 / 0
15.03.2005, 16:10
    #32961324
McLighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
Вот код моего злосчастного счетчика. (Он меня уже самого достал!)
Код: 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
15.03.2005, 16:12
    #32961330
McLighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
Макс М.покажи реальные запросы, которые идут в mysql
(уточню : покажи именно запросы а не ПХП-код)

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

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

Эмоции всегда мешают делу, друг мой!
...
Рейтинг: 0 / 0
15.03.2005, 16:22
    #32961382
Berkut
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
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
15.03.2005, 17:13
    #32961547
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
McLighter Макс М.покажи реальные запросы, которые идут в mysql
(уточню : покажи именно запросы а не ПХП-код)

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

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

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

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

Так как все происходит в локальной сети, идентифицирую пользователей по их статическому 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
17.03.2005, 11:22
    #32965319
McLighter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
Ну и что?
Описать проблему я описал. А отвечать кто нибудь будет?
...
Рейтинг: 0 / 0
17.03.2005, 11:36
    #32965375
Макс М.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
McLighterНу и что?
Описать проблему я описал. А отвечать кто нибудь будет?
кто захочет, тот ответит.
Звездочка тебе в последнем сообщении написал, в чем проблема
...
Рейтинг: 0 / 0
17.03.2005, 12:41
    #32965602
Comiljou
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
Внимательно прочитай идущие ниже строки.


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
17.03.2005, 13:24
    #32965781
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(MySQL) Неправильно обновляются поля.
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
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (MySQL) Неправильно обновляются поля. / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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