Доброго времени суток, возникла проблема с методом get и последующей нумерацией страниц по количеству информации на них
Есть фаил
http://www.gviragon.ru/pupils.php
Выбирающий из БД три факультета
При переходе по каждой ссылки, получаем страницу с учениками именно этого факультета, используя GET, например
http://gviragon.ru/faculty.php?faculty=Элквуд
Но при выборки я делаю так, чтобы на странице могло присутствовать определенно число рядов из БД
читать дальше
if (!$_GET[page]) { $page=0; } else {$page = $_GET[page];}
$gb_on_page = "50";
$start = $page*$gb_on_page;
$result = mysql_query("SELECT id, nick, email, info, course, stat, faculty FROM test WHERE faculty='" . mysql_escape_string($_GET['faculty']) . "' AND (stat = 'Ученик' OR stat = 'Префект') ORDER BY course DESC LIMIT $start, $gb_on_page ");
И внизу вывод нумерации по страницам, который тоже использует метод get
читать дальше
$rez = mysql_fetch_row($result);
shownumerlist($page, $rez[0], $gb_on_page, $_SERVER[PHP_SELF]."?");
Сама функция, которая формирует нумерацию по страницам
читать дальше
//Вывод списка номеров страниц для перехода между ними
$col=$num/$gb_on_page;
print "<center>";
if ($num > $gb_on_page){
print "<b>Страницы: </b>";
if($num>$gb_on_page & $page>0){
print "<a href=\"{$pagename}page=".($page-1)."\"><<</a>";
}
for(
$i=0;$i<$col;$i++){ if(($i)!=$page)
print "[<a href=\"".$pagename."page=$i\">".($i+1)."</a>] ";
else
print "<b>".($i+1)."</b>"." ";
}
}
if(
$num>$gb_on_page & $page<$col-1){ print "<a href=\"{$pagename}page=".($page+1)."\">>></a>";
}
print "</center>";
}?>
Таким образом данные полученные с помощью GET в первый раз теряются, и при кликании на 2ую и последующие страницы ничего не выводиться.
Как можно довести это до ума?
Проверяй пост после отправления, а?
$add_faculty =isset($_GET['faculty']) ? $_GET['faculty']."&" : "" ;
shownumerlist($page, $rez[0], $gb_on_page, $_SERVER[PHP_SELF]."?".$add_faculty);
Жуть какая.
Во-первых, лучше считать ряды другим способом:
SELECT SQL_CALC_FOUND_ROWS id, nick, email, info, course, stat, faculty FROM test WHERE бла-бла-бла
SELECT FOUND_ROWS()
Во-вторых, это можно сделать примерно так:
$page = empty($_GET['page']) ? abs($_GET['page']) : 1; //нумерация будет с первой страницы
$start = $limit * ($page - 1); //первый ряд выборки
// здесь SQL-запрос с выборкой данных
$pages = ceil(mysql_result(mysql_query('SELECT FOUND_ROWS()'), 0) / $limit);
$url = $_SERVER['PHP_SELF'].(isset($_GET['faculty']) ? '?faculty='.$_GET['faculty'].'&' : '?');
function PageSelector(){
global $pages, $url;
if ($pages > 1){ //entia non sunt multiplicanda praeter necessitatem
echo '<table align="center">'."\n".'<tr>'."\n";
$pages++; //потому что нумерация страниц от единицы
for ($i = 1; $i < $pages; $i++){
if ($i != $page)
echo '<td><a href="http://.$url.'page='.$i.'">'.$i.'</a></td>'."\n";
else
echo '<td>'.$i.'</td>'."\n";
}
echo '</tr>'."\n".'</table>'."\n";
}
}
PageSelector($); //вызов функции
Короче, там строчку с «a href» надо читать как
echo '<td><а hrеf="'.$url.'page='.$i.'">'.$i.'</a></td>'."\n";
(пришлось заменить латинскую «e» на русскую «е» в слове «href»)
А в конце я случайно бакс поставил, должно быть, разумеется, просто
PageSelector();
Упс! Сори за код, жуть...
? $_GET['faculty']."&" : "" - данная часть что значит?
--==SS==--
Ок, спасибо. Выглядит понятно, щас буду разбирать
add_faculty equals (if isset $_GET['faculty'] then $_GET['faculty'] else "")
Так понятней?
Да. Но сейчас последующие страницы имеют такой url:
gviragon.ru/faculty.php?Элквуд&page=1
На них опять не осуществляется выборка
if (!$_GET[page]) { $page=0; } else {$page = $_GET[page];}
$gb_on_page = "50";
$start = $page*$gb_on_page;
$kakogo = $_GET['faculty'];
$result = mysql_query("SELECT id, nick, email, info, course, stat, faculty, points FROM test WHERE faculty='" . mysql_escape_string($_GET['faculty']) . "' AND (stat = 'Ученик' OR stat = 'Префект') ORDER BY course DESC LIMIT $start, $gb_on_page ");
if (mysql_num_rows($result) > 0) {
// yes
// print them one after another
echo "<b>Список учеников факультета ".$kakogo."</b><br><table id='journal'>
<tr>
<td><b>#</b></td>
<td><b>Имя</b></td>
<td><b>Информация</b></td>
<td><b>Курс</b></td>
<td><b>Баллы</b></td>
</tr>";
$num = $start;
$classnames = array(
"Префект" => "prf",
"Ученик" => "stu",
 
while($row = mysql_fetch_assoc($result)) {
echo "<tr class='" . $classnames[$row['stat']] . "'>";
echo "<td>" . (++$num) . "</td>";
echo "<td>{$row['nick']}</td>";
echo "<td><a href=\"\" \"openwin('inform.php?id=".$row[id]."');return false\">Информация</a></td>";
echo "<td>{$row['course']}</td>";
echo "<td>{$row['points']}</td>";
echo "</tr>";
}
echo "</table>";
$result = mysql_query("SELECT COUNT(*) FROM test WEHRE WHERE faculty='" . mysql_escape_string($_GET['faculty']) . "' limit 1");
$rez = mysql_fetch_row($result);
$add_faculty =isset($_GET['faculty']) ? $_GET['faculty']."&" : "" ;
shownumerlist($page, $rez[0], $gb_on_page, $_SERVER[PHP_SELF]."?".$add_faculty);
}?>
$add_faculty =isset($_GET['faculty']) ? "faculty=".$_GET['faculty']."&" : "" ;
качать тут:
www.plati.ru/asp/pay.asp?idd=1040991