Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте)Я пытаюсь сделать постраничную навигацию по ьому скрипту,который представлен сдесь:http://www.softtime.ru/info/articlephp.php?id_article=33
Но когда я все подстраиваю,то у меня вылезает ошибка:
Fatal error: Unsupported operand types in Z:\home\test1.ru\www\Copy_obnovleniya\songs.php on line 68
Я считаю,что ошибка заключается в данной строчке:$total=intval(($songs-1)/$num_songs)+1;
Но я так и не смог определить в чем же здесь ошибка....Подскажите,пожалуйста.
<?php $ex=$_GET['ex']; // Устанавливаем соединение с базой данных include "config.php"; $num_songs = 3; // Извлекаем из URL текущую страницу $pn = $_GET['pn']; // Определяем общее число сообщений в базе данных $query ="SELECT COUNT(*) FROM songs WHERE executor_num=$ex"; $result = mysql_query($query); if(!$result) exit(mysql_error()); $songs = mysql_fetch_row($result); // Находим общее число страниц $total=intval(($songs-1)/$num_songs)+1; // Определяем начало сообщений для текущей страницы $pn = intval($pn); // Если значение $pn меньше единицы или отрицательно // переходим на первую страницу // А если слишком большое, то переходим на последнюю if(empty($pn) or $pn < 0) $pn = 1; if($pn > $total) $pn = $total; // Вычисляем начиная к какого номера // следует выводить сообщения $start = $pn * $num_songs - $num_songs; // Выбираем $num сообщений начиная с номера $start $result = mysql_query("SELECT * FROM songs WHERE executor_num=$ex LIMIT $start, $num_songs"); // В цикле переносим результаты запроса в массив $postrow while ( $songs = mysql_fetch_assoc($result)) for($i = 0; $i < $num_songs; $i++) { echo "<a class=song_link href=songs_design.php?num=".$songs[$i]['song_id']." alt=".$songs[$i]['song_name'].">".$songs[$i]['song_name']."</a><br>"; } ?>
Неактивен
у меня тут в наработках есть кое что похожее
$query = "SELECT id FROM site_news WHERE visible='yes'";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
$numpages = intval(ceil($num_rows / $limit));
$links_page = '<SPAN CLASS=NEWSTEXT>страницы: </SPAN>';
$j=1;
for ($i = 1; $i <= $numpages; $i++) {
if ($p == $i) {
$links_page .= '['.$i.'] ';
}else{
$links_page .= '<a href="?action=archive&p='.$i.'">['.$i.']</a> ';
}
if ($i/20 == $j) {
$links_page .= "<br>\n";
$j++;
}
}
может вам и пригодится...
дока по ceil - http://php.yar.ru/manual/en/function.ceil.php
Отредактированно vladimirov (05.02.2008 20:27:45)
Неактивен
Нет к сожалению не получается......Проблема заключена в строчке:$total=intval(($songs-1)/$num_songs)+1;Но я не знаю в чем именно там проблема......
Неактивен
Пасиба)Постараюсь переделать под себя)
Неактивен
К сожалению, в приведенном Вами скрипте нет 68 строки, поэтому проверить не могу
Неактивен
А что это за 68 строка?
Неактивен
Fatal error: Unsupported operand types in Z:\home\test1.ru\www\Copy_obnovleniya\songs.php on line 68.
Фатальная ошибка: Неподдерживаемые типы операндов в файле Z:\home\test1.ru\www\Copy_obnovleniya\songs.php на строке 68.
Вот и я думаю - что за 68 строка
Неактивен
А что значит неподдерживаемые типы операндов?
Неактивен
Ну, например, если сложить базу данных и слона, то будет ошибка. Хотя, перемножить
их, конечно, можно - будет гипотетическая слонобаза данных.
Думаю, стоит все-таки написать 68 строку здесь
Неактивен
Я тут попробовал совместить два скрипта и у меня это вроде неплохо получилось....Поэтому если надо,то я могу выложить скрипт постраничной навигации....Вдруг кому-нибудь понадобиться...
Неактивен
<?php include "config.php"; $ex=$_GET['ex']; $pnumber = 1; if(isset($_GET['pn'])) { $pn = $_GET['pn']; $start = (($pn - 1)*$pnumber); } else { $pn = 1; $start = 0; } $query = "SELECT * FROM songs WHERE executor_num=$ex ORDER BY song_name LIMIT $start,$pnumber"; $prd = mysql_query($query); if(!$prd) exit(mysql_error()); // Если в текущем каталоге имеется хотя бы // одна товарная позиция выводим её if(mysql_num_rows($prd) > 0) { while($songs = mysql_fetch_assoc($prd)) { echo "<a class=song_link href=songs_design.php?num=".$songs['song_id']." alt=".$songs['song_name'].">".$songs['song_name']."</a><br>"; } } // Определяем общее число сообщений в базе данных $query ="SELECT COUNT(*) FROM songs WHERE executor_num=$ex"; $result = mysql_query($query); if(!$result) exit(mysql_error()); $songs = mysql_result($result,0); // Находим общее число страниц $number = (int)($songs/$pnumber); if((float)($songs/$pnumber) - $number != 0) $number++; echo"<center>"; if ($pn-7 > 0) $pervpage = '<a href= design.php?page=songs&ex='.$ex.'&pn='. ($pn - 6) .'><< </a>'; // Проверяем нужны ли стрелки вперед if ($pn+6 < $number) $nextpage = '<a href= design.php?page=songs&ex='.$ex.'&pn='. ($pn + 6) .'> >></a>'; // Находим ближайшие станицы с обоих краев, если они есть if($pn - 6 > 0) $pn6left = '<a href= design.php?page=songs&ex='.$ex.'&pn='.($pn - 6).'>'. ($pn - 6) .'</a> '; if($pn - 5 > 0) $pn5left = '<a href= design.php?page=songs&ex='.$ex.'&pn='. ($pn - 5) .'>'. ($pn - 5) .'</a> '; if($pn - 4 > 0) $pn4left = '<a href= design.php?page=songs&ex='.$ex.'&pn='.($pn - 4).'>'. ($pn - 4) .'</a> '; if($pn - 3 > 0) $pn3left = '<a href= design.php?page=songs&ex='.$ex.'&pn='. ($pn - 3) .'>'. ($pn - 3) .'</a> '; if($pn - 2 > 0) $pn2left = '<a href= design.php?page=songs&ex='.$ex.'&pn='. ($pn - 2) .'>'. ($pn - 2) .'</a> '; if($pn - 1 > 0) $pn1left = '<a href= design.php?page=songs&ex='.$ex.'&pn='.($pn - 1).'>'. ($pn - 1) .'</a> '; if($pn + 6 <= $number) $pn6right = '  <a href= design.php?page=songs&ex='.$ex.'&pn='. ($pn + 6) .'>'. ($pn + 6) .'</a>'; if($pn + 5 <= $number) $pn5right = '  <a href= design.php?page=songs&ex='.$ex.'&pn='. ($pn + 5) .'>'. ($pn + 5) .'</a>'; if($pn + 4 <= $number) $pn4right = '  <a href= design.php?page=songs&ex='.$ex.'&pn='. ($pn + 4) .'>'. ($pn + 4) .'</a>'; if($pn + 3 <= $number) $pn3right = '  <a href= design.php?page=songs&ex='.$ex.'&pn='. ($pn + 3) .'>'. ($pn + 3) .'</a>'; if($pn + 2 <= $number) $pn2right = '  <a href= design.php?page=songs&ex='.$ex.'&pn='. ($pn + 2) .'>'. ($pn + 2) .'</a>'; if($pn + 1 <= $number) $pn1right = '  <a href= design.php?page=songs&ex='.$ex.'&pn='. ($pn + 1) .'>'. ($pn + 1) .'</a>'; // Вывод меню if($number>1) echo $pervpage.$pn6left.$pn5left.$pn4left.$pn3left.$pn2left.$pn1left.'<b>'.$pn.'</b>'.$pn1right.$pn2right.$pn3right.$pn4right.$pn5right.$pn6right.$nextpage; echo"</center>"; ?>
Неактивен
$songs = mysql_fetch_row($result); // Находим общее число страниц $total=intval(($songs-1)/$num_songs)+1;
Смотри: $songs - массив. И из массива ты пытаешься вычитать число: ($songs-1). Вот тебе и ошибка - Unsupported operand types.
Отредактированно evgenijj (06.03.2008 00:11:49)
Неактивен