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

Форум MySQL

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

 

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

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

тема: Не выводит постранично из базы
 
 автор: scva   (02.04.2010 в 12:00)   письмо автору
 
 

Нем огу понять ошибку постраничной навигации, выводит только одну страницу и все

<?
$page
=$_GET['page'];
$view_case=6;
$start=$page*$view_case;


$sql="SELECT * FROM tovar WHERE id_podcat='2' LIMIT $start,$view_case";

$ires=mysql_query($sql);
$count_page=ceil(mysql_num_rows($ires)/$view_case);

echo 
"<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr valign='top'>";
$i=0;
while(
$ires_result=mysql_fetch_array($ires)){
$i++;
  echo 
'<td class="catalog" valign="top">';


    echo 
'<div id="name" align="center">'.$ires_result[title].' '.$ires_result[articul].'</div>';
echo 
'<div align="center"><img src="/images/small/'.$ires_result[articul].'.jpg" align="left"></div>';
echo 
''.$ires_result[des].'';
echo 
'<p>Состояние: <span id="sost">'.$ires_result[name_category].'</span></p>';
echo 
'<p><a href="mailto:info@luxwatch.ru?subject='.$ires_result[title].'"><img src="img/buy.gif"></a></p>';

  echo 
'</td>';
if(
is_integer($i/3))

echo 
'</tr><tr>';//если нужно по больше записей в строки, измини цыфру 3.

}
echo 
'</table>';



for(
$i=1;$i<=$count_page;$i++){
  echo 
'Страницы: <a href="catalog.html?page='.$i.'">'.$i.'</a>';
}

?>

  Ответить  
 
 автор: Gono   (04.04.2010 в 10:51)   письмо автору
 
   для: scva   (02.04.2010 в 12:00)
 

