|
| |
|
|
| |
для: Unkind
(02.01.2008 в 20:29)
| | | Unkind, Спасибо! Ща разбираться буду...=) | |
| |
|
|
| |
|
|
| |
для: 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:00)
| | | <цитата>
Unkind
Запрашивается определенное кол-во записей и перед выводом каждый раз происходит проверка примерного размера страницы. Если размер следующего сообщения превысит допустимый, то происходит остановка.
</цитата>
Как это на PHP реализовать ??? | |
| |
|
|
| |
|
|
| |
для: Fernus
(02.01.2008 в 13:55)
| | | Ну это функция возращает длинну, измеренную в байтах, если я верно понял.
А как разбивать (выводить) сообщения с помощью этой функции?
Чёт не догоняю... | |
| |
|
|
| |
|
|
| |
для: 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:43)
| | | >
>SELECT id, LENGTH(hdr), LENGTH(txt) ORDER BY id
>
|
Что делает "LENGTH()" ??? | |
| |
|
|
| |
|
|
| |
для: Fernus
(02.01.2008 в 13:17)
| | |
SELECT id, LENGTH(hdr), LENGTH(txt) ORDER BY id
|
| |
| |
|
|
| |
|
|
| |
для: kasmanaft
(02.01.2008 в 13:13)
| | | Ну а как тогда вывести количество сообщений по размеру ??? | |
| |
|
|
|