Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Счётчик просмотров
 
 автор: Golovastik   (29.09.2010 в 00:56)   письмо автору
40.4 Кб
 
 

Хочу сделать счётчик просмотров, есть описание и ссылка на подробности и от того сколько нажата ссылка на подробности такое кол-во раз и увеличивать счётчик, только не на странице подробности, а на странице в которой находится ссылка на подробности,то есть как здесь например.

Написал так, но обновление идёт сразу на всех постах находящихся на странице, а не на
тех на которых нажал на кнопку подробнее зашёл на этот пост.

//Вывод постов
for($i = 0; $i < $num; $i++)  
{  
$prosmotrov = mysql_query("select * FROM lessons",$connect);
$rez = mysql_fetch_array($prosmotrov);
$enlarge = $rez['obnovlenie']+1;
$obnovlenie_rez = mysql_query("UPDATE lessons set obnovlenie = '$enlarge' where  id = id ");
echo 'Просмотров: '.$enlarge;

if(isset($postrow[$i]['id'])) echo  '&nbsp;'.$postrow[$i]['text'].'<br/>';

}  

  Ответить  
 
 автор: Slo_Nik   (29.09.2010 в 11:29)   письмо автору
 
   для: Golovastik   (29.09.2010 в 00:56)
 

не понятен смысл применения цикла for, а тем более, зачем делать запросы к базе в цикле?
откуда берётся переменная id ? у Вас случаем register_globals не ON? откуда Вы берете $postrow, $num ?

  Ответить  
 
 автор: akmal   (29.09.2010 в 15:00)   письмо автору
 
   для: Golovastik   (29.09.2010 в 00:56)
 

Вот так на мой взгляд должно получится:
$prosmotrov = mysql_query("SELECT * FROM lessons"); 
$rez = mysql_fetch_array($prosmotrov); 
$enlarge = $rez['obnovlenie']+1; 
$obnovlenie_rez = mysql_query("UPDATE lessons SET obnovlenie = '$enlarge' where  id = '$id' "); 
echo 'Просмотров: '.$enlarge;

  Ответить  
 
 автор: neadekvat   (29.09.2010 в 15:05)   письмо автору
 
   для: Golovastik   (29.09.2010 в 00:56)
 

UPDATE lessons SET obnovlenie = obnovlenie + 1 WHERE id = $id

  Ответить  
 
 автор: Golovastik   (29.09.2010 в 16:14)   письмо автору
 
   для: neadekvat   (29.09.2010 в 15:05)
 

Написал так:
//Вывод постов
for($i = 0; $i < $num; $i++)  
{  
$prosmotrov = mysql_query("select * FROM lessons",$connect);
$rez = mysql_fetch_array($prosmotrov);

mysql_query('UPDATE `lessons` SET `obnovlenie` = `obnovlenie`+1 WHERE  `id`='.$id);
echo 'Просмотров: '.$enlarge;
if(isset($postrow[$i]['id'])) echo  '&nbsp;'.$postrow[$i]['text'].'<br/>';
}


Выдаёт:

Notice: Undefined variable: id in z:\home\sitik.ru\www\blocks\kontent.php on line 42
[Денвер: показать возможную причину ошибки]
Notice: Undefined variable: enlarge in z:\home\sitik.ru\www\blocks\kontent.php on line 43
А как тогда?

  Ответить  
 
 автор: akmal   (29.09.2010 в 16:18)   письмо автору
 
   для: Golovastik   (29.09.2010 в 16:14)
 

У вас идентефекатор(id) заметки в какой переменной?

  Ответить  
 
 автор: Golovastik   (29.09.2010 в 16:19)   письмо автору
 
   для: akmal   (29.09.2010 в 16:18)
 

У меня ни в какой, у меня в базе данных просто поле называется id с первичным ключом,что прописать где нужно в моём случаи?

  Ответить  
 
 автор: akmal   (29.09.2010 в 16:21)   письмо автору
 
   для: Golovastik   (29.09.2010 в 16:19)
 

А как вы тогда заметку вытаскиваете?

  Ответить  
 
 автор: akmal   (29.09.2010 в 16:23)   письмо автору
 
   для: akmal   (29.09.2010 в 16:21)
 

Весь код дайте

  Ответить  
 
 автор: Golovastik   (29.09.2010 в 16:50)   письмо автору
96.5 Кб
 
   для: akmal   (29.09.2010 в 16:23)
 

Вот вложил архивом.

  Ответить  
 
 автор: akmal   (29.09.2010 в 17:19)   письмо автору
 
   для: Golovastik   (29.09.2010 в 16:50)
 

Извините, но я так ничего и непонял....
Вы даете запрос на уроки:
$prosmotrov = mysql_query("select * FROM lessons",$connect);
$rez = mysql_fetch_array($prosmotrov);

После чего добавляете +1 просмотр, не показав саму заметку....

  Ответить  
 
 автор: Golovastik   (29.09.2010 в 17:44)   письмо автору
 
   для: akmal   (29.09.2010 в 17:19)
 

Пост №1
Назв. урока

Описание

Количество просмотров 0 Подробнее

_____________________________________________
Пост №2
Назв. урока

Описание

Количество просмотров 0 Подробнее
_____________________________________________
Пост №3
Назв. урока

Описание

Количество просмотров 0 Подробнее

Вот такое как сделать в моём случаи чтоб кнопка подробнее, после на её нажатие счётчик увеличивался?

  Ответить  
 
 автор: akmal   (29.09.2010 в 20:05)   письмо автору
 
   для: Golovastik   (29.09.2010 в 17:44)
 

Нужно чтоб после нажатия на подробнее id поста передавался в другой документ (лучше через GET) после чего уже добавлять +1 к просмотру

  Ответить  
 
 автор: Golovastik   (29.09.2010 в 22:07)   письмо автору
 
   для: akmal   (29.09.2010 в 20:05)
 

При нажатии на ссылку подробнее ссылаться на тот же файл videolessons/1.php?page=1 ?

  Ответить  
 
 автор: Golovastik   (04.10.2010 в 20:35)   письмо автору
101.4 Кб
 
   для: Golovastik   (29.09.2010 в 22:07)
 

Так я так и сделал, вот для теста написал в поле text в базе данных.

<?php
$enlarge 
mysql_query("UPDATE lessons SET obnovlenie = obnovlenie+1  WHERE id=".$id);
?>          
<div class="zagolovok_kyrsa">Весь Азамат Ушанов - на одном DVD! (Видео-курсы)</div>
<br />
<div  align="center">
<a href="http://google.ru" target="_blank"><img class="foto_otstyp" src="/img/1_1.jpg" alt="Весь Азамат Ушанов - на одном DVD! (Видео-курсы)"  title="Весь Азамат Ушанов - на одном DVD! (Видео-курсы)" /></div>
</a>
<div align="justify" class="shrift">
Случилось то, чего <b>так долго ждали в Рунете,</b> но чего никогда ранее еще не было!..Произошло по истине эпохальное событие!..
Невероятный, потрясающий подарок всем, кто интересуется &nbsp <b>заработками в Сети!..</b>
</div>
<div>&nbsp;</div>
<div align="right"> <a class="podrob" href="/videolessons/1_1.php">Подробнее </a><span class="skobki">>></span></div>
<br />


А в коде уже вывожу посты так:

<div id="center">
<?php 
include '../blocks/database.php';  /*Соединяемся с Базой Данных*/
?>

<div class="zagolovok">Список</div> <br />
        
<?php
//Число постов выводящих на странице
$num 3;
@
$page $_GET['page'];
if(empty(
$page)){
$page 1
}


$result mysql_query("select COUNT(*) FROM lessons",$connect);
$posts mysql_result($result,0);
//Находим общее количество страниц
$chislo_str intval(($posts-1)/$num)+1;
$page intval($page);
//empty($page) Если переменной не существует или ее значение равно нулю
if(empty($page) or $page<0$page 1;
if(
$page $chislo_str$page $chislo_str;
// Если ввести $page=7  тогда 7*3-3=18  
//с 18 поста будет выводится пост 18,19,20 на странице №7
$start $page $num $num;  
$result mysql_query("SELECT * FROM lessons LIMIT $start$num",$connect);  
// В цикле переносим результаты запроса в массив $postrow  
while ($postrow[] = mysql_fetch_array($result,$connect)); 

/*--------------------------------------------------------------------------------------*/


/*--------------------------------------------------------------------------------------*/
$prosmotrov mysql_query("select * FROM lessons",$connect);
//Вывод постов
for($i 0$i $num$i++)  
{  
$rez mysql_fetch_array($prosmotrov,$connect);
//$enlarge = mysql_query("UPDATE lessons SET obnovlenie = obnovlenie+1  WHERE id=".$id);
//echo 'Просмотров: '.$enlarge;
if(isset($postrow[$i]['id'])) echo  '&nbsp;'.$postrow[$i]['text'].'<br/>';
}


//------------------------------------------------
// Стрелка назад  
if($page>1)
$nazad'<a class="knopka_nazad1" href= ./1.php?page='.($page-1).'>Назад</a>';
else 
$nazad'<span class="knopka_nazad2">Назад</span>';
       
//Стрелка вперед  
if($page<$chislo_str)
$vpered '<a class="knopka_vpered1" href= ../videolessons/1.php?page='.($page 1).'>Вперёд</a>';
else 
$vpered'<span class="knopka_vpered2">Вперёд</span>';

// Вывод меню  
$expand_to 4// сколько страниц должно показываться слева и справа от текущей
 
// начало и конец "соседних" страниц
$a $page $expand_to; if ($a 1$a 1
$b $page $expand_to; if ($b $chislo_str$b $chislo_str;
 
if (
$a 1// надо ли показывать отдельно ссылку на первую и "..."
{
    
$navigation[] = "<a href=\"./1.php?page=1\">1</a>";
    if (
$a 2$navigation[] = "...";
}
 
// генерируем ссылки на "соседние" страницы
for ($i $a$i <= $b$i++)
    
$navigation[] = ($page == $i) ? '<span class="tek_str">'.$i.'</span>' "<a class='str_nav' href=\"./1.php?page=$i\">$i</a>";
 
if (
$b $chislo_str// надо ли показывать отдельно "..." и ссылку на последнюю
{
    if (
$b $chislo_str 1$navigation[] = '...';
    
$navigation[] = "<a href=\"./1.php?page=$chislo_str\">$chislo_str</a>";
}
 
// выводим готовую навигацию
echo $nazad.'&nbsp;&nbsp;'.implode(' '$navigation).'&nbsp;&nbsp;'.$vpered;
?>

<!---------------------------------------------------------------------------->
</div> <!-- Закрываем контент-->



Ошибок нету, но ничего не выдаёт и счётчик не считает.

  Ответить  
 
 автор: Golovastik   (04.10.2010 в 22:32)   письмо автору
 
   для: Golovastik   (04.10.2010 в 20:35)
 

что нужно куда передавать чтоб именно счётчик считал после перехода по ссылке подробнее?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования