| |
|
|
| | Добрый день. У меня есть скрипт для счётчика просмотра (какое кол-во раз посмотрели статью). Выглядит он вот так:
<?
$my->sql_query="select * from path where id='".@$_REQUEST['id']."'";
$my->sql_execute();
$coun_num='0';
if (@mysql_num_rows($my->sql_res)!=0)
{
while ($element1 = mysql_fetch_array($my->sql_res)) {
$coun_num=$element1['counts'];
$coun_num++;
$keys=$element1['keys'];
$my->sql_query="Update `path` set `counts`='".$coun_num."' where `keys`='".$keys."'";
$my->sql_execute();
}
}
?>
|
Работает на уро и без ошибок, всё счетает, каждый клик.
Прочитал на сайте мускула, что можно оптимизировать подобный код, вот таким образом:
<?
$my->sql_query="select * from path where id='".addslashes(htmlspecialchars(@$_REQUEST['id']))."'";
$my->sql_execute();
if (@mysql_num_rows($my->sql_res)!=0)
{
while ($element1 = mysql_fetch_array($my->sql_res)) {
$keys=$element1['keys'];
}
$my->sql_query="Update `path` set counts=counts+1 where `keys`='".$keys."'";
$my->sql_execute();
}
?>
|
Мол подобный вид, будет намного быстрее! На счёт скорости, сказать не могу, но вот точто он перестал считать половину кликов, это точно!
В чём косяк? | |
| |
|
|
| |
автор: Serrrgio (07.12.2006 в 12:59) |
|
| |
для: Diablo_
(07.12.2006 в 12:30)
| | | нужно почитать про безопасные запросы в мускул, про htmlspecialchars и addslashes, последние тут вообще не нужны.
если поле id в таблице path уникальное, то ваша задача решается в 2 строчки:
$my->sql_query="UPDATE path SET counts=counts+1 WHERE id='".intval(@$_REQUEST['id'])."'";
$my->sql_execute();
|
| |
| |
|
|
| |
|
|
| |
для: Serrrgio
(07.12.2006 в 12:59)
| | | поле id, не уникальное!
А вот keys да уникум | |
| |
|
|
| |
автор: Serrrgio (07.12.2006 в 13:11) |
|
| |
для: Diablo_
(07.12.2006 в 12:30)
| | | тогда в вашем последнем скрипте вместо
$my->sql_query="select * from path where id='".addslashes(htmlspecialchars(@$_REQUEST['id']))."'";
написать
$my->sql_query="select * from path where id='".intval(@$_REQUEST['id'])."'";
надеюсь поле id имеет тип integer? | |
| |
|
|
| |
|
|
| |
для: Serrrgio
(07.12.2006 в 13:11)
| | | нет, не int оно может быть и буквенным
Но проблема в том, что он не все клики считает!!!
И я не понимаю почему! | |
| |
|
|
| |
автор: Serrrgio (07.12.2006 в 13:34) |
|
| |
для: Diablo_
(07.12.2006 в 13:16)
| | | а что вобще находится в id? | |
| |
|
|
| |
|
|
| |
для: Serrrgio
(07.12.2006 в 13:34)
| | | имя страницы!
например forum_page | |
| |
|
|
| |
автор: Serrrgio (07.12.2006 в 15:31) |
|
| |
для: Diablo_
(07.12.2006 в 12:30)
| | | тогда может так заработает?
<?
$id=addslashes((get_magic_quotes_gpc()) ? stripslashes(@$_REQUEST['id']) : @$_REQUEST['id']);
$my->sql_query="select * from path where id='$id'";
$my->sql_execute();
if (@mysql_num_rows($my->sql_res)!=0)
{
while ($element1 = mysql_fetch_array($my->sql_res)) {
$keys=$element1['keys'];
}
$my->sql_query="Update `path` set counts=counts+1 where `keys`='".$keys."'";
$my->sql_execute();
}
?>
|
покажите ваш сайт pls | |
| |
|
|
| |
|
|
| |
для: Serrrgio
(07.12.2006 в 15:31)
| | | Да нет, он и до этого работал, но не все клики считал! То через раз то ещё как то! | |
| |
|
|
| |
|
|
| |
для: Diablo_
(07.12.2006 в 15:47)
| | | Ошибка была каварная!!!:)
Обратите внимание, в первом посте на два кода, особое внимание на ФИГУРНЫЕ СКОБКИ!
Всем спасибо! | |
| |
|
|