Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Как разделить текст из БД на страницы ? 100 строк / 4 страницы по 30 на листе 
:(
    Опции темы
Temp
Дата 31.10.2005, 13:50 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 577
Регистрация: 12.1.2003

Репутация: нет
Всего: -3



Как разделить текст из БД на страницы.
Тоесть, на запрос из БД выдаётся 100 сток:

Код

$str_sql_query = "SELECT * FROM $table WHERE number LIKE '$number' and name LIKE '$name' and address LIKE '$address'";
if (!$result = mysql_query($str_sql_query, $link)) {echo "не выполнить запрос 1"; exit();}


if (!$result = mysql_query($str_sql_query, $link)) {echo "не выполнить запрос 2"; exit();}

while ($mas = mysql_fetch_row($result))
{
echo "<tr>";
echo "<td>".$mas[0]."</td>"; echo "<td>".$mas[1]."</td>"; echo "<td>".$mas[2]."</td>";
echo "</tr>";
}


как разделить их на страницы, по 30 строк на листе?


--------------------
<удалено администрацией>
PM MAIL ICQ   Вверх
PARROT
Дата 31.10.2005, 14:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Код

if (!isset($s)) $s=0;  
$str_sql_query = "SELECT * FROM $table WHERE number LIKE '$number' and name LIKE '$name' and address LIKE '$address' limit $s";
if (!$result = mysql_query($str_sql_query, $link)) {echo "не выполнить запрос 1"; exit();}


if (!$result = mysql_query($str_sql_query, $link)) {echo "не выполнить запрос 2"; exit();}

while ($mas = mysql_fetch_row($result))
{
echo "<tr>";
echo "<td>".$mas[0]."</td>"; echo "<td>".$mas[1]."</td>"; echo "<td>".$mas[2]."</td>";
echo "</tr>";
}
$res3=mysql_query("select count(id) from $table");//количество записей в базе, у меня id, у тебя проверь
$num=mysql_fetch_row($res3);

$numstr=ceil($num[0]/30);
echo "<table><tr><td>Страницы: ($numstr)</td>";
for($i=1; $i<=$numstr; $i++){
        $start=($i-1)*30;
        if ($start==$s OR ($s==0 AND $i==1));
        print "<td><a href=index.php?s=$start>[$i]</a></td> ";//имя страницы замени на свое
}
echo "</tr></table>";



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Temp
Дата 31.10.2005, 17:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 577
Регистрация: 12.1.2003

Репутация: нет
Всего: -3



Это немного нето

Пишу алгоритм:
1) нужно узнать сколько строк получилось в результате поиска:
$str_sql_query = "SELECT * FROM $table WHERE number LIKE '$number' and name LIKE '$name' and address LIKE '$address' limit $s";
2) определяем кол-во страниц
3) создаём цикл который выводит от 1 до 30 строк
4) делаем ссылку на страницу где выводим 30-60 строки


Подскажите какими функциями можно это осуществить



--------------------
<удалено администрацией>
PM MAIL ICQ   Вверх
Temp
Дата 1.11.2005, 18:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 577
Регистрация: 12.1.2003

Репутация: нет
Всего: -3



Упростим задачу:

SELECT * FROM pet - так выводятся все данные (их 100).

как вывести не все а первых 30 ?
а потом вывести 30-60 строки.


--------------------
<удалено администрацией>
PM MAIL ICQ   Вверх
Чих_и_Пых_Пых(MySql_and_PHP)
Дата 1.11.2005, 21:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 20.4.2005

Репутация: 1
Всего: 2



1) - Подсчитываем строки:

Код

$sql = mysql_query("SELECT * FROM pet");
$rezult = mysql_num_rows($sql);


$rezult - Выведет колличество записей в таблице.

1) Определяем колличество страниц:

Код

$count_list = $rezult / 30;


1) Создаём цикл:

Код


if(!$_GET[count]) $count = 0; else $count = $_GET[count] * 30;

if($_GET[count] > $rezult){ echo"<h1>Такого не может быть</h2>"; }

@$resul=mysql_query("SELECT * FROM pet LIMIT $count,30");
while($rez=mysql_fetch_array($result)):

echo"$rez[table]"; // Выводим результат, т.е. нужные 30 строк.

endwhile;


// Теперь выводим страницы:

$b=0;

while($b <= $count_list):

$b++;

echo"<a href=?count=$b>$b</a>&nbsp;&nbsp;";

endwhile;


PM MAIL   Вверх
Temp
Дата 2.11.2005, 00:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 577
Регистрация: 12.1.2003

Репутация: нет
Всего: -3



Чих_и_Пых_Пых(MySql_and_PHP)
Не совсем то, но зато я мысл уловили как мне сделать (LIMIT $count,30)
спасибо


--------------------
<удалено администрацией>
PM MAIL ICQ   Вверх
PARROT
Дата 2.11.2005, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Temp, ты всю задачу расскажи, а не только постраничку. Тебе уже 2 рабочих, разных, варианта дали.
Проблема твоя не в постраничке.

Это сообщение отредактировал(а) PARROT - 2.11.2005, 11:46


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Temp
Дата 2.11.2005, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 577
Регистрация: 12.1.2003

Репутация: нет
Всего: -3



Всё, сделал
код ужасный получился, показывать не буду, т.к. не стоит с него пример брать smile

чать только покажу, сумую нужную:
Код

$str_sql_query = "SELECT * FROM $table WHERE number LIKE '$number' and name LIKE '$name' and address LIKE '$address'  LIMIT $start, $po";      //  LIMIT 3,3

if (!$result = mysql_query($str_sql_query, $link)) {echo "не выполнить запрос 1"; exit();}
while ($mas = mysql_fetch_row($result))
{
echo "<tr>";
echo "<td>".$mas[0]."</td>"; echo "<td>".$mas[1]."</td>"; echo "<td>".$mas[2]."</td>";
echo "</tr>";
}

  # str_sql_query2
$str_sql_query2 = "SELECT COUNT(*) FROM $table WHERE number LIKE '$number' and name LIKE '$name' and address LIKE '$address' ";
if (!$result2 = mysql_query($str_sql_query2, $link)) {echo "не выполнить запрос 2"; exit();}
$assoc=mysql_fetch_assoc($result2);
echo "Условию соответствует: ".$assoc['COUNT(*)']." записей";

// тут пропущенно

$list_all = ($assoc['COUNT(*)']/$po);
$list = ceil($list_all);


echo "<br />Страница: ";
for ($i=0; $i <= ($list-1); $i++)
{echo "<a href="."?number=$number&name=$name&address=$address&count=$i".">[".$i."]</a>"; echo " ";}



--------------------
<удалено администрацией>
PM MAIL ICQ   Вверх
PARROT
Дата 2.11.2005, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Работает и слава богу!
Цитата
код ужасный получился, показывать не буду, т.к. не стоит с него пример брать

А зря, нужно выкладывать весь код, не смотря на его красоту.
Вот это место не очень грамотно сделано, если у тебя запрос из формы идет в GET, то ответ по кнопке, в строке выбранных данных должен быть в ASCII, как в поисковиках яндекс и им подобных.
Код

 # выводим страницы:
...
{echo "<a href="."?number=$number&name=$name&address=$address&count=$i".">[".$i."]</a>"; echo " ";}

Как этого добиться:
Использую функцию, которая кодирует URL в безопасное представление (в соответствии с RFC1738)
Возвращает строку, в которой неалфавитно-числовые символы, заменены на знак процента (%) с последующими двумя 16-ричными цифрами. Это кодирование, описанное в RFC1738, защищает литеральные символы от интерпретации в качестве специальных разграничителей URL и от изменения при передаче с конвертацией символов (как в некоторых email-системах):
Код

string rawurlencode (string str)

Получаем:
Код

 # выводим страницы:
