Forum Webscript.Ru

Программирование => PHP => Тема начата: -DieseLok- от 28 Ноября 2004, 15:44:28

Название: Вопрос! Помогите пожалуйста!
Отправлено: -DieseLok- от 28 Ноября 2004, 15:44:28

$connection = mysql_connect("localhost", "root", "");
$db = mysql_select_db ("dbase");
$curr_page=$_GET[\'page\'];
$po="6";
$limit=$_GET[\'page\'];
if ($curr_page==1) {$s=0;} else {$a=$limit-1;$s=$a*$po;}

$query = "SELECT * FROM songs WHERE date = \'2004-11-27\' ORDER BY si_id LIMIT $s,$po";
$result = mysql_query($query, $connection);
while ($rows = mysql_fetch_array($result))
{
echo"$rows[so_name]
";
}

$query = "SELECT * FROM songs WHERE date = \'2004-11-27\'";
$result = mysql_query($query, $connection);
$posts=mysql_numrows($result);


$cpages=$posts/$po;

// Воспользовавшись поиском нашел пример, постраничьного вывода:

for ($i = 1; $i <= $cpages; $i++)
   $pages[$i] = ($i == $curr_page) ? \'\'.$i.\'\' : \'\'.$i.\'\';

echo \'Страницы: \'.join(\', \', $pages);
?>


Работать то оно работает, !НО! допустим у меня в базе таких записей 13, лимит у меня стоит 6, тоесть єто фактически выходит 3 стриницы (две поные и одна частичьно заполненая), а он вываливает в списке ссылок мне всего 2 страницы :( и это выходит что у меня 13,14 записи гуляют

Что делать???????? Помогите пожалуйста!
Название: Вопрос! Помогите пожалуйста!
Отправлено: Макс от 28 Ноября 2004, 16:25:46
Судя по коду, у тебя неверно вычисляется кол-во страниц.
Подумай над строкой
 $cpages=$posts/$po;  
Сам подумай, чему будет равен $cpages при 13 ссылках.
И как будет работать цикл ниже
Название: Вопрос! Помогите пожалуйста!
Отправлено: -DieseLok- от 28 Ноября 2004, 17:24:15
ну а какже мне узнать количество страниц?
я вытаскиваю из базы количество записей и делю на нужное количество на страницу... правильно?
Будет ровно 2,2-ум
тоесть получаеться мне нужно округлить до 3-ох?

если я не ошибаюсь это делает round();???
Название: Вопрос! Помогите пожалуйста!
Отправлено: ThE0ReTiC от 28 Ноября 2004, 17:31:32
Цитировать
-DieseLok-:
если я не ошибаюсь это делает round();???

ошибаешься так как тебе нужно округление всегда в большую сторону
это делает [p]ceil[/p]
Название: Вопрос! Помогите пожалуйста!
Отправлено: -DieseLok- от 28 Ноября 2004, 17:43:15
ДА! ДА! ДА!!!!!!!!!!! Спасибо! всё рулит! вот ниже исправления:

    $connection = mysql_connect("localhost", "root", "");
    $db = mysql_select_db ("dbase");
$curr_page=$_GET[\'page\'];
$po="6";
$limit=$_GET[\'page\'];
if ($curr_page==1) {$s=0;} else {$a=$limit-1;$s=$a*$po;}

    $query = "SELECT * FROM songs WHERE date = \'2004-11-27\' ORDER BY si_id LIMIT $s,$po";
    $result = mysql_query($query, $connection);
    while ($rows = mysql_fetch_array($result))
{
echo"$rows[so_name]
";
}
     
    $query = "SELECT * FROM songs WHERE date = \'2004-11-27\'";
    $result = mysql_query($query, $connection);
    $posts=mysql_numrows($result);
[B]
$npages=ceil($posts/$po);
$cpages=$npages;
[/B]
// Воспользовавшись поиском нашел пример, постраничьного вывода:

for ($i = 1; $i <= $cpages; $i++)
   $pages[$i] = ($i == $curr_page) ? \'\'.$i.\'\' : \'\'.$i.\'\';

echo \'Страницы: \'.join(\', \', $pages);
?>