[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: постораничная навигация
igorianru
Ещё рас здрасти).. помогите найти ошибку... всё вроде БЫ нормально навигация выводит числа как и положенно только вот при попытке перейти по этой навигации на любую дуругаю страницу ничего не происхрдит.. за ранее огромное спосибо все кто скажет чтото уразумительное..


<?

$server = 'localhost'; // ИМЯ СЕРВЕРА
$user = 'root'; // ПОЛЬЗОВАТЕЛЬ - НЕ ИСПОЛЬЗУЙТЕ ROOT ДЛЯ ВАШЕЙ ЖЕ БЕЗОПАСНОСТИ
$pass = ''; // ПАРОЛЬ ПОЛЬЗОВАТЕЛЯ

$db = 'stihi'; // БАЗА ДАННЫХ
$table = 'stihi'; // НАЗВАНИЕ ТАБЛИЦЫ

$chislo = 3; // ЧИСЛО СООБЩЕНИЙ НА СТРАНИЦЕ

// ДЛЯ УДОБСТВА ОБОЗНАЧИМ ПЕРЕМЕННУЮ С ТЕКСТОМ ОШИБКИ
$text_error = '<br />Ошибочка вышла!';

// СОЕДЕНИМСЯ С MySQL
$connect = mysql_connect ($server, $user, $pass);
if (!$connect) {
echo $text_error;
exit;
}

// СОЕДЕНИЯЕМСЯ С БАЗОЙ ДАННЫХ
$select = mysql_select_db($db);
if (!$select) {
echo $text_error;
exit;
}

// СОЗДАЁМ ЗАПРОС
$result = mysql_query("SELECT * from $table WHERE cat_id='$cat_id' ");
// СЧИТАЕМ КОЛЛИЧЕСТВО ЗАПИСЕЙ В ТАБЛИЦЕ - У МЕНЯ ИХ 20
$num_rows = mysql_num_rows($result);

// А ТЕПЕРЬ СЧИТАЕМ НА СКОЛЬКО СТРАНИЦ НАМ РАЗБИТЬ ЗАПИСИ И ВЫДЕЛЯЕМ ЦЕЛОЕ ЧИСЛО
$num_rows = round($num_rows/$chislo); // 20 ДЕЛИМ НА 5. СКОЛЬКО? smile.gif

// ЗДЕСЬ МЫ ПРОВЕРЯЕМ НА КАКОЙ СТРАНИЦЕ СЕЙЧАС ПОЛЬЗОВАТЕЛЬ
if (isset($_GET['str'])) {
$nav = $_GET['str'];
}
else {
$nav = 0;
}
$nav = intval($nav); // ДЛЯ ЗАЩИТЫ ОТ НЕХОРОШИХ ДЯДЕНЕК МЫ ВЫДЕЛИМ ЦЕЛУЮ ЧАСТЬ $GET['str']
echo 'Коментарии Навигация: ';

// А ТЕПЕРЬ ВЫВОДИМ НОМЕРА СТРАНЦ
for ($i=1; $i<=$num_rows; $i++) {
if ($i != $nav) {
echo '<a href="'.$PHP_SELF.'?cat_id='.$cat_id.'?str='.$i.'">'.$i.'</a> ';
}
else {
// АКТИВНУЮ СТРАНИЦУ ДЕЛАЕМ НЕ ГИПЕРССЫЛКОЙ
echo '<span>'.$i.'</span> ';
}
}
echo '<hr />'; // ОТДЕЛИМ НАВИГАЦЮ ОТ КОНТЕНТА ДЛЯ НАГЛЯДНОСТИ

// НАЧИНАЕМ ВЫВОДИТЬ САМУ ИНФОРМАЦИЮ ПОСТРАНИЧНО smile.gif
if (!isset($_GET['str'])) {
$str = 0;
}
else {
$str = $_GET['str']*$chislo - $chislo;
}
$nomer = $chislo ;
// ФОРМИРУЕМ ЗАПРОС НУЖНОЙ НАМ ЧАСТИ ИНФОРМАЦИИ

$result = mysql_query("SELECT * from $table WHERE cat_id='$cat_id' limit $str, $nomer");
// ИНАЧЕ ВЫВОДИМ ОШИБКУ
if (!$result) {
echo $text_error;
exit;
}

echo '<div style="width: 40%;" >';
while ($row = mysql_fetch_array($result)) {

echo "<table border=1 width=400 align='center'>";
echo "<tr><td align='center'><a href='text.php?stihi_id=".$row['stihi_id']."'>".$row['name']."</a> <b ></b> ".$row['author']."";
echo "<tr><td> <p>".$row['text']."";
echo "</p>
</table><p>&nbsp;</p>";

}
echo '</div>';
echo 'Навигация: ';
// А ТЕПЕРЬ ВЫВОДИМ НОМЕРА СТРАНЦ
for ($i=1; $i<=$num_rows; $i++) {
if ($i != $nav) {
echo '<a href="'.$PHP_SELF.'?cat_id='.$cat_id.'?str='.$i.'">'.$i.'</a> ';
}
else {
// АКТИВНУЮ СТРАНИЦУ ДЕЛАЕМ НЕ ГИПЕРССЫЛКОЙ
echo '<span>'.$i.'</span> ';
}
}
mysql_close($connect);

