singlepost

Разработка счетчика посещений на языках "PHP + MYSQL" << На главную или назад  

Здравствуйте!!!
Возникла проблема при написании программы на языке "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).
Скажите, пожалуйста, возможные проблемы и пути их устранения...

18 ответов в теме “Разработка счетчика посещений на языках "PHP + MYSQL"”

Страницы: [1] 2 »

  1. 1
    Иван Волынкин ответил:

    Во-первых. Сразу видна ошибка
    Не верно: $k[Vsego]
    Верно: $k['Vsego']
    потом протестируй всё в phpMyadmin

  2. 2
    Анатолий Дмитриев ответил:

    #2.
    Сделал, но все по-прежнему!!!

  3. 3
    Владимир Муромский ответил:

    Иван, по идее без разницы. Хотя я всегда пишу в кавычках.

    Анатолий, у вас в таблице всегда одна запись? Где WHERE?
    Посоветую отличный способ отладки запросов к БД. Вместо mysql_query пиши echo, копируй то что выведет и вставляй в phpmyadmin. Там тебе укажут на все ошибки в запросе. Если ошибок нет, значит беда в логике программы

  4. 4
    Woollen Sock ответил:

    а разве параметры myysql_query не должны быть в {} ?

  5. 5
    Woollen Sock ответил:

    $tabl="Schetchik";
    $mar=mysql_query
    ("
    SELECT *
    FROM $tabl
    ");

    может не заносить в переменную поле с которым работаешь?

  6. 6
    Woollen Sock ответил:

    ой таблицу в смысле.

  7. 7
    Paul Mort ответил:

    А скачать готовую не пробовал?Зачем изобретать велосипед?Хотя если хочешь то пожалуйста

  8. 8
    Валерий Кожевников ответил:

    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;

    ЗЫ чето некоторые буквы поковеркались…

  9. 9
    Анатолий Дмитриев ответил:

    Ребят, что-то никак не получается.
    Может кто-нибудь протеститировать этот код?
    Если честно, код взят из учебника. В коде ошибок нет, поэтому склоняюсь, что тут дело в чем-то другом, вот только в чем…
    Ребят, выручайте!!!

  10. 10
    Анатолий Дмитриев ответил:

    Ошибка возникает вот здесь: "$k=mysql_fetch_array ($mar);".

Страницы: [1] 2 »

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.