Перейти к содержимому



Новостная колонка своими руками

#1

Поделиться сообщением #1



Absorb

Absorb
  • Неактивные
  • 1 сообщений
  • Репутация: 0
0

Отправлено 28 Ноябрь 2009 - 23:16

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

З,Ы, .пхп только начал изучать

<?php

$result = mysql_query ("SELECT * FROM new_position",$db);
$myrow = mysql_fetch_array ($result);

$ij = 1;

do
{
$ij++;
printf
(" <p class='newname' align='center'><a href='hlam?id=%s'>%s</a></p>
<p align='center'>%s</p>
<p class='newname' align='center'>%s руб.</p>",

$myrow["id"], $myrow["name"], $myrow["text"], $myrow["price"]);
}
while ($myrow = mysql_fetch_array ($result) and $ij<=5);

?>


расскажу наглядно, хочу собственноручно сделать колонку на сайте, в которой будут из базы подгружаться
новости, с помошью этого когда они выводятся все(все имеющиеся в таблице), а нужно чтоб выводились только последние 5 новостей...
с помощью переменной $ij я добился что подгружаются только 5 но не последние вбитые в таблицу базы, а самые первые...

нужно так:

1 новость
2 новость
3 новость
4 новость
5 новость

вбил новую строчку(новость) в базе
должно выводится так:

2 новость
3 новость
4 новость
5 новость
6 новость

вбил еше новую строчку(новость) в базе
должно выводится так:

3 новость
4 новость
5 новость
6 новость
7 новость

кто понял что хочет мой большой ламерский мозг, прошу помоч...

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. CMS для новичка
  2. Сайт своими руками
  3. Как бесплатно создать интернет магазин или создание магазина своими руками
  4. Создание сайта бесплатно или как создать сайт своими руками
  5. Съехала центральная колонка joomla

#2

Поделиться сообщением #2



ZiTosS

ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 29 Ноябрь 2009 - 03:18

Absorb, обычно последние новости выводят в обратном порядке, то есть

7 новость
6 новость
5 новость
4 новость
3 новость

Ваш кустарный метод конечно не очень для этого подходит, я думаю подобный код будет более понятен и правелен:
<?php

//запросить записи из таблицы new_position, отсортированные в обратном порядке по полю id и ограничить количество пятью первыми
$result = mysql_query( "SELECT * FROM new_position ORDER BY id DESC LIMIT 5", $db );

if( mysql_num_rows( $result ) ) /*если записей не 0 */
{
while( $myrow = mysql_fetch_array( $result ) )
{
printf ("
<p class='newname' align='center'><a href='hlam?id=%s'>%s</a></p>
<p align='center'>%s</p>
<p class='newname' align='center'>%s руб.</p>
",
$myrow["id"], $myrow["name"], $myrow["text"], $myrow["price"]);
}
}
} else { /*если записей 0 */
echo "Новостей нет";
}

?>


Хотя бы записал лучше даже так:
<?php

//запросить записи из таблицы new_position, отсортированные в обратном порядке по полю id и ограничить количество пятью первыми
$result = mysql_query( "SELECT * FROM new_position ORDER BY id DESC LIMIT 5", $db );

if( mysql_num_rows( $result ) ) /*если записей не 0 */
{
while( $myrow = mysql_fetch_array( $result ) )
{
echo "<p class='newname' align='center'><a href='hlam?id={$myrow["id"]}'>{$myrow["name"]}</a></p>";
echo "<p align='center'>{$myrow["text"]}</p>";
echo "<p class='newname' align='center'>{$myrow["price"]} руб.</p>";
}
} else { /*если записей 0 */
echo "Новостей нет";
}

?>


Выведет так как я и сказал выше...

А если честно, то у новостей присущей характеристикой является дата её написания(создания). Вот именно по ней и надо сортировать, так как id хоть и уникально и нарастает, но явно не должно использоваться в сортировке.
  • 0

#3

Поделиться сообщением #3



gaaarfild

gaaarfild
  • Неактивные
  • 596 сообщений
  • Репутация: 0

Отправлено 29 Ноябрь 2009 - 13:41

Сортировка по дате актуальна, если дата задается собственноручно! =) Тогда, при желании можно создать эффект того, что новость добавлена раньше. А если таковой опции нет, то вполне можно и по ID сортировать. В обратном порядке. Если у поля стоит автоинкремент, то никуда последняя добавленная новость не денется. =)
  • 0


Оформление форума – IPBSkins.ru