Помогите с решением вопроса

Vasya

Новичок
Добрый день!!! Помогите пожалуйста сделать постраничный вывод. Я в этом деле новичок не могу никак доделать.
Ниже показана часть кода. В нём поиск по базе идёт на ура и выводит на первую страницу 20 первых записей из базы. а когда нажимаю чтобы перейти на 2.... страницу выдаёт ошибку: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\000\blocks\ksearch.php on line 77

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource

Может кто-то сможет помочь. Спасибо заранее.
PHP:
/* Соединение, выбор БД */
$link = mysql_connect("localhost", "root", "") or die("Не соединилось!!!");
$db = mysql_select_db("library") or die("Не найдена БД");
 
/* Делаем запрос к базе данных*/
$search = mysql_real_escape_string($_POST['txtSearch1']);
$search2 = mysql_real_escape_string($_POST['txtSearch2']);
$search3 = mysql_real_escape_string($_POST['txtSearch13']);
$search4 = mysql_real_escape_string($_POST['txtSearch14']);
 
 echo '<hr />';
  $per_page = 20;
 for($i=1;$i<=$num_pages;$i++) {
  echo '<a href="'.$_SERVER['PHP_SELF'].'?num='.$i*$per_page.'">'.$i."</a>\n";}
 
// получаем номер страницы
  if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
 
// вычисляем первый оператор для LIMIT
  $start=abs($page*$per_page);
 
// составляем запрос и выводим записи
// переменную $start используем, как нумератор записей.
$q="SELECT * FROM books WHERE (".mysql_escape_string($_POST['txtFields1'])." like '%".$search."%')
and (".mysql_escape_string($_POST['txtFields2'])." like '%".$search2."%')
and (".mysql_escape_string($_POST['txtFields3'])." like '%".$search3."%')
and (".mysql_escape_string($_POST['txtFields4'])." like '%".$search4."%') ORDER BY id, title LIMIT $start,$per_page";
$res=mysql_query($q);
while($row=mysql_fetch_array($res)) {
          {echo ++$start.". ".$row['title'].". ".$row['subtitle'].". ".$row['authors'].". ".$row['editors']."<br>\n";}}
 
// дальше выводим ссылки на страницы:
//title, subtitle, authors, editors, city, publisher, publish_year, pages_count
$q="SELECT count(*) FROM books WHERE (".mysql_escape_string($_POST['txtFields1'])." like '%".$search."%')
and (".mysql_escape_string($_POST['txtFields2'])." like '%".$search2."%')
and (".mysql_escape_string($_POST['txtFields3'])." like '%".$search3."%')
and (".mysql_escape_string($_POST['txtFields4'])." like '%".$search4."%')";
$res=mysql_query($q);
$row=mysql_fetch_row($res);
$total_rows=$row[0];
$num_pages=ceil($total_rows/$per_page);
for($i=1;$i<=$num_pages;$i++) {
  if ($i-1 == $page) {
    echo $i." ";
  } else {
    echo '<a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'">'.$i."</a> ";}}
/* Закрытие соединения */
mysql_close($link);
 

baev

‹°°¬•
Команда форума
Ну, и:
http://phpfaq.ru/debug

Да…
Запрос какой интересный.
Vasya, Вы тут:
PHP:
and (".mysql_escape_string($_POST['txtFields2'])." like '%".$search2."%')
— чего с чем сравниваете?
Вас самого не смущает, что у Вас выше по коду есть вот это:
PHP:
$search2 = mysql_real_escape_string($_POST['txtSearch2']);
?
 

Vasya

Новичок
запрос у меня идёт из формы с выпадающими полями.
вот собственно код формы:
PHP:
<form action="search.php" method="post" name="f1" onsubmit="javascript: if ((txtSearch1.value=='')||(txtSearch1.value=='Поиск...')) { return false; } else { return true; }">
	 
	     <select name=txtFields1 size=1 method="post">
            <option value="id" selected>-- select --</option>
            <option value="title">title</option>
            <option value="subtitle">stitle</option>
            </select>
		 
     <input type="text" name="txtSearch1" size="50" value="" onfocus="">
         <input type="submit" name="submit" value="search">
         <input type="reset" name="reset" value="delete">
		 <br>
              <br>
		  <br>
             Задать дополнительные поля поиска:
          <br>
          <br>
          <select name=txtFields2 size=1 method="post">
            <option value="id" selected>-- select --</option>
            <option value="title">title</option>
            <option value="subtitle">stitle</option>
          </select>
          <input name=txtSearch2 size=50>
 <br>
          <select name=txtFields3 size=1 method="post">
            <option value="id" selected>-- select --</option>
            <option value="title">title</option>
            <option value="subtitle">stitle</option>
          </select>
          <input name=txtSearch4 size=50>
 </form>
 
Сверху