...
{echo "<a href="."?number=".rawurlencode($number)."&name=".rawurlencode($name)&address=".rawurlencode($address)."&send=find&count=$i".">[".$i."]</a>"; echo " ";}
//потом все таки лучше передавать имя кнопки, на которую мы жмем.

Но это лишь часть кода, остальную проверить не удалось, выскакивают ошибки.

Это сообщение отредактировал(а) PARROT - 2.11.2005, 21:44


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Temp
Дата 3.11.2005, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 577
Регистрация: 12.1.2003

Репутация: нет
Всего: -3



Вот этот код, только для другой таблицы:

Код

<html>

<head>
  <title></title>
</head>

<body bgcolor="f5f5f5">


<?php

include 'bonus.php';

$db_name = 'muzz';
$table = 'all';

$group="%".$_GET[f_group]."%";
$age="%".$_GET[f_age]."%";
$album="%".$_GET[f_album]."%";
$style="%".$_GET[f_style]."%";

if ($_GET[f_group] == "" & $_GET[f_age] == "" & $_GET[f_album] == "" &  $_GET[f_style] == "") {echo "Введите данные в поля запроса"; exit();}


if ($group == "") {$group = "%";}
if ($age == "") {$age = "%";}
if ($album == "") {$album = "%";}
if ($style == "") {$style = "%";}




if (!$link = mysql_connect('localhost', 'root', '')) {echo "не могу соедениться с сервером"; exit();}
if (!mysql_select_db ($db_name, $link)) {echo "Не могу выбрать БД";exit();}


# Определяем результат
$str_sql_query2 = "SELECT COUNT(*) FROM `$table` WHERE `group` LIKE '$group' and `age` LIKE '$age' and `album` LIKE '$album' and `style` LIKE '$style'";
if (!$result2 = mysql_query($str_sql_query2, $link)) {echo "не выполнить запрос 2"; exit();}
$assoc = mysql_fetch_assoc($result2);
echo "Условию соответствует: ".$assoc['COUNT(*)']." записей<br />";

if ($count == "0") {$start = "0";} else {$start = ($count * $po);}
echo "Начиная с: ".($start+1)."<br />";

$str_sql_query = "SELECT * FROM `$table` WHERE `group` LIKE '$group' and `age` LIKE '$age' and `album` LIKE '$album' and `style` LIKE '$style' LIMIT $start, $po";
if (!$result = mysql_query($str_sql_query, $link)) {echo "не выполнить запрос 1"; exit();}

echo $new_table_1; echo $up_table;
$c="1";
while ($mas = mysql_fetch_row($result))
{
       if ($c == "0") {$color = "#d5d5d5"; $c = "1";} else {$color = "#e5e5e5"; $c = "0";}
       echo "<tr bgcolor=".$color.">";
       echo "<td>".$mas[0]."</td>"; echo "<td>".$mas[1]."</td>"; echo "<td>".$mas[2]."</td>"; echo "<td>".$mas[3]."</td>"; echo "<td>".$mas[4]."</td>"; echo "<td>".$mas[5]."</td>"; echo "<td>".$mas[6]."</td>";
       echo "</tr>";
}

echo "</table>";
mysql_close($link);


# Теперь выводим страницы:
$list_all = ($assoc['COUNT(*)']/$po);
$list = ceil($list_all);


echo "<br />Страница: ";
for ($i=0; $i < ($list); $i++)
{echo "<a href="."?f_group=".rawurlencode($_GET[f_group])."&f_age=".rawurlencode($_GET[f_age])."&f_album=".rawurlencode($_GET[f_album])."&style=".$_GET[f_style]."&count=$i".">[".($i+1)."]</a>"; echo " ";}


?>



</body>

</html>


Спасибо всем кто принимал в этом участие !!!



--------------------
<удалено администрацией>
PM MAIL ICQ   Вверх
HAS
Дата 3.11.2005, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: нет
Всего: 2



как вариант
Код

<?
global $limit;
$connect=mysql_connect("localhost","root","");
mysql_select_db("sample");
if (isset($_GET['page'])) { $page=$_GET['page'];}else{$page=1;}
$table="domains"; //  ваша таблица
$order_by="id"; // сортировать по полю
$sort="DESC"; // ASC -возрастание  DESC - убывание
$news_on_page=10; // новостей на страницу
for ($i=0; $i<$page; $i++) {  $limit=$limit+$news_on_page; }
$result=mysql_query("select * from $table order by $order_by $sort limit $limit,$news_on_page",$connect);
$news_all=mysql_num_rows($result);

for ($i=0; $i<$news_all; $i++)
 {
  $row=mysql_fetch_array($result);
  echo "name news: ".$row['domain']."<br>news:".$row['domain']."<br>"; // $row['название поля для вывода'];
 }


$result=mysql_query("select * from $table",$connect);
$news_all=mysql_num_rows($result);
$pages=$news_all/$news_on_page;
$pages=explode(".",$pages);
if ($pages[0]<0) { $pages=1;}
$f=0;
for ($i=0;$i<$pages[0]; $i++)
{
 $f++;
 if ($page==$f) { echo "<b>&nbsp;$f</b>";}else{echo "&nbsp;<a href=?page=$f><s>$f</s></a>";}
}
?>


PM MAIL   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1304 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.