?>

<form id="form1" name="form1" method="post" ><?php





do {
printf ("<table align='center' >
<tr>
<td class='lesson_title' >
<p ><a id=%s>%s</a></p>
<p ><a>%s</a></p>
</table>", $myrow["id"], $myrow["name"], $myrow["text"]);
}
while ($myrow = mysql_fetch_array ($result));
?>




Спустя 49 минут, 36 секунд (12.06.2011 - 20:39) allplayer написал(а):
Какой длинный бред... Даже читать неохота.. Хочешья тебе свой дам? он покороче и полегче smile.gif

Спустя 8 минут, 54 секунды (12.06.2011 - 20:48) igorianru написал(а):
давай=) я прост первый раз такую "бяку писал"))

Спустя 8 минут, 23 секунды (12.06.2011 - 20:56) allplayer написал(а):
<?php
$page=$_GET["page"];
if($page>0){$page=$page-1;}else{$page=0;}
$limit=$page * $maxresult;
$query = mysql_query("SELECT * FROM details WHERE (active=1) AND (category=".$now.") ORDER BY id DESC");
$num_rows = mysql_num_rows($query);
$num1=($num_rows % $maxresult);
$num2=($num_rows / $maxresult);
if($num1>0){$num2=(round($num2,0)+1);}
if(($num1 / $maxresult) >= 0.5){$num2=($num2-1);}
$sql = "SELECT * FROM details WHERE (active=1) AND (category=".$now.") LIMIT ".$limit.", ".$maxresult."";
$result = mysql_query($sql);
while($stat=mysql_fetch_array($result))
{
//ololo и тело.
}
echo'Страницы:';
while($x<$num2)
{
$x++;
if(($page+1)!=$x)
{
echo' <a href="index.php?category='.$now.'&page='.$x.'">'.$x.'</a> ';
}else{
echo' '.$x.' ';
}
}


Спустя 4 минуты, 33 секунды (12.06.2011 - 21:01) allplayer написал(а):
$maxresult-максимальное кол-во выводов на страницу.
$limit-с какой строчки искать в базе данных
$num_rows-общее кол-во записей в бд
Знак % -это остаток от деления

ЗЫ: я пошёл кушать, а то вымру. напишу только через 10-15 минут smile.gif

Спустя 12 минут, 15 секунд (12.06.2011 - 21:13) Guest написал(а):
спасибо огромное!!!=)

Спустя 2 минуты, 43 секунды (12.06.2011 - 21:16) quickxyan написал(а):
могу дать и свой, но он почти идентичный тому, что уже выложен)

Спустя 11 минут, 24 секунды (12.06.2011 - 21:27) Guest написал(а):
Эээээм))) дело такое)) я какбы ещё мало в php шарю..) вот если бы мне ктонить обьяснил как код "allplayer"а работает и как его к себе подключить, а если автор обьяснит то будет шикарно))

Спустя 3 минуты, 57 секунд (12.06.2011 - 21:31) allplayer написал(а):
Guest, я описал главные переменные.
Вобщем алгоритм такой:
1-узнаем сколько всего записей в бд
2- прикидываем сколько страниц будет(учитывая сколько выдать записей на страницу)
3-коннект к базе и показать записи , например, с 1 по 9 или с 9 по 18(смотря какая страница).

Вот примерно и все smile.gif

А сравниваю я там $maxresult с 0.5 для того, чтобы скрипт лишнюю страницу не дописал при округлении.

Придумано лично мною
tongue.gif


quickxyan Выкладывай, обсудим smile.gif

Спустя 17 минут, 5 секунд (12.06.2011 - 21:48) igorianru написал(а):
смотрю в книгу вижу фигу))) не хватает у меня ума правильно подключить этот код, выдаёт кучу ошибок(

Спустя 4 минуты, 23 секунды (12.06.2011 - 21:53) allplayer написал(а):
А куда тебе?

Спустя 1 минута, 24 секунды (12.06.2011 - 21:54) allplayer написал(а):
Напиши что тебе надо вытащить(сам код) из бд и по сколько результатов на страницу smile.gif

Спустя 9 минут, 10 секунд (12.06.2011 - 22:03) igorianru написал(а):
allplayer у тебя есть iсq?? если есть жаление и время можешь меня проконцультировать?? (560406900) или скинь свой номер я сам добавлю))

Спустя 6 минут, 41 секунда (12.06.2011 - 22:10) allplayer написал(а):
585-609-005

Спустя 6 минут, 4 секунды (12.06.2011 - 22:16) allplayer написал(а):
Какой ответ от спам-бота?

Спустя 2 часа, 54 минуты, 57 секунд (13.06.2011 - 01:11) Игорь_Vasinsky написал(а):
вот же есь готовая реализация как у Google, есть комменты, в теме есть доработки держи
Быстрый ответ:

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