[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите найти ошибку в постраничном выводе из базы!!
Splendid

БД MySQL
Подскажите, пожалуйста!В чем может быть проблема:
Есть скрипт поиска по БД, пользователь через форму вводит слово для поиска $search. Выводятся результаты в виде таблицы. Написала постраничный вывод результатов запроса пользователя из БД. Все ищет, первую страницу выводит правильно, кол-во ссылок
тоже правильное, но при переходе ко второй и последующим страницам - пишет: "Вы ничего не ввели в окно поиска. Пожалуйста, повторите поиск." Т.е. переменная $search далее первой страницы не передается. Почему????
Помогите найти ошибку, плииизз!!!

Вот часть кода:

Код
<?php
//Введенное пользователем значение
$search = $_POST['search'];
function link_bar($page, $count, $pages_count, $show_link)

{
// $show_link - количество отображаемых ссылок;
// Если страница всего одна-ничего не выводим
if ($pages_count == 1)
return false;
$sperator = ' ';
$style = 'style="color: #003399; text-decoration: none;"';
$begin = $page - intval($show_link / 2);
unset($show_dots);
// Постраничный вывод
// Если количество отображ. ссылок больше кол. страниц
if ($pages_count <= $show_link + 1) $show_dots = 'no';
// Вывод ссылки на первую страницу
if (($begin > 2) && ($pages_count - $show_link > 2)) {
echo '<a '.$style.' href='.$_SERVER['PHP_SELF'].'?page=1> |< </a> ';
}
for ($j = 0; $j <= $show_link; $j++) // Основнoй цикл вывода ссылок
{
$i = $begin + $j; // Номер ссылки
// Если страница рядом с началом, то увеличить цикл для того,
// чтобы количество ссылок было постоянным
if ($i < 1) continue;
// Подобное находится в верхнем цикле
if (!isset($show_dots) && $begin > 1) {
echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.($i-1).'><b>...</b></a> ';
$show_dots = "no";
}
// Номер ссылки больше возможного количества страниц
if ($i > $pages_count) break;
if ($i == $page) {
echo ' <a '.$style.' ><b>'.$i.'</b></a> ';
} else {
echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$i.'>'.$i.'</a> ';
}
// Если номер ссылки не равен кол. страниц и это не последняя ссылка
if (($i != $pages_count) && ($j != $show_link)) echo $sperator;
// Вывод "..." в конце
if (($j == $show_link) && ($i < $pages_count)) {
echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.($i+1).'><b>...</b></a> ';
}
}
// Вывод ссылки на последнюю страницу
if ($begin + $show_link + 1 < $pages_count) {
echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$pages_count.'> >| </a>';
}
return true;
} // Конец функции

if ($search <> '')
{

$perpage = 10; // Количество отображаемых данных из БД
if (empty($_GET['page']) || ($_GET['page'] <= 0)) {
$page = 1;
} else {
$page = (int) $_GET['page']; // Считывание текущей страницы
}


$sql = "SELECT $table_columns_list FROM $table_unique_list WHERE 1=2";
for ($i=0; $i < count($table_columns); $i++) {
$sql .= ' or ' . $table_columns[$i] . " LIKE '%$search%'";
}

// Общее количество информации
$count = mysql_num_rows(mysql_query($sql));
if ($count == 0)
{
   echo "<br>Вы искали '$search'. Поиск не дал результатов.
             Попробуйте изменить критерии поиска.</br>";
}
elseif ($count > 0)
{
echo "</br>";    
echo "Вы искали '$search'. Найдено $count документов.";
$pages_count = ceil($count / $perpage); // Количество страниц
// Если номер страницы оказался больше количества страниц
if ($page > $pages_count) $page = $pages_count;
$start_pos = ($page - 1) * $perpage; // Начальная позиция, для запроса к БД


// Вывод информации из базы данных  
echo "</br>";
$sql.=' LIMIT '.$start_pos.', '.$perpage;
$result = mysql_query($sql) or die('Error!');
//echo $sql;
echo "<table border=1>";
   echo "<tr>";
  for ($i=0; $i < count($columns_en); $i++)
{
  echo "<td>$columns_rus[$i]</td>";
}
   echo "</tr>";
   echo "<tr>";
while ($row = mysql_fetch_array($result))
{
for ($i=0; $i < count($columns_en); $i++)

    {
    echo "<td>".$row[$columns_en[$i]]."&nbsp;</td>";  
    }  

echo "</tr>";
}
echo  "</table>";
  // Вызов функции, для вывода ссылок на экран
link_bar($page, $count, $pages_count, 10);
} }
elseif ($search == '')
{
   echo " <br> Вы ничего не ввели в окно поиска. Пожалуйста, повторите поиск. </br>";
}
?>


_____________
vasa_c
А где вы её передаете?

_____________
Блог ГО | Таблица символов Юникода | Графомания
Splendid

здесь...
Код
$sql = "SELECT $table_columns_list FROM $table_unique_list WHERE 1=2";
for ($i=0; $i < count($table_columns); $i++) {
$sql .= ' or ' . $table_columns[$i] . " LIKE '%$search%'"



_____________
Ghost
search откуда берется?
Splendid
Пользователь вводит.
Для этого скрипта я проблему решила, спасибо!
Но теперь другая проблема - если search - массив...
там с циклами и все такое...
делаю так, но опять ничего не получается:

Код
<?php

...

for ($i=0; $i < $count; $i++)
{
//Если нажата кнопка "Поиск", то

if (!empty($_POST[$columns_en[$i]]))
{    
//Введенное пользователем значение
$search[$i] = mysql_real_escape_string($_REQUEST[$columns_en[$i]]);
$search_query .= "&".urlencode($columns_en[$i])."=".urlencode($_REQUEST[$columns_en[$i]]);

// обработка введенных пользователем данных
...

}


function link_bar($page, $count, $pages_count, $show_link, $search_query)

{

....

echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.($i-1).$search_query.'><b>...</b></a> ';

...

echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$i.$search_query.'>'.$i.'</a> ';

...

echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$i.$search_query.'>'.$i.'</a> ';

...

echo ' <a '.$style.' href='.$_SERVER['PHP_SELF'].'?page='.$pages_count.$search_query.'> >| </a>';

}

...

link_bar($page, $count, $pages_count, 10, $search_query);

...

?>


_____________
Splendid
все решено, спасибо.

может кто-нибудь хотя бы ответит, что это за ошибки?


Код
Notice: Undefined offset: 0 in F:\Program Files\wamp\www\reestr\search_pole.php on line 113
Notice: Undefined offset: 14 in F:\Program Files\wamp\www\reestr\search_pole.php on line 113

Notice: Undefined offset: 0 in F:\Program Files\wamp\www\reestr\search_pole.php on line 196
Notice: Undefined offset: 14 in F:\Program Files\wamp\www\reestr\search_pole.php on line 196


а вот строки, где ошибка должна быть:
Код
112 for ($i=0; $i < $count; $i++)
113 if ($search[$i] <>'')
114 break;


Код
195 for ($i=0; $i < $count; $i++)
196 if ($search[$i] <>'')
197 break;


_____________
Splendid
всем спасибо, вопрос решен, тему можно закрыть.

_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.