Форум → Программирование → PHP для идиотов → Постраничный вывод+сортировка
Постраничный вывод+сортировка
Страницы: ← Предыдущая страница • Следующая страница →
-
11 ноября 2008 г. 14:52, спустя 1 час 5 минут 11 секунд
Я на самом деле другим способом пользывался, работало на локалхосте, а когда залил на удаленный сервер и запустил, то страницы не переключались.
Сейчас сделал, как вы сказали, результат к сожалению такой же((
Что делать не знаю((( -
11 ноября 2008 г. 15:01, спустя 9 минут 32 секунды
Блин, сказал же SQL запрос распечатай для начала.
Что делать не знаю(((
ЗЫ. Кто уже догадался про всем известную проблему, просьба молчать! -
11 ноября 2008 г. 15:05, спустя 3 минуты 35 секунд
Блин, сказал же SQL запрос распечатай для начала.
Извеняюсь, но я не знаю как его распечатать… До этого я только проверял на ошибки с помощью команд:echo "$sql<br>\n";
echo mysqli_error($_SESSION['link']);
ЗЫ. Кто уже догадался про всем известную проблему, просьба молчать!
Про register_globals знаю, если вы про это. Загонял данные и через сессию и через GET… -
11 ноября 2008 г. 15:30, спустя 25 минут 26 секунд
Извеняюсь, но я не знаю как его распечатать…
Заменить mysql_query($sql) на die($sql);
И посмотреть, тот ли это запрос, который должен быть. -
11 ноября 2008 г. 15:36, спустя 5 минут 56 секунд
Извеняюсь, но я не знаю как его распечатать…
Заменить mysql_query($sql) на die($sql);
И посмотреть, тот ли это запрос, который должен быть.
Спасибо, заменил, получилось, то что должно быть:
SELECT teachers.id as t_id,famil,teachers.name as tname,otch, birthday,schools.name as schl, category.name as cname, subject.name as sname,kursinfo.kursplan,kursinfo.kursdate,kursinfo.skill, rayons.name FROM rayons, teachers left join schools on teachers.school=schools.id, (kursinfo left join subject on kursinfo.subject=subject.id) left join category on kursinfo.category=category.id where ((teachers.id=kursinfo.tid) and (rayons.id=teachers.rayon)) ORDER BY famil ASC LIMIT 10000
Даннах я так понимаю тут быть не должно, раз die))) -
11 ноября 2008 г. 15:39, спустя 3 минуты
Ну и почему у тебя:
LIMIT 10000
когда должно быть что-то типа:
LIMIT 2,10 -
11 ноября 2008 г. 15:42, спустя 2 минуты 54 секунды
Ну и почему у тебя:
LIMIT 10000
когда должно быть что-то типа:
LIMIT 2,10
Так и есть: 20,10. Просто потом я поменял на 10000 вместо переменных эксперимента ради.
Получается в конце вместо 10000 выводит 20 -
-
11 ноября 2008 г. 15:45, спустя 2 минуты 31 секунду
Ты сказал, что после того как добавил LIMIT появились ошибки. Дык дай тот запрос, КОТОРЫЙ ВЫЗЫВАЕТ ОШИБКИ, не МЕНЯЯ В НЕМ НИЧЕГО. Блин, неужели я так сложно изъясняюсь.
Так и есть: 20,10. Просто потом я поменял на 10000 вместо переменных эксперимента ради.
Получается в конце вместо 10000 выводит 20 -
11 ноября 2008 г. 15:52, спустя 6 минут 48 секунд
Ты сказал, что после того как добавил LIMIT появились ошибки. Дык дай тот запрос, КОТОРЫЙ ВЫЗЫВАЕТ ОШИБКИ, не МЕНЯЯ В НЕМ НИЧЕГО. Блин, неужели я так сложно изъясняюсь.
Так и есть: 20,10. Просто потом я поменял на 10000 вместо переменных эксперимента ради.
Получается в конце вместо 10000 выводит 20
Ошибка была всего лишь из за того, что ORDER BY сливался с LIMIT. Тоесть ORDER BYLIMIT
Только и всего. Поставил пробел, все работает. Только вот страницы на локалхосте перекключаются как надо и сортировка сохранется. А на сайте 1-я страница только появляется, при нажатии на любую ссылку, будь то <2 _ 3_ 4_ 5 > -
11 ноября 2008 г. 15:57, спустя 5 минут 35 секунд
Я еще раз дублирую свой пост:
Как это, интересно? SQL запрос выдает данные для 2-ой страницы, а скрипт все-равно рисует первую?
КАК ТАКОЕ МОЖЕТ БЫТЬ?
Я последний раз прошу напечатать SQL запрос для второй страницы и результат его выполнения. -
11 ноября 2008 г. 16:00, спустя 2 минуты 11 секунд
Я еще раз дублирую свой пост:
Как это, интересно? SQL запрос выдает данные для 2-ой страницы, а скрипт все-равно рисует первую?
КАК ТАКОЕ МОЖЕТ БЫТЬ?
Я последний раз прошу напечатать SQL запрос для второй страницы и результат его выполнения.
Сейчас более подробно изложу свой код и принцип, мне кажется дело в неправильном расположении или написании. -
11 ноября 2008 г. 16:01, спустя 1 минуту 43 секунды
МЛЯ, мне не надо пока код. Это потом. Мне надо запрос. Ты русский язык понимаешь? -
11 ноября 2008 г. 16:02, спустя 45 секунд
relictx, покажи запрос, который выполняется, когда ты нажимаешь страницу 2 или 3 или 10. -
11 ноября 2008 г. 16:09, спустя 6 минут 47 секунд
Грузится первый php файл, в котором пользователь выбирает свой РАЙОН. Выбранный район заносится в сессию $_SESSION['rayon'].
Грузится второй php файл, главный, на который выводится база.
Итак принцип по порядку:
1) Подключение к базе
2) Заголовки к столбцам<td valign="top" width="100%">
<div id="content" >
<form action="2.php" method="post">
<table cellspacing="0">
<thead>
<tr>
<th>
<input type="checkbox" title="toggle all" onclick="toggleSelectFor(this, 'selection')" /></th>
<th>
<?php
$page = (int) $_GET['i'];
if ($i==0)
{
$i=1;
}
$sort = isset($_GET['sort']) && $_REQUEST['sort'] == 'DESC' ? 'ASC' : 'DESC';
echo '<a href="browse.php?field=famil&sort='.$sort.'">Фамилия</a>';
?>
</th>
.
.
.
<?php
$sort = isset($_GET['sort']) && $_REQUEST['sort'] == 'DESC' ? 'ASC' : 'DESC';
echo '<a href="browse.php?field=kursinfo.kursplan&sort='.$sort.'">Планируемый год</a>';
?>
</th>
3) sql запрос и дополнения к нему, а также сортировка:<?php
$page = (int) $_GET['i'];
$sql="SELECT teachers.id as t_id,famil,teachers.name as tname,otch, birthday,schools.name as schl,
category.name as cname, subject.name as sname,kursinfo.kursplan,kursinfo.kursdate,kursinfo.skill, rayons.name
FROM
rayons,
teachers left join schools on teachers.school=schools.id,
(kursinfo left join subject on kursinfo.subject=subject.id)
left join category on kursinfo.category=category.id
where ((teachers.id=kursinfo.tid) and (rayons.id=teachers.rayon))";
if ($_SESSION['rayon']!=1) {
if (isset($_SESSION['rayon'])) $sql.=" and teachers.rayon=".$_SESSION['rayon'];
}
if ($_POST['famil']!=""){
$sql.= " and (famil like '".$_POST['famil']."%')";
//echo $sql;
}
.
.
.
// ЭТО СОРТИРОВКА
$fields = array('famil', 'teachers.name', 'otch', 'birthday', 'subject.name', 'schools.name', 'kursinfo.kursplan', 'rayons.name');
$field = isset($_GET['field']) && in_array($_REQUEST['field'], $fields) ? $_REQUEST['field'] : 'name';
$sql.= " ORDER BY ".$field." ". $sort;
$sql.= " LIMIT " .$page*$perpage." " .$perpage;
4) Заносим в массив$result = mysqli_query($_SESSION['link'],$sql);
.
.
.
5) Вывод по страницам<?php
echo '<input name="page_i" id="page_i" type="hidden" value="'.$_SESSION['page_i'].'">';
echo '<input name="pagenumber" id="pagenumber" type="hidden" value="'.$_SESSION['pagenumber'].'">';
if ($_SESSION['page_i']-$count_on_page<1){
echo '·<span>«</span>';
}else{
echo '·<a href="#" onclick="nextPageList(\''.($_SESSION['page_i']-$count_on_page).'\');">«</a>';
}
for ($i=$_SESSION['page_i'];(($i*$page_size)<=$rows_count)&&
($i<($_SESSION['page_i']+$count_on_page));$i++)
{
echo '·';
if ($i!=$_SESSION['pagenumber']){
echo '<a href="?field='.$_REQUEST['field'].'&sort='.$_REQUEST['sort'].'" onclick="gotoPage('.$i.');">'.$i.'</a>';
}
else{
echo '<span class="batchCurrent">'.$i.'</span>';
}
}
if (($rows_count>($i-1)*$page_size)&&($i<($_SESSION['page_i']+$count_on_page)))
{
echo '·';
if ($i!=$_SESSION['pagenumber']){
echo '<a href="#" onclick="gotoPage('.$i.');">'.$i.'</a>';
}
else{
echo '<span class="batchCurrent">'.$i.'</span>';
}
}
if (($_SESSION['page_i']+$count_on_page-1)*$page_size>$rows_count){
echo '·<span>»</span>';
}else{
echo '·<a href="#" onclick="nextPageList(\''.($_SESSION['page_i']+$count_on_page).'\');">»</a>';
}
?>
</span>
</td>
<td>
<select name="perpage" onchange="document_collection_setbatching();">
<?php
for ($i=1;$i<4;$i++){
if ($i*10==$page_size){
echo "<option value=\"".($i*10)."\" selected=\"true\">".($i*10)."</option>";
}
else {echo "<option value=\"".($i*10)."\">".($i*10)."</option>";}
}
?>
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!