Здравствуйте!!!
Возникла проблема при написании программы на языке "PHP" с использование БД "MYSQL" - счетчик посещений сайта.
Вот код:
<?php
if ($rc=mysql_connect ("localhost", "root", ""))
{
$day=date ("Y-m-d");
mysql_select_db ("B19147");
$tabl="Schetchik";
$mar=mysql_query
("
SELECT *
FROM $tabl
");
$k=mysql_fetch_array ($mar);
$k[Vsego]=$k[Vsego]+1;
if ($day!==$k[Chislo])
{
$k[Chislo]=$day;
$k[Segodna]=1;
}
else
{
$k[Segodna]=$k[Segodna]+1;
}
mysql_query
("
UPD?1?T?1? Schetchik
SET Vsego='$k[Vsego]', Segodna='$k[Segodna]', Chislo='$k[Chislo]'
");
echo
"<table border=2 bordercolor=orange>
<tr>
<td colspan=2 align=center> Посещаемость </td>
</tr>
<tr>
<td align=center> Всего </td>
<td align=center> Сегодня </td>
</tr>
<tr>
<td align=center> $k[Vsego] </td>
<td align=center> $k[Segodna] </td>
</tr>
</table>";
}
else
{
echo "Error!";
}
?>
Проблема в том, что при запуске программы выводятся постоянно одни и те же данные, т.е. всего - 1, сегодня - 1. Ошибок совершенно никаких не вылазит.
Я так понимаю, что подключение к БД происходит, а вот различных манипуляций с этой БД нет (чтение и запись).
Название БД: "B19147". БД содержит всего 1 таблицу: "Schetchik". В этой таблице 3 поля: "Vsego" (тип INT), "Segodna" (тип INT), "Chislo" (тип DATE).
Скажите, пожалуйста, возможные проблемы и пути их устранения...
30 июля 2009 в 15:01
Во-первых. Сразу видна ошибка
Не верно: $k[Vsego]
Верно: $k['Vsego']
потом протестируй всё в phpMyadmin
30 июля 2009 в 16:03
#2.
Сделал, но все по-прежнему!!!
30 июля 2009 в 18:01
Иван, по идее без разницы. Хотя я всегда пишу в кавычках.
Анатолий, у вас в таблице всегда одна запись? Где WHERE?
Посоветую отличный способ отладки запросов к БД. Вместо mysql_query пиши echo, копируй то что выведет и вставляй в phpmyadmin. Там тебе укажут на все ошибки в запросе. Если ошибок нет, значит беда в логике программы
30 июля 2009 в 19:03
а разве параметры myysql_query не должны быть в {} ?
30 июля 2009 в 19:05
$tabl="Schetchik";
$mar=mysql_query
("
SELECT *
FROM $tabl
");
может не заносить в переменную поле с которым работаешь?
30 июля 2009 в 20:03
ой таблицу в смысле.
30 июля 2009 в 20:03
А скачать готовую не пробовал?Зачем изобретать велосипед?Хотя если хочешь то пожалуйста
30 июля 2009 в 23:04
USE test_db;
DR?1?P TABLE IF EXISTS `test_db`.`counter`;
CREATE TABLE`test_db`.`counter` (
`ts` timestamp NOT NULL default CURRENT_TIMESTAMP,
`count` int(10) unsigned NOT NULL,
PRIMARY KEYUSING BTREE (`ts`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Непосредственно сам почасовой счетчик
insert into counter SET `ts`= FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP()/3600)*3600), `count` = 1 ON DUPLICATE KEY UPD?1?T?1? `count` = `count` + 1;
ЗЫ чето некоторые буквы поковеркались…
2 августа 2009 в 15:05
Ребят, что-то никак не получается.
Может кто-нибудь протеститировать этот код?
Если честно, код взят из учебника. В коде ошибок нет, поэтому склоняюсь, что тут дело в чем-то другом, вот только в чем…
Ребят, выручайте!!!
2 августа 2009 в 17:01
Ошибка возникает вот здесь: "$k=mysql_fetch_array ($mar);".