![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте)Я пытаюсь сделать постраничную навигацию по ьому скрипту,который представлен сдесь: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)
Неактивен