>for($i=1;$i<=$count_page;$i++){
> echo 'Страницы: <a href="catalog.html?page='.$i.'">'.$i.'</a>';

попробуй для начала свою страничку catalog.HTML переименовать в catalog.PHP.
Если не поможет-опиши проблему поподробнее..

  Ответить  
 
 автор: scva   (05.04.2010 в 13:21)   письмо автору
 
   для: Gono   (04.04.2010 в 10:51)
 

переименовал, не помогло

Проблем в том что в базе более 1000 товара а выводи только одну страницу с тем количестов товара который указан в переменной $view_case, в данно случаи выводит только 6 штук

  Ответить  
 
 автор: Slo_Nik   (05.04.2010 в 16:21)   письмо автору
 
   для: scva   (05.04.2010 в 13:21)
 

попробуйте значение $start поменять на число отличное от 0 и посмотрите, что получится, я думаю, что ни чего. у Вас ни где не идёт подсчёт всего кол-ва товаров в базе.
прочитаейте http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=72981&page=1 может это Вам поможет в решении проблемы

  Ответить  
 
 автор: scva   (06.04.2010 в 11:01)   письмо автору
 
   для: Slo_Nik   (05.04.2010 в 16:21)
 

а это разве не подсчет
$count_page=ceil(mysql_num_rows($ires)/$view_case); 


эта ссылка моей темы
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=72981&page=1

  Ответить  
 
 автор: Slo_Nik   (06.04.2010 в 12:21)   письмо автору
 
   для: scva   (06.04.2010 в 11:01)
 

>эта ссылка моей темы
>http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=72981&page=1
извините, запарился

вот ссылка по Вашей теме
http://www.softtime.ru/info/articlephp.php?id_article=33

  Ответить  
 
 автор: scva   (07.04.2010 в 12:52)   письмо автору
 
   для: Slo_Nik   (06.04.2010 в 12:21)
 

вообщем пробывал так и не получилось на моем коде, можете показать как это сделать на моем коде

  Ответить  
 
 автор: Slo_Nik   (07.04.2010 в 18:44)   письмо автору
 
   для: scva   (07.04.2010 в 12:52)
 

и что именно у Вас не получилось, покажите

  Ответить  
 
 автор: scva   (09.04.2010 в 10:07)   письмо автору
 
   для: Slo_Nik   (07.04.2010 в 18:44)
 

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

  Ответить  
 
 автор: Balamut182   (09.04.2010 в 11:14)   письмо автору
 
   для: scva   (09.04.2010 в 10:07)
 

ceil(mysql_num_rows($ires)/$view_case);

после запроса
$sql="SELECT * FROM tovar WHERE id_podcat='2' LIMIT $start,$view_case"; 

выведет $view_case-записей максимум
попробуйте по другому
"SELECT SQL_CALC_FOUND_ROWS * FROM tovar WHERE id_podcat='2' LIMIT $start,$view_case";

сразу после него делаете второй запрос
SELECT FOUND_ROWS()

и узнаете количество записей по вашему запросу без учета лимита, ну а дальше - пошло, поехало

  Ответить  
 
 автор: Slo_Nik   (10.04.2010 в 01:33)   письмо автору
 
   для: scva   (09.04.2010 в 10:07)
 

а показать Вы не хотите, то что у Вас не получается?

  Ответить  
 
 автор: scva   (13.04.2010 в 11:22)   письмо автору
 
   для: Slo_Nik   (10.04.2010 в 01:33)
 

вообщем вот что получилось у меня, и ничего не выводит, пустая траница


<?
$num 
15;
$page $_GET['page'];
$result mysql_query("SELECT COUNT(*) FROM tovar"); 
$posts mysql_fetch_row($result);
$total intval(($posts 1) / $num) + 1;  
$page intval($page);
if(empty(
$page) or $page 0$page 1
  if(
$page $total$page $total
  
$start $page $num $num;
  
$result mysql_query("SELECT `id`,`title`,`articul`,`name_category` FROM `tovar` WHERE id_podcat='2' LIMIT $start$num");
 


echo 
"<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr valign='top'>";
$i=0;
  while ( 
$postrow[] = mysql_fetch_array($result)) 
  
  {
$i++;
  echo 
'<td class="catalog" valign="top">';


echo 
'<div id="name" align="center">'.$postrow['title'].'</div>';
echo 
'<div align="center"><a href="watch.html?id='.$postrow['id'].'"><img src="/images/small/'.$postrow['articul'].'.jpg" align="left"></a></div>';
echo 
'<p>Артикул: <a href="watch.html?id='.$postrow['id'].'" id="sost">'.$postrow['articul'].'</a>';
echo 
'<p>Состояние: <span id="sost">'.$postrow['name_category'].'</span></p>';
echo 
'<p><a href="mailto:info@sait.ru?subject='.$postrow['title'].'"><img src="img/buy.gif"></a></p>';

  echo 
'</td>';
if(
is_integer($i/3))

echo 
'</tr><tr>';
}
echo 
'</table>';
?>

  Ответить  
 
 автор: Trianon   (13.04.2010 в 12:18)   письмо автору
 
   для: scva   (13.04.2010 в 11:22)
 

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

  Ответить  
 
 автор: scva   (13.04.2010 в 12:31)   письмо автору
 
   для: Trianon   (13.04.2010 в 12:18)
 

ругается на эту строку
$total = intval(($posts - 1) / $num) + 1; 

  Ответить  
 
 автор: scva   (13.04.2010 в 12:34)   письмо автору
 
   для: scva   (13.04.2010 в 12:31)
 

весь код с выводом постранично у меня выглядит так
<?

$num 
15;
$page $_GET['page'];
$result mysql_query("SELECT COUNT(*) FROM tovar"); 
$posts mysql_fetch_row($result);
$total intval(($posts 1) / $num) + 1;  
$page intval($page);
if(empty(
$page) or $page 0$page 1
  if(
$page $total$page $total
  
$start $page $num $num;
  
$result mysql_query("SELECT `id`,`title`,`articul`,`name_category` FROM `tovar` WHERE id_podcat='2' LIMIT $start$num");
 


echo 
"<table width='100%' border='0' cellspacing='0' cellpadding='0'><tr valign='top'>";
$i=0;
  while ( 
$postrow[] = mysql_fetch_array($result)) 
  
  {
$i++;
  echo 
'<td class="catalog" valign="top">';


echo 
'<div id="name" align="center">'.$postrow['title'].'</div>';
echo 
'<div align="center"><a href="watch.html?id='.$postrow['id'].'"><img src="/images/small/'.$postrow['articul'].'.jpg" align="left"></a></div>';
echo 
'<p>Артикул: <a href="watch.html?id='.$postrow['id'].'" id="sost">'.$postrow['articul'].'</a>';
echo 
'<p>Состояние: <span id="sost">'.$postrow['name_category'].'</span></p>';
echo 
'<p><a href="mailto:info@luxwatch.ru?subject='.$postrow['title'].'"><img src="img/buy.gif"></a></p>';

  echo 
'</td>';
if(
is_integer($i/3))

echo 
'</tr><tr>';

}
echo 
'</table>';

if (
$page != 1$pervpage '<a href= ./page?page=1><<</a> 
                               <a href= ./page?page='
. ($page 1) .'><</a> '

if (
$page != $total$nextpage ' <a href= ./page?page='. ($page 1) .'>></a> 
                                   <a href= ./page?page=' 
.$total'>>></a>'

if(
$page 0$page2left ' <a href= ./page?page='. ($page 2) .'>'. ($page 2) .'</a> | '
if(
$page 0$page1left '<a href= ./page?page='. ($page 1) .'>'. ($page 1) .'</a> | '
if(
$page <= $total$page2right ' | <a href= ./page?page='. ($page 2) .'>'. ($page 2) .'</a>'
if(
$page <= $total$page1right ' | <a href= ./page?page='. ($page 1) .'>'. ($page 1) .'</a>';

echo 
$pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage
?> 


пишет ошибку
$total = intval(($posts - 1) / $num) + 1;  
Fatal error: Unsupported operand types in

  Ответить  
 
 автор: Trianon   (13.04.2010 в 12:39)   письмо автору
 
   для: scva   (13.04.2010 в 12:31)
 

Теперь исправляйте.
Ошибка-то локализована.

  Ответить  
 
 автор: scva   (13.04.2010 в 12:52)   письмо автору
 
   для: Trianon   (13.04.2010 в 12:39)
 

честно говоря, не знаю как

  Ответить  
 
 автор: Trianon   (13.04.2010 в 12:53)   письмо автору
 
   для: scva   (13.04.2010 в 12:52)
 

Здрасти. А кто знает? Скрипт-то Ваш?

выводите значения переменных, использовванных в этой строке.
Выясняйте что в них не так и почему.
var_dump() в помощь.

  Ответить  
 
 автор: scva   (13.04.2010 в 13:43)   письмо автору
 
   для: Trianon   (13.04.2010 в 12:53)
 

проблему решил сделал ошибку в запросе, надо было так
$posts = mysql_numrows(mysql_query('select * from tovar')) or die('error!'); 

  Ответить  
 
 автор: Trianon   (13.04.2010 в 13:51)   письмо автору
 
   для: scva   (13.04.2010 в 13:43)
 

боже, кошмар какой.
Чтобы выяснить количество строк, Вы не постеснялись всю таблицу из БД вытащить.

  Ответить  
 
 автор: scva   (13.04.2010 в 14:03)   письмо автору
 
   для: Trianon   (13.04.2010 в 13:51)
 

)))) а как упростить? просто id вытащить?

  Ответить  
 
 автор: Trianon   (13.04.2010 в 14:07)   письмо автору
 
   для: scva   (13.04.2010 в 14:03)
 

у Вас использовался запрос SELECT COUNT(*) FROM tovar
Вот его и применяйте.

  Ответить  
 
 автор: scva   (13.04.2010 в 14:20)   письмо автору
 
   для: Trianon   (13.04.2010 в 14:07)
 

смешно но при этом запросе не появляются список странц, выводится только 1 страница
не стал заморачиваться поставил
SELECT COUNT(id) FROM `tovar`

  Ответить  
 
 автор: Trianon   (13.04.2010 в 14:26)   письмо автору
 
   для: scva   (13.04.2010 в 14:20)
 

>смешно но при этом запросе не появляются список странц, выводится только 1 страница

Это означает лишь то, что результат работы этого запроса Вы получаете неверно.

  Ответить  
 
 автор: scva   (13.04.2010 в 17:14)   письмо автору
 
   для: Trianon   (13.04.2010 в 14:26)
 

кажется нашел оптимальный вариант

$pole = mysql_query("SELECT COUNT( * ) FROM `tovar` WHERE id_podcat =2", $db) or die("error! Записей не найдено!");  
list ($posts) = mysql_fetch_row($pole);

думая проще так массив не создаю, а только пременную

Или есть другое мнение?

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

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