Автор Тема: Помогите со скриптом для новостей  (Прочитано 4733 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн m0zg

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 2
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите со скриптом для новостей
« : 30 Августа 2004, 10:36:41 »
Вобщем, написал такой скрипт (он добавляет новость в базу: заголовок, статья и автор):

<?php
if (!$header || !$stuff || !$author) {
  echo 
"<b>Что-то забыл?</b>";
  exit;
}
$db mysql_connect("localhost""root");
if (!
$db) {
  echo 
"не могу соединиться с базой!";
  exit;
}
mysql_select_db("news");
$query "insert into news values
	
(\'"
.$header."\', \'".date("Y-m-d")."\', \'".$stuff."\', \'".$author."\')";
$result mysql_query($query);
if (
$result)
echo 
mysql_affected_rows()." новость была добавлена в базу.";
?>

А вот этот скрипт считывает информацию из базы:

<?php
$db mysql_connect("localhost""news");
if (!
$db) {
  echo 
"Не могу соединиться с базой!";
  exit;
}
mysql_select_db("news");
$query "select * from news";
$result mysql_query($query);
$num_results mysql_num_rows($result);
for (
$i=0$i<$num_results$i++) {
  
$row mysql_fetch_array($result);
  echo 
"<table border=0 cellpadding=0 cellspacing=0 width=$table_width height=59>
<tr><td bgcolor=
$header_color>";
  echo 
"<b><font color=$header_font_color size=4>";
  echo 
$row["header"]."</b></font>   ";
  echo 
"<font size=2>";
  echo 
$row["date"]."</font>
</td></tr>"
;
  echo 
"<tr><td bgcolor=$stuff_color><font color=$stuff_font_color>";
  echo 
$row["stuff"]."</font>
</td></tr>"
;
  echo 
"<tr><td bgcolor=$author_color align=right>";
  echo 
"posted by<b>  <font_color=$author_font_color>";
  echo 
$row["author"]."</font></b> ";
  echo 
"</td></tr></table>";
}
?>


Вопрос такой:
Как мне сделать так, чтобы последние занесённые новости отображались сверху, как полагается, а не снизу?
Подскажите...
« Последнее редактирование: 30 Августа 2004, 11:06:49 от RomikChef »

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Помогите со скриптом для новостей
« Ответ #1 : 30 Августа 2004, 11:05:02 »
отсортировать запрос по убыванию.
Вообще-то, твой вопрос имеет отношение исключительно к mysql
тебе следует срочно что-нибудь почитать по базам данных.
Сейчас ты используешь ее как дикарь - микроскоп: для колки орехов.
База служит не только для того, чтобы в нее что-то положить, а потом достать.
С ее помощью можно делать совершенно фантастические вещи. сортировка - это просто мелочь.

$query = "select * from news order by date desc";

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Помогите со скриптом для новостей
« Ответ #2 : 30 Августа 2004, 11:16:40 »
Вообще, у тебя много проблем в скрипте.
в-нулевых: http://phpfaq.ru/slashes
во-первых, для понимания логики программы была придумана такая удобнейшая штука, как отступы. Не стоит ими пренебрегать.
Во-вторых, ты ОЧЕНЬ затрудняешь себе задачу, расставляя в коде собак. Если ты это делаешь из правильных побуждений - чтобы юзер не видел системных сообщений об ошибках, то это надо делать правильно - в ОДНОМ месте написать error_reporting(0);
а не распихивать собак по всему коду. Если у тебя что-то не будет работать, ты не узнаешь - почему. Сообщения об ошибках ты ведь задавал собаками!
В-третьих, вместо трех строчек
Цитировать
$num_results = mysql_num_rows($result);
for ($i=0; $i<$num_results; $i++) {
  $row = mysql_fetch_array($result);

используется одна:
while($row = mysql_fetch_array($result)) {

В-четвертых,
Цитировать
if (!$header || !$stuff || !$author) {
  echo "Что-то забыл?";
  exit;
}

это, конечно, садизм.
Надо бы форму выводить снова, в которой заполнены незабытые поля. проще ведь ввести одно забытое, чем заново набивать по-новой.
в-пятых, вместо
Цитировать

@ $db = mysql_connect("localhost", "news");
if (!$db) {
  echo "Не могу соединиться с базой!";
  exit;
}

для пользователя правильнее писать
mysql_connect("localhost", "news") or die("ошибка базы данных");
- зачем юзеру зать, в чем конкретно ошибка - в коннекте ил в чем-то еще?
А для себя надо писать
mysql_connect("localhost", "news") or die(mysql_error()."
".$query);
чтобы иметь РЕАЛЬНОЕ сообщение об ошибке.
И в любом случае - делать это гораздо короче.

Оффлайн Altaxar

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 222
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
Помогите со скриптом для новостей
« Ответ #3 : 31 Августа 2004, 18:37:34 »
RomikChef прав во всем, но ещё одно замечание, некто ещё не отменял цыкл в обратную сторону если уз на то пошло
  for ($i=0$i<$num_results$i++) 
 заменив на:
 for ($i=$num_results--; $i!=0$i--) 
 а лучше всего сразу писать грамотно, и учится грамотно работать с MySQL, как откаментировал RomikChef
Не все является тем чем кажется.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Помогите со скриптом для новостей
« Ответ #4 : 01 Сентября 2004, 15:46:26 »
Kneaz
ты сам-то понимаешь, что сказал глупость?

Оффлайн Altaxar

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 222
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
Помогите со скриптом для новостей
« Ответ #5 : 02 Сентября 2004, 14:29:17 »
Извеняюсь, я не посмотрел что он использует msql_fetch_row(), после
$result = mysql_query($query);  
если уж и использовал цикл for то вывод делал так:
$result[$i]["header"] и так далие.
Не все является тем чем кажется.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Помогите со скриптом для новостей
« Ответ #6 : 02 Сентября 2004, 14:32:06 »
Это опять глупость.
может быть, ты перестанешь изобретать велосипед, который, к тому же НЕ ЕЗДИТ?

Оффлайн Altaxar

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 222
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
Помогите со скриптом для новостей
« Ответ #7 : 02 Сентября 2004, 15:10:32 »
Ладно, может гдето и есть ошибка, но задача в том что у него уже создан отсортированый масив, только  проблема что он хранится задом на перед или выводится.
И мне совсем не нравится идея после каждого добавления сортировать таблицу.
Не все является тем чем кажется.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Помогите со скриптом для новостей
« Ответ #8 : 02 Сентября 2004, 15:54:36 »
Цитировать
но задача в том что у него уже создан отсортированый масив

откуда ты это взял???
А, понял - из фантазий. А ну бегом читать ман!
Цитировать
Kneaz:
И мне совсем не нравится идея после каждого добавления сортировать таблицу.

Мне тоже. поэтому никто таблицу и не сортирует.

Оффлайн Altaxar

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 222
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
Помогите со скриптом для новостей
« Ответ #9 : 02 Сентября 2004, 17:07:03 »
Нет не из фантазии,
m0zg:
Вобщем, написал такой скрипт (он добавляет новость в базу: заголовок, статья и автор)
Если добавляет, значит с каждым добавлением id записи увеличивается на 1, и не кто не говорил что ее редактирует, значит в итоге получаем отсортировавую таблицу по id, и id как раз и указывает приоритет статьи над другой. Еше скажи что сдесь логики не какой нету.

$i
=0;
while(
$row mysql_fetch_array($result)) 
$mas[$i++]=$row;
array_reverse($mas);
foreach(
$mas as $row){

}
« Последнее редактирование: 02 Сентября 2004, 17:16:08 от Altaxar »
Не все является тем чем кажется.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Помогите со скриптом для новостей
« Ответ #10 : 02 Сентября 2004, 17:26:10 »
подожди.
ты писал, что
Цитировать

но задача в том что у него уже создан отсортированый масив

А сейчас показываешь мне СВОЙ, который ты сам СПЕЦИАЛЬНО сейчас создал.
Тебе не кажется, что это попахивает враньем? Тебе знакомо значение этого слова?

Это не говоря о том, что такой массив АБСОЛЮТНО НЕ НУЖЕН. Ты можешь это понять? У тебя проблемы не только с письмом по-русски, но и с чтением?

Оффлайн Altaxar

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 222
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
Помогите со скриптом для новостей
« Ответ #11 : 02 Сентября 2004, 17:46:14 »
Проблема больше в транслите, извиняюсь я допустил описку за место \'масив\' хотел написать \'таблицу\'
Еше такой вопрос?
$result = mysql_query($query);
$result - какой тип представлеает?
P.S. ORDER BY имятвоегополя DESC -теперь понял можно и в запросе запросить в обратном порядке вывод.
« Последнее редактирование: 02 Сентября 2004, 17:55:13 от Altaxar »
Не все является тем чем кажется.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Помогите со скриптом для новостей
« Ответ #12 : 02 Сентября 2004, 18:01:57 »
Цитировать
Kneaz:
Еше такой вопрос?
$result = mysql_query($query);
$result - какой тип представлеает?

ВОТ  С ЭТОГО ВОПРОСА И НАДО БЫЛО НАЧИНАТЬ!
ответ несложно посмотреть в документации, написав в браузере
http://php.net/ и сразу - имя функции.

Цитировать
Kneaz:
теперь понял можно и в запросе запросить в обратном порядке вывод.

не можно, а НУЖНО. именно для этого и придумана база.
машину тоже МОЖНО руками толкать. Но придумана она, чтобы это она тебя возила, а не наоборот.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28