[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Счетчик просмотров
Dmitrich
Всем привет я уже поднимал ету тему попробую еще может кто нибудь поможет разобратся нашел в интернете как зделать количество просмотров вставил в свой код но вибивает
Цитата
Неверный формат URL запроса

вот код целиком
PHP
<?php

$sql 
= ("SELECT `id`, `title`, `discription` , `data`, `autor`, `view` FROM `legend` ORDER BY id DESC LIMIT $start, $num" );
$result mysql_query($sql) or die (mysql_error() . ' <br />' $sql);
 if(isset(
$id)) /*Проверка*/ 

$view_res mysql_query("SELECT * FROM `legend` WHERE id='$id'"); 
if(!
$view_res /*Проверка*/ 

echo 
"Выборка из базы не прошла!"
exit(
mysql_error());  


if(
mysql_num_rows($view_res) >0 /*проверка*/ 

$myrow_res mysql_fetch_array($view_res); 
$new_view_res $myrow_res["view"] +1/*Увеличиваем количество
просмотров на 1*/ 
$update_res mysql_query("UPDATE `legend` SET
view='$new_view_res' WHERE id='$id'"
);}} 
else{exit(
"Неверный формат URL запроса");} 

 
          if ($result){
 while(
$myrow mysql_fetch_array ($result)){
 
   printf "<table class='ramka1'  width='600' align='centrer'>
               <tr>
                  <td class='data'  width='120'  valign='top' >
              <p class='data'>Автор: %s</p> 
              <p>Дата: %s</p>
     <p>Переглянуто: %s</p>
               </td>
                  <td class='title'><p class='title1'><a  href = 'legend_template.php?id=%s'>%s</a></p>
              <p class='legend_text'>%s</p></td>
            </tr>
               </table>"
,
 
   $myrow ['autor' ],  $myrow 'data' ], $myrow 'view'],  $myrow 'id' ], $myrow 'title' ], $myrow 'discription' ]);


 
 }

    }

    
 




Спустя 1 час, 22 минуты, 8 секунд (14.06.2009 - 15:41) freed-master написал(а):
А что присваивается переменной $id?

Спустя 1 час, 33 минуты, 16 секунд (14.06.2009 - 17:14) Dmitrich написал(а):
Цитата
$update_res = mysql_query("UPDATE `legend` SET
view='$new_view_res' WHERE id='$id'");}}



я понимаю что ето обновление таблици но я не понимаю там надо
присвоить новую переменую?

Спустя 2 часа, 56 минут, 10 секунд (14.06.2009 - 20:10) freed-master написал(а):
PHP
if (mysql_num_rows($view_res) >0// Если количество рядов результата запроса больше нуля выолнить 
{ ..... }
else  
// Иначе:
{ exit ("Неверный формат URL запроса");}

Очевидно количество рядов результата запроса равно нулю.
Цитата
там надо присвоить новую переменую?

Там надо присвоить правильную переменную.

Спустя 42 минуты, 46 секунд (14.06.2009 - 20:53) Dmitrich написал(а):
freed-master ты меня извини но я php только учу и немогу сказать что за переменая должна бить

Спустя 1 час, 41 минута, 20 секунд (14.06.2009 - 22:34) freed-master написал(а):
Да я вобщем-то тоже далеко не профи... вот пытаюсь разбираться... кстати себе на днях тоже написал скриптик подобный счетчик...

В начале надо определиться что он должен считать, например количество посетителей сайта в целом или отдельных страниц.

Спустя 52 минуты, 40 секунд (14.06.2009 - 23:27) Dmitrich написал(а):
количество посетителей отдельной статьи

Спустя 9 часов, 22 минуты, 34 секунды (15.06.2009 - 08:49) glock18 написал(а):
Насколько я понял, вам придется вручную добавить запись в таблицу для каждой вашей статьи.

Я имею ввиду - запись с нулем посетителей, чтобы потом она увеличивалась.

Это очень не гуд. В том месте где у вас выводится ошибка, правильнее было бы делать INSERT запрос. А еще лучше использовать запрос типа INSERT ... UPDATE ON DUPLICATE вместо всего того, что вы там намешали.

Спустя 40 минут, 39 секунд (15.06.2009 - 09:30) freed-master написал(а):
Цитата
количество посетителей отдельной статьи
Значит у каждой статьи должен быть свой уникальный номер!

Статьи хранятся в БД или это статические страницы?

Спустя 25 минут, 59 секунд (15.06.2009 - 09:56) Dmitrich написал(а):
freed-master, статья хранится в БД

Спустя 1 минута, 37 секунд (15.06.2009 - 09:58) Dmitrich написал(а):
glock18, я что-то тебя не понял как вручную я смотрел уроки в интернете там всьо виводилось одним кодом

Спустя 5 минут, 58 секунд (15.06.2009 - 10:03) freed-master написал(а):
Dmitrich, предлагаю забыть приведенный вами скрипт и написать самому, я постараюсь помочь...

Спустя 2 минуты, 35 секунд (15.06.2009 - 10:06) freed-master написал(а):
статьям в БД уже присвоины уникальные значения (id)? если да то содержат ли они быквы или только цифры?

Спустя 26 минут, 12 секунд (15.06.2009 - 10:32) Kuliev написал(а):
Цитата (Dmitrich @ 15.06.2009 - 11:58)
glock18, я что-то тебя не понял как вручную я смотрел уроки в интернете там всьо виводилось одним кодом

Я так полагаю что вы смотрели видео уроки Е. Попова laugh.gif biggrin.gif laugh.gif

Спустя 25 минут, 27 секунд (15.06.2009 - 10:58) Dmitrich написал(а):
Kuliev, я теперь даже если смотрю Попова то потом еще ищу уроки ето не по Попову вот сылка http://renak.ru/view_post.php?id=49

Спустя 3 минуты, 37 секунд (15.06.2009 - 11:01) Dmitrich написал(а):
freed-master, если только можна взять за основу етот урок и написать коди под себя

Спустя 49 минут, 55 секунд (15.06.2009 - 11:51) glock18 написал(а):
Цитата (Kuliev @ 15.06.2009 - 07:32)
Цитата (Dmitrich @ 15.06.2009 - 11:58)
glock18, я что-то тебя не понял как вручную я смотрел уроки в интернете там всьо виводилось одним кодом

Я так полагаю что вы смотрели видео уроки Е. Попова laugh.gif biggrin.gif laugh.gif

Да-да!! Я тоже так подумал. Однако, это его последник biggrin.gif

Спустя 1 минута, 19 секунд (15.06.2009 - 11:53) glock18 написал(а):
Dmitrich
загляни сюда: http://phpforum.ru/index.php?showtopic=17238

там как раз только-только разобрали эту тему. чтобы не повторяться

Спустя 34 минуты, 49 секунд (15.06.2009 - 12:27) Dmitrich написал(а):
Спасибо конечно всем за совети но я уже немного запутался
Цитата
if(isset($id))
{$view= mysql_query ("SELECT * FROM `legend` WHERE id=`$id`");
if(mysql_num_rows($view)>0

$myrow1=mysql_fetch_array($view);
$new_view=$myrow1[`view`]+1;
$update=mysql_query ("UPDATE `legend` SET
view='$new_view' WHERE id='$id'");
}

}

если есть переменая id
витаскиваем с БД таблицу legend где id=`$id`
потом проверяем если переменая view>o
помещаем ее в масив
и присваеваем новую переменую +1
и обновляем таблицу
я понимаю что может что-то неправильно но я пробую понять
как писать код поскольку все уроки я понял и Попова и его наследника мне сказали фуфло но как тогда разобратся извините что напрягаю

Спустя 1 час, 33 минуты, 54 секунды (15.06.2009 - 14:01) glock18 написал(а):
потом проверяем если переменая view>o проверяем получили ли мы из базы данных хоть одну запись.

помещаем ее в масив получаем одну строку из результата запроса в качестве массива.

и присваеваем новую переменую +1 - почти так

Исходя из вашего описания - выбросьте эти уроки куда-подальше. Изучение php по мануалу гораздо результативней, чем по этим урокам, поверьте.

Очень советую посмотреть предложенную мной ранее ссылку - там задача один-в-один.

Спустя 41 минута, 39 секунд (15.06.2009 - 14:43) Fedot написал(а):
Ребята а зачем вы так страсно хотите сначала получить количество просмотров?
Этого можно и не делать вовсе.
Меняете запрос на:
Код
UPDATE `legend` SET view = view+1 WHERE id=$id

И не надо никаких лишних переменных и запросов.

Спустя 12 минут, 46 секунд (15.06.2009 - 14:56) freed-master написал(а):
Цитата
выбросьте эти уроки куда-подальше. Изучение php по мануалу гораздо результативней, чем по этим урокам, поверьте.
Поддерживаю, хотя в этом есть свои минусы; порой чтоб разобраться с определенной задачей возможно прейдется перерыть весь мануал, а это займет много времени.

Я сейчас тоже только осваиваю php; на форуме это делать легче. Возникла конкретная задача - спросил у людей - получил ответы, даже если не конкретные то подсказали направление в котором "копать", в таком случае перерывать не весь мануал, а только его часть...
Цитата
Очень советую посмотреть предложенную мной ранее ссылку
Действительно и описано нормально... Вот только я бы добавил одну деталь:
PHP
$id = isset($_GET['id'])?$_GET['id']:null;

Спустя 3 минуты, 33 секунды (15.06.2009 - 14:59) glock18 написал(а):
Fedot, хотят потому что не знают о существовании INSERT ... UPDATE ON DUPLICATE...

Если не использовать его, то ваш запрос тоже не очень подходит, потому что он не гарантирует, что изменения будут внесены.

Спустя 47 минут, 54 секунды (15.06.2009 - 15:47) Dmitrich написал(а):
Kuliev, подказал код еще раньше
Цитата
if (isset($_GET['id']))
{
  $sql = ("UPDATE `legend` SET `view`=`view`+1 WHERE `id` = '".intval($_GET['id'])."'");
  $result = mysql_query ($sql) or die (mysql_error() ."\n<br>\n".$sql);
}

ошибка не выбивает но ничево и не считает в чем проблема

Спустя 20 минут, 53 секунды (15.06.2009 - 16:08) glock18 написал(а):
Dmitrich
mad.gif используйте либо
1. INSERT ... UPDATE ON DUPLICATE - одна строка - все решение.
либо
2. связку SELECT - INSERT - UPDATE - строк больше - работает медленнее, зато некоторым нравится, что не надо изучать INSERT ... UPDATE ON DUPLICATE.

У вас на 2/3 реализован 2 вариант, а именно пропущен INSERT.

Если еще непонятно, то UPDATE переводится "обновить". А обновляет он существующие ряды. Если записи нет в базе, то а физически не может быть обновлена... Чтобы она там появилась, можно INSERT использовать.

Теперь понятно?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.