|
|
|
|
|
для: sim5
(08.08.2009 в 04:11)
| | сколько выдержки, браво! я бы так смог!
зы: автор, если нум должен быть фиксированным, то при 25 записях в таблице всегда и последней странице всегда 5 последних записей будут выводить с 5 пустыми ячейками. арифметика, первый класс, блин... | |
|
|
|
|
|
|
|
для: Xolod
(08.08.2009 в 01:54)
| | Ну боже мой, вы $num не только можете фиксированным сделать, вы его хоть гвоздем прибейте ) Этот параметр у вас определяет количество выводимых строк, ячеек и т.п., то есть, это мера. Но, блоку, циклу, который выводит эти самые данные, нужно отдавать не этот параметр, а расчитанный по условию - если количество следующих выводимых данных, превышает $num, то выводим количество равное $num, если же нет, то выводим не количество равное $num, а количество равное остатку.
Вы же гоните на страницу по жестко заданному размеру, от сюда у вас и проблемы. Так не делается. | |
|
|
|
|
|
|
|
для: Xolod
(08.08.2009 в 01:54)
| | А что если строки таблицы выводить в цикле? То есть заносим первые значения в таблицу дальше проверяем есть ли еще записи в базе, если есть создаем еще одну строку таблицы.
Вот приметивный код который должен внести небольшую ясность в мои слова:
<table>
<tr>
тут ячейки с постоянной информацией(шапка таблицы)
</tr>
<?
$result = mysql_query("select * .....")// короче тут запрос к базе и вытаскивание нужного контента, ЭТО именно тот запрос с которым вы дальше работаете, а не подсчет числа записей в таблице!!!
$myrow=mysql_fetch_array($result)// заносим первую строку в массив
//и дальше собственно цикл
do
{
echo "
<tr>
<td>".$myrow['chtoto']."</td>
...................
</tr>
";
}
while($myrow=mysql_fetch_array($result))
// В общем думаю все понятно: цикл создает строчку если в базе есть еще запись и не получается пустых ячеек и все отлично работает
?>
</table>
|
P.S. Здесь указана только идея а не готовый скрипт!!! Так что прошу без критики
_________________________
Вам помогут модифицировать скрипт здесь: http://www.phpsite.z4.ru/zakaz.php | |
|
|
|
|
|
|
|
для: sim5
(07.08.2009 в 18:22)
| | $num и должно быть фиксированым. Мне нужно чтобы по 10 записей выводилось на страницу, а не зависящим от количества записей в таблице. А вот проверку на существование данных в масиве я что то не соображу как. | |
|
|
|
|
|
|
|
для: Xolod
(07.08.2009 в 16:32)
| | Чтобы "рисовалась" правильно, нужно правильно определять $num, а это значение у вас фиксировано, и всегда равен 10. Либо проверять и выводить ячейки только тогда, когда существуют в массиве значения. | |
|
|
|
|
|
|
| Здравствуйте!
Есть скрипт который выводит данные из таблицы в mysql на страницу и рисует таблицу с постраничной навигацией.
<style type="text/css">
TABLE {
border: 4px double #fc0; /* Параметры двойной рамки */
width: 80%; /* Ширина таблицы */
}
TD {
padding: 5px; /* Поля в ячейках */
background: #f0f0f0; /* Цвет фона в ячейке */
}
</style>
<center>
<?php
//Соединение с базой данных
require_once("config.php");
// Переменная хранит число сообщений выводимых на станице
$num = 10;
// Извлекаем из URL текущую страницу
$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result = mysql_query("SELECT COUNT(*) FROM fspt");
$posts = mysql_fetch_row($result);
// Находим общее число страниц
$total = intval(($posts[0] - 1) / $num) + 1;
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
if($page > $total) $page = $total;
// Вычисляем начиная к какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start
$result = mysql_query("SELECT * FROM fspt LIMIT $start, $num");
// В цикле переносим результаты запроса в массив $postrow
while ( $postrow[] = mysql_fetch_array($result))
echo "<table>";
echo "<tr><th>Имя</th><th>Дата регистрации</th><th>Дислокация</th><th>Кта</th><th>Копка</th><th>Дред</th><th>Кариер</th><th>Должность</th><th>Информация</th><th>Прочее</th></tr>";
for($i = 0; $i < $num; $i++)
{
echo "<tr>";
echo "
<td>".$postrow[$i]['nick']."</td>
<td>".$postrow[$i]['date']."</td>
<td>".$postrow[$i]['system']."</td>
<td>".$postrow[$i]['kta']."</td>
<td>".$postrow[$i]['mining']."</td>
<td>".$postrow[$i]['dred']."</td>
<td>".$postrow[$i]['capital']."</td>
<td>".$postrow[$i]['dolzhnost']."</td>
<td>".$postrow[$i]['info']."</td>
<td>".$postrow[$i]['old']."</td>";
echo " </tr>";
}
echo "</table>";
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=view.php?page=1><<</a>
<a href=view.php?page='. ($page - 1) .'><</a> ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' <a href=view.php?page='. ($page + 1) .'>></a>
<a href=view.php?page=' .$total. '>>></a>';
// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 2 > 0) $page2left = ' <a href=view.php?page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=view.php?page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
if($page + 2 <= $total) $page2right = ' | <a href=view.php?page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=view.php?page='. ($page + 1) .'>'. ($page + 1) .'</a>';
// Вывод меню
echo $pervpage.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$nextpage;
?>
|
Предположим в базе 25 записей
количество выводимых записей на страницу 10
Скрипт правильно расчитывает коичество страниц 3
Но на последней странице он выведет 5 записей и 5 пустых ячеек таблицы
Что можно сделать, чтобы рисовалась табличка только на те 5 записей что должны быть на последней странице? | |
|
|
|
|