Я уже весь форум обсматрел как делать подстраничный вывод информации из БД,
есть много которые хорошо работают, если только ими листать информацию, а как дело подходит к поиску через форму так сразу начинают глючить.
Выводит найденную информацию, ссылки на страницы меняються в зависимости найденных файлов, но когда переходиш на вторую страницу чтобы посмотреть далле, то проишодит обновление страницы и все начнаеться по порядку с самой первой странице, помогите пожлуйста !!!
Код |
<form name="search_form" method="GET" action=<?php echo $_SERVER['PHP_SELF']; ?>> <table cellpadding="2" cellspacing="4" bordercolordark="black" bordercolorlight="black"> <tr> <td width="965" valign="top" align="center"><input type="text" name="search"></td> </tr> <tr> <td width="965" valign="top" align="center"><input type="submit" value="OK" name=go></td> </tr> </table> </form>
<?php
include "conn.php";
$lines_per_page = 3; //kol-vo strok na str $sname=''; //$search='';
if(!empty($_GET['go'])) { $sname = $_GET['search'] ; } //vsego zapiseyi $query = "SELECT * FROM $tablename WHERE name LIKE '%$sname%' "; $result = mysql_query($query); $all_lines = mysql_num_rows($result); //proveryaem ustanovlen li nomer str if (!isset($page) or empty($page) or $page<=0) $page=1; else $page=(int)$page; $page_for_query = $page-1; //s kakoy pozicii schitivat' zapisi $lpos = $page_for_query * $lines_per_page; //zapros
$query = "SELECT * FROM $tablename WHERE name LIKE '%$sname%' ORDER BY name ASC LIMIT $lpos,$lines_per_page"; $result = @mysql_query($query) or die("$query <b>failed!</b><br>".mysql_error());
$count_pages = ceil($all_lines / $lines_per_page); echo "<table><tr><td colspan=8 align=left>"; if ($count_pages>1) { for ($i=1; $i<=$count_pages; $i++) { if($page==$i and $i!=1) {echo " | <b><font style=color:#000000;<>$i</font>";} elseif ($page==$i and $i==1) {echo "1";} elseif($i==1 and $page!=$i) {echo " <a href=\"$PHP_SELF?page=$i\" >$i</a>";}
elseif($i!=1 and $page!=$i) {echo " | <a href=\"$PHP_SELF?page=$i\" >$i</a></b>";} } } echo "</td></tr></table>"; WHILE ($row = MYSQL_FETCH_ROW($result)) $number = mysql_numrows($result); if (!$number); /* Print the relevant information */ $i = 0;
PRINT "<hr>"; WHILE ($i < $number): $j = $i + 1 + ($page -1)*$lines_per_page; $name = mysql_result($result,$i,"name"); $url = mysql_result($result,$i,"url"); $size = mysql_result($result,$i,"size"); $date = mysql_result($result,$i,"date"); $cat = mysql_result($result,$i,"cat1"); $dl = mysql_result($result, $i,"dl"); $id = mysql_result($result,$i,"id"); if ($i%2 == 0) {
PRINT "<tr bgcolor=#E8E8E8> <!-- <td>$j</td>--> <td><a href=$url>$name</a></td>
<td>$size</td> <td>$dl</td> </tr><br> "; } else { PRINT "<tr bgcolor=#cccccc> <!--<td>$j</td> --> <td><a href=$url>$name</a></td>
<td>$size</td> <td>$dl</td>
</tr><br>";
}
$i++;
ENDWHILE;
PRINT "</table></td></tr>";
/* Close the database connection */ MYSQL_CLOSE();
?>
|
Спустя 5 часов, 30 минут, 49 секунд (25.07.2007 - 08:46) TRIAL написал(а):
А ты хоть используешь в запросе LIMIT $a, $b
Я использую и у меня всё нормально получается и работает.
Спустя 4 часа, 40 минут, 50 секунд (25.07.2007 - 13:27) JESS написал(а):
Цитата(TRIAL @ 25.7.2007, 7:46) [snapback]25183[/snapback]
А ты хоть используешь в запросе LIMIT $a, $b
Я использую и у меня всё нормально получается и работает.
да, я использую:
Код |
$query = "SELECT * FROM $tablename WHERE name LIKE '%$sname%' ORDER BY name ASC LIMIT $lpos,$lines_per_page"; |
но не как не могу понять где ошобка, a как код, нормальный?? Может это изза Localhost, у меня денвсер стоит...
Спустя 1 день, 21 час, 50 минут, 28 секунд (27.07.2007 - 11:17) TRIAL написал(а):
Запрос вроде нормальный вполне. Локалхост или нет не имеет значение. Если данные извлекаются, значит всё ок.
Кстати попробуй фиксированный LIMIT прописать, т.е. например LIMIT 30, 10 и посмотри, выдаст он тебе эти значение с 30 позиции или нет. Если всё выдаст, значит ошибка в передаче $from и $lines_per_page
_____________