Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вывод данных с учётом размера...

Сообщения:  [1-10]   [11-16] 

 
 автор: Fernus   (02.01.2008 в 20:45)   письмо автору
 
   для: Unkind   (02.01.2008 в 20:29)
 

Unkind, Спасибо! Ща разбираться буду...=)

   
 
 автор: Unkind   (02.01.2008 в 20:29)   письмо автору
 
   для: Fernus   (02.01.2008 в 14:36)
 

Первый способ. Позволяет считать еще и разметку. Хотя, это можно при желании и ко второму приделать.

<?php
define
'LIMIT'1000 );

$s = isset( $_GET['s'] ) ? (int) $_GET['s'] : 0;

$query "SELECT * FROM `tbl` WHERE ... ORDER BY ... ASC LIMIT " $s ", 50;";

if( !(
$sql mysql_query($query)) )
{
    die(
    
'Failure: ' mysql_error() . ' ' .
    
'File: ' __FILE__ ' ' .
    
'Line: ' __LINE__
    
);
}

$num_rows mysql_num_rows$sql );

$buffer '';

for( 
$buffer ''$row mysql_fetch_assoc($sql); $s++ )
{
    
$tmp htmlspecialchars($row['field']) . "<br />\r\n";
    
    if( 
strlen($tmp) + strlen($buffer) > LIMIT )
    {
        break;
    }

    
$buffer .= $tmp;
}

// Освобождение памяти от результата запроса
mysql_free_result$sql );

echo 
$buffer;

if( 
$num_rows $s )
{
    echo 
"<a href='" $_SERVER['PHP_SELF'] . "?s=" $s "'>Далее</a><br />\r\n";
}

// ...
?>


Второй. По-моему, этот лучше.

<?php
// ...

define'LIMIT'500 );

$s = isset( $_GET['s'] ) ? (int) $_GET['s'] : 0;

$query "SELECT LENGTH(`field`) AS `field_length` FROM `table` WHERE ... ORDER BY ... ASC LIMIT " $s ", 100;";

if( !(
$sql mysql_query($query)) )
{
    die(
    
'Failure: ' mysql_error() . ' ' .
    
'File: ' __FILE__ ' ' .
    
'Line: ' __LINE__
    
);
}

for( 
$size 0$row_count 0$row mysql_fetch_assoc($sql); $size += $row['field_length'], $row_count++ )
{
    if( 
$row['field_length'] + $size LIMIT )
    {
        break;
    }
}

$query "SELECT * FROM `table` WHERE ... ORDER BY ... ASC LIMIT " $s ", " $row_count ";";

if( !(
$sql mysql_query($query)) )
{
    die(
    
'Failure: ' mysql_error() . ' ' .
    
'File: ' __FILE__ ' ' .
    
'Line: ' __LINE__
    
);
}

while( 
$row mysql_fetch_assoc($sql) )
{
    echo 
htmlspecialchars($row['field']) . "<br />\r\n";
}

if( 
$row_count )
{
    echo 
"<a href='" $_SERVER['PHP_SELF'] . "?s=" . ($s $row_count) . "'>Далее</a><br />\r\n";
}

// ...
?>

   
 
 автор: Fernus   (02.01.2008 в 14:36)   письмо автору
 
   для: Fernus   (02.01.2008 в 14:00)
 

<цитата>
Unkind
Запрашивается определенное кол-во записей и перед выводом каждый раз происходит проверка примерного размера страницы. Если размер следующего сообщения превысит допустимый, то происходит остановка.
</цитата>

Как это на PHP реализовать ???

   
 
 автор: Fernus   (02.01.2008 в 14:00)   письмо автору
 
   для: Fernus   (02.01.2008 в 13:55)
 

Ну это функция возращает длинну, измеренную в байтах, если я верно понял.
А как разбивать (выводить) сообщения с помощью этой функции?
Чёт не догоняю...

   
 
 автор: Fernus   (02.01.2008 в 13:55)   письмо автору
 
   для: Fernus   (02.01.2008 в 13:54)
 

Ой...ступил...извиняюсь...

   
 
 автор: Fernus   (02.01.2008 в 13:54)   письмо автору
 
   для: Trianon   (02.01.2008 в 13:51)
 

>вопрос, видимо, к справочнику функций SQL?
>
>http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_length

Можно ссылочку на справочник SQL где это есть...?=)

   
 
 автор: Trianon   (02.01.2008 в 13:51)   письмо автору
 
   для: Fernus   (02.01.2008 в 13:46)
 

вопрос, видимо, к справочнику функций SQL?

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_length

   
 
 автор: Fernus   (02.01.2008 в 13:46)   письмо автору
 
   для: Trianon   (02.01.2008 в 13:43)
 

>

>SELECT id, LENGTH(hdr), LENGTH(txt) ORDER BY id 
>


Что делает "LENGTH()" ???

   
 
 автор: Trianon   (02.01.2008 в 13:43)   письмо автору
 
   для: Fernus   (02.01.2008 в 13:17)
 


SELECT id, LENGTH(hdr), LENGTH(txt) ORDER BY id 

   
 
 автор: Fernus   (02.01.2008 в 13:17)   письмо автору
 
   для: kasmanaft   (02.01.2008 в 13:13)
 

Ну а как тогда вывести количество сообщений по размеру ???

   

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования