Как через update для каждого id изменялся count +1 при просмотре страницы ???
Подскажите пожалуйста....
Спустя 23 минуты, 56 секунд (23.08.2011 - 12:33) neadekvat написал(а):
1. Запрос простой: "UPDATE tbl SET count = count + 1".
2. По архитектуре есть вопрос. Если в основной таблице хранятся редкоизменяемые значения (добавили инфу и на века), то динамичные поля типа "просмотров" лучше выносить в отдельную таблицу:
views
obj_id | views
где obj_id - это id объявления в основной таблице, views - количество просмотров.
И тут либо при добавлении объявления создавать соответствующую строку в таблице views, либо использовать запрос, который будет при просмотре страницы пытаться добавить новую строку, и если она существует - просто увеличивать значение:
2. По архитектуре есть вопрос. Если в основной таблице хранятся редкоизменяемые значения (добавили инфу и на века), то динамичные поля типа "просмотров" лучше выносить в отдельную таблицу:
views
obj_id | views
где obj_id - это id объявления в основной таблице, views - количество просмотров.
И тут либо при добавлении объявления создавать соответствующую строку в таблице views, либо использовать запрос, который будет при просмотре страницы пытаться добавить новую строку, и если она существует - просто увеличивать значение:
INSERT INTO tbl (obj_id, views) VALUES ($obj_id, 1)
ON DUPLICATE KEY UPDATE views = views + 1
Спустя 28 минут, 56 секунд (23.08.2011 - 13:02) Дэмегус написал(а):
Спасибо большое за ответ, но если честно чуть чуть дуболом.
Если я правильно понял, то как вы сказали, я могу спокойно добавлять строку в имеющуюся таблицу, так как она не прерывно обновляется(редактируется), то фотографии меняются, то информация, ок я добавил строку count, что мне дальше делать?
Вот как я пишу, и правильно ли я пишу?
mysql_qw(
'UPDATE houses SET count=count+1
WHERE id='.$house.') - здесь я пишу запрос на изменение строки коунт+1 при условии отображении id
а далее в тексте я уже вставляю <?php echo $data[$i]['count']?> для отображения самого counta......
Было бы не плохо мне полностью подсказать как правильно написать.....извините за напряг.
Если я правильно понял, то как вы сказали, я могу спокойно добавлять строку в имеющуюся таблицу, так как она не прерывно обновляется(редактируется), то фотографии меняются, то информация, ок я добавил строку count, что мне дальше делать?
Вот как я пишу, и правильно ли я пишу?
mysql_qw(
'UPDATE houses SET count=count+1
WHERE id='.$house.') - здесь я пишу запрос на изменение строки коунт+1 при условии отображении id
а далее в тексте я уже вставляю <?php echo $data[$i]['count']?> для отображения самого counta......
Было бы не плохо мне полностью подсказать как правильно написать.....извините за напряг.
Спустя 3 минуты, 4 секунды (23.08.2011 - 13:05) neadekvat написал(а):
Запрос почти верный. Ошибка, по-моему, в синтаксисе самого php - правильно ли там кавычки расставлены?
А уж вывод - это у каждого свое, как я тут могу что-то подсказать.
А уж вывод - это у каждого свое, как я тут могу что-то подсказать.
Спустя 9 минут, 40 секунд (23.08.2011 - 13:15) Дэмегус написал(а):
Нашел в интернете этот код:
Вы бы не мог бы кто подсказать, что тут делает и желательно в подробностях.....
if (isset($_GET['id'])) $id = $_GET['id'];
$result = mysql_query("SELECT *
FROM `houses`
WHERE id=".(int)$id,$db);
$new_counter = (int)$myrow["counter"]+1;
$update = mysql_query("UPDATE `houses`
SET counter=".(int)$new_counter."
WHERE id=".(int)$id);
Вы бы не мог бы кто подсказать, что тут делает и желательно в подробностях.....
Спустя 1 минута, 13 секунд (23.08.2011 - 13:16) neadekvat написал(а):
Ясно. Думать ты не хочешь.
Удачи.
Удачи.
Спустя 41 минута, 50 секунд (23.08.2011 - 13:58) inpost написал(а):
Дэмегус
Тут добавляет +1 к просмотрам...
Тут добавляет +1 к просмотрам...
Спустя 26 минут, 28 секунд (23.08.2011 - 14:24) Дэмегус написал(а):
neadekvat
Вы правы. Голова уже болит думать......
Есть еще один вопрос
Осталось теперь написать их вывод!?
??? <?php echo $pt;?> Вот так? не получается....
Вы правы. Голова уже болит думать......
Есть еще один вопрос
$pt = mysql_query('SELECT COUNT(brand) FROM houses where brand="Hyundai"');
Осталось теперь написать их вывод!?
??? <?php echo $pt;?> Вот так? не получается....
Спустя 48 секунд (23.08.2011 - 14:25) killer8080 написал(а):
Дэмегус
кривой код, откуда берётся $myrow["counter"]? Как минимум после query должен быть fetch_assoc.
а вообще смысл делать несколько запросов, когда можно делать инкремент одним запросом.
кривой код, откуда берётся $myrow["counter"]? Как минимум после query должен быть fetch_assoc.
if (isset($_GET['id'])) $id = $_GET['id'];
$result = mysql_query("SELECT *
FROM `houses`
WHERE id=".(int)$id,$db);
$myrow = mysql_fetch_assoc($result);
$new_counter = (int)$myrow["counter"]+1;
$update = mysql_query("UPDATE `houses`
SET counter=".(int)$new_counter."
WHERE id=".(int)$id);
а вообще смысл делать несколько запросов, когда можно делать инкремент одним запросом.
Спустя 3 минуты, 58 секунд (23.08.2011 - 14:29) killer8080 написал(а):
Цитата (Дэмегус @ 23.08.2011 - 14:24) |
??? <?php echo $pt;?> Вот так? не получается.... |
и не получиться
нужно так
$pt = mysql_fetch_assoc(mysql_query("SELECT COUNT(brand) AS `cnt` FROM houses where brand='Hyundai'"));
$pt = $pt['cnt'];
или
$pt = mysql_num_rows(mysql_query("SELECT * FROM houses where brand='Hyundai'"));
Спустя 3 минуты, 6 секунд (23.08.2011 - 14:32) inpost написал(а):
$pt = mysql_query("SELECT COUNT(`brand`) AS `cnt` FROM `houses` WHERE `brand`='Hyundai'");
// Вариант №1
$res = mysql_fetch_assoc($pt);
echo $res['cnt'];
// Вариант №2
$cnt = mysql_result($pt,0);
echo $cnt;
Спустя 1 минута, 28 секунд (23.08.2011 - 14:33) Дэмегус написал(а):
Киллер ВЫ МОЙ ГЕРОЙ!!!! хоть я и мужик, но ОГРОМНОЕ ВАМ СПАСИБО!!!
Спустя 4 минуты, 9 секунд (23.08.2011 - 14:38) inpost написал(а):
Дэмегус
А как же я? Я тебе 2 наиболее правильных варианта предложил В отличии от второго варианта, который предложил Киллер...
А как же я? Я тебе 2 наиболее правильных варианта предложил В отличии от второго варианта, который предложил Киллер...
Спустя 2 минуты, 6 секунд (23.08.2011 - 14:40) Дэмегус написал(а):
Inpost и вам большое спасибо!!!!
Осталось теперь разобраться с количеством просмотров страниц
Осталось теперь разобраться с количеством просмотров страниц
Спустя 1 час, 29 минут, 45 секунд (23.08.2011 - 16:09) Дэмегус написал(а):
Цитата (killer8080 @ 23.08.2011 - 11:25) |
Дэмегус кривой код, откуда берётся $myrow["counter"]? Как минимум после query должен быть fetch_assoc. if (isset($_GET['id'])) $id = $_GET['id']; а вообще смысл делать несколько запросов, когда можно делать инкремент одним запросом. |
Killer у меня тупняк...
Вот и я хочу привести к минимуму, вообще не пойму зачем эти строчки нужны?
if (isset($_GET['id'])) $id = $_GET['id'];
$result = mysql_query("SELECT *
FROM `houses`
WHERE id=".(int)$id,$db);
Не могли бы вы привести короче строчки, без всяких там подключений к базе...заранее спасибо
Спустя 3 часа, 59 минут, 33 секунды (23.08.2011 - 20:09) inpost написал(а):
Дэмегус
А как будет в БД храниться данные, если ты не будешь подключаться к БД и вносить записи?
А как будет в БД храниться данные, если ты не будешь подключаться к БД и вносить записи?
Спустя 12 часов, 16 минут, 3 секунды (24.08.2011 - 08:25) Дэмегус написал(а):
inpost
Я сегодня проснулся, ехал в маршрутке и обдумывал все, что писалось в этой теме, и только потом осознал, что написал ахинею по поводу не подключения к базе. Почти всю суть я понял. Сейчас буду сидеть и ломать себе ученику голову, если что обязательно здесь отпишусь что я и да как сделал или не сделал. Спасибо большое.
Я сегодня проснулся, ехал в маршрутке и обдумывал все, что писалось в этой теме, и только потом осознал, что написал ахинею по поводу не подключения к базе. Почти всю суть я понял. Сейчас буду сидеть и ломать себе ученику голову, если что обязательно здесь отпишусь что я и да как сделал или не сделал. Спасибо большое.
Спустя 16 минут, 11 секунд (24.08.2011 - 08:41) inpost написал(а):
Дэмегус
Не вопрос. Приходи, будем ждать
Не вопрос. Приходи, будем ждать
Спустя 26 минут, 1 секунда (24.08.2011 - 09:07) Дэмегус написал(а):
И так:
Вставил
Далее вывод результата:
Что происходит:
При каждом обновлении любой страницы прибавляется +1, получается на каждой странице одинаковые значения, посмотрел в базе, получается +1 прибавляется в строке id=0 =(((.....Как сделать чтобы не для 0 только прибавлялся +1, а +1 прибавлялся к тем id, которые открыли пользователи
Пример index.php?house=1308573064, где 1308573064 является id.
Вставил
include 'db.php';
if (isset($_GET['id'])) $id = $_GET['id'];
$result = mysql_query("SELECT *
FROM `houses`
WHERE id=".(int)$id,$db);
$myrow = mysql_fetch_assoc($result);
$new_counter = (int)$myrow["counter"]+1;
$update = mysql_query("UPDATE `houses`
SET counter=".(int)$new_counter."
WHERE id=".(int)$id);
Далее вывод результата:
<?php echo (int)$myrow['counter']?>
Что происходит:
При каждом обновлении любой страницы прибавляется +1, получается на каждой странице одинаковые значения, посмотрел в базе, получается +1 прибавляется в строке id=0 =(((.....Как сделать чтобы не для 0 только прибавлялся +1, а +1 прибавлялся к тем id, которые открыли пользователи
Пример index.php?house=1308573064, где 1308573064 является id.
Спустя 2 минуты, 27 секунд (24.08.2011 - 09:10) inpost написал(а):
Дэмегус
if (isset($_GET['id'])) $id = $_GET['id']; - Что значит эта строчка? Почему у нас записано именно $_GET['id']?
if (isset($_GET['id'])) $id = $_GET['id']; - Что значит эта строчка? Почему у нас записано именно $_GET['id']?
Спустя 8 минут, 18 секунд (24.08.2011 - 09:18) Дэмегус написал(а):
Цитата (inpost @ 24.08.2011 - 06:10) |
Дэмегус if (isset($_GET['id'])) $id = $_GET['id']; - Что значит эта строчка? Почему у нас записано именно $_GET['id']? |
Я так понял, что $_GET['id'] должен выбрать id открытой страницы.....
Спустя 4 минуты, 45 секунд (24.08.2011 - 09:23) inpost написал(а):
Дэмегус
http://www.linedmk.com/page54.html . Читай, если до сих пор не понял, дам другую ссылку
http://www.linedmk.com/page54.html . Читай, если до сих пор не понял, дам другую ссылку
Спустя 15 минут, 5 секунд (24.08.2011 - 09:38) Дэмегус написал(а):
Inpost, вы настоящий учитель!!! Спасибо вам большое, разобрался, заменил id на house все работает, так как нужно!
if (isset($_GET['house'])) $id = $_GET['house'];
Спустя 3 минуты, 10 секунд (24.08.2011 - 09:41) Дэмегус написал(а):
А привязать ip адреса смотрящих объявление в сутки, выполнить сложно? что нужно сделать?
Спустя 49 минут, 58 секунд (24.08.2011 - 10:31) killer8080 написал(а):
Цитата (Дэмегус @ 24.08.2011 - 09:41) |
А привязать ip адреса смотрящих объявление в сутки, выполнить сложно? что нужно сделать? |
Нужно создать отдельную таблицу, и в ней фиксировать все хиты. Примерно такого вида
CREATE TABLE `hits` (и соответственно фиксировать хиты при заходе на страницу
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT ,
`obj_id` INT UNSIGNED NOT NULL ,
`ip` INT UNSIGNED NOT NULL ,
`time` TIMESTAMP DEFAULT NOW( ) NOT NULL ,
PRIMARY KEY ( `id` )
)
mysql_query("INSERT INTO `hits` (`obj_id`, `ip`) VALUES (".(int)$_GET['house'].", INET_ATON('".$_SERVER['REMOTE_ADDR']."'))");
Но учти что под одним IP может сидеть много юзеров :)
Спустя 7 минут, 24 секунды (24.08.2011 - 10:38) inpost написал(а):
Дэмегус
Расширю ответ Киллера, IP ведётся исключительно для внутренней статистики, чтобы контролировать и анализировать рекламную политику сайтов, в основном.
Ничего делать с данными нельзя, просто хранить как отчет или как статистику.
Расширю ответ Киллера, IP ведётся исключительно для внутренней статистики, чтобы контролировать и анализировать рекламную политику сайтов, в основном.
Ничего делать с данными нельзя, просто хранить как отчет или как статистику.
Спустя 23 часа, 7 минут, 7 секунд (25.08.2011 - 09:45) Дэмегус написал(а):
Спасибо ребят!)