-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
tradeukraine |
08-12-2003 20:45 215211 |
Счас использую такой код
Код:
$config['host'] = 'localhost';
*$config['user'] = 'root';
*$config['pass'] = '';
*$config['db'] = 'tradeuk';
*$start = '&nbsp; Приветствуем, Вас уважаемые посетители!<br>';
*$t = '
* <table border="0" width="480" class=man>
* *<tr>
* * <td width="480" height="20" class=menu>
* * <font color="#FFFFFF">&#9658;</font> %a</td>
* *</tr>
* *<tr>
* * <td width="480" class="men">
* * %n <a href="%s">перейти</a></td>
</tr>
* </table>
*';
*echo $start;
*mysql_connect($config['host'], $config['user'], $config['pass']) or die('Неверный хост');
*mysql_select_db($config['db']) or die('Сайт не доступен, нет связи с базой данных');
*$max = mysql_fetch_array(mysql_query('SELECT MAX(id) FROM news_index'));
*$max = $max['MAX(id)']+1;
*while($result = mysql_fetch_array(mysql_query('SELECT * FROM news_index WHERE id<' . $max . ' ORDER BY id DESC;')))
{
echo str_replace(Array('%a', '%n', '%s'), Array($result['name'], $result['message'], $result['subject']), $t);
$max = $result['id'];
}
он вполне устраивает, и хорошо работает,
как можно ограничить вывод скажем до 10 сообщений? или точней id
[s]Исправлено: tradeukraine, 19:52 8-12-2003[/s]
|
vadimiron |
08-12-2003 23:14 215212 |
Просто в запрос mysql_query после всех данных дописываешь
limit x,y , где x,y числа
x-с какого элемента начинать выводить записи
y-сколько записей выводить
то есть если нужно вывести 10 записей с первого, удовлетворяющего условию where или like, нужно написать
limit 0,10
|
tradeukraine |
09-12-2003 13:00 215213 |
vadimiron
Пробовал - менять что то не пошло,
или ошибка или показывает все записи,
как можно поменять в этом коде?
|
tradeukraine |
09-12-2003 20:07 215214 |
немогу понять, как вывисти скажем 1 и 8 запись?
|
tradeukraine |
11-12-2003 20:29 215215 |
Народ!
Поможить,
Очень нужно!!!
|
Prisoner |
12-12-2003 03:11 215216 |
Цитата:
SELECT [STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY]
[DISTINCT | DISTINCTROW | ALL]
select_expression,...
[INTO {OUTFILE | DUMPFILE} 'file_name' export_options]
[FROM table_references
[WHERE where_definition]
[GROUP BY {unsigned_integer | col_name | formula} [ASC | DESC], ...
[HAVING where_definition]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]
[LIMIT [offset,] rows]
[PROCEDURE procedure_name]
[FOR UPDATE | LOCK IN SHARE MODE]]
|
А вот по самой феньке LIMIT:
Цитата:
The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments. The arguments must be integer constants. If two arguments are given, the first specifies the offset of the first row to return, the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1):
mysql> SELECT * FROM table LIMIT 5,10; # Retrieve rows 6-15
To retrieve all rows from a certain offset upto the end of the result set, you can use -1 for the second parameter:
mysql> SELECT * FROM table LIMIT 95,-1; # Retrieve rows 96-last.
If one argument is given, it indicates the maximum number of rows to return:
mysql> SELECT * FROM table LIMIT 5; # Retrieve first 5 rows
|
Надеюсь разберетесь.
|
tradeukraine |
12-12-2003 14:41 215217 |
Prisoner
сапасибо тебе, но старый я учится,
блин тыкал тыкал так и ненатыкал :)
Если можно поправь верхний код,
Мне нужно вывисти с 1 по 15 записть
Заранее спасибо - огромное!
|
vadimiron |
12-12-2003 14:59 215218 |
Насколько я понимаю надо подправить только строку while:
while($result = mysql_fetch_array(mysql_query("SELECT * FROM news_index WHERE id<'$max' ORDER BY id DESC LIMIT 0,15")))
У меня к Вам и ко всем остальным один вопрос - в скобках цикла while вроде должно стоять условие выполнения этого цикла, а у Вас стоит присвоение значений переменной $result, в этом случае я не понимаю, в чём заключается условте???
Я бы написал бы данный кусок кода вот так:
$sql=mysql_query("SELECT * FROM news_index WHERE id<'$max' ORDER BY id DESC LIMIT 0,15");
for($i=0;$i<$sql;$i++)
{
$result=mysql_fetch_array($sql);
//и далее всё, что нужно при каждом выполнении цикла
}
Добавлено:
УПС
написал глупость
вот правильный код:
Я бы написал бы данный кусок кода вот так:
$sql=mysql_query("SELECT * FROM news_index WHERE id<'$max' ORDER BY id DESC LIMIT 0,15");
for($i=0;$i<mysql_num_rows($sql);$i++)
{
$result=mysql_fetch_array($sql);
//и далее всё, что нужно при каждом выполнении цикла
}
|
Prisoner |
13-12-2003 03:06 215219 |
vadimiron
Цитата:
Краеугольный камень PHP - выражения.
|
mysql_fetch_array - построчно загоняет в массив результаты запроса и как только они кончились, вернет FALSE, что будет являться окончанием обработки.
Имхо, вариант с WHILE более читабелен и лаконичен, но вы конечно же можете быть со мной не согласны :)
tradeukraine, мне кажется, что vadimiron ответил на вопрос, надо исправить лишь запросик к базе данных.
"Ну и запросы у вас" - сказала база данных и повисла. :)
|
tradeukraine |
13-12-2003 12:59 215220 |
Люди добрые спасибо Вам огромное!
|
vadimiron |
13-12-2003 15:57 215221 |
Prisoner
Цитата:
оффтопик: "Ну и запросы у вас" - сказала база данных и повисла.
|
А у меня вроде проходит
:)
:biggrin:
|
Время: 23:12.
© OSzone.net 2001-