Автор Тема: Формирование таблицы  (Прочитано 10118 раз)

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

Оффлайн cosss

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://tochka-ru.com
Формирование таблицы
« : 20 Января 2004, 22:19:47 »
В Mysql таблица выглядит так:

ID | int(5) auto_increment
date | date
title | varchar(255)
text | text

Подскажите как мне сформировать ее с помощью скрипта в нормальную таблицу. Я никак не могу понять как работают циклы. Пожалуйста не посылайте меня на разные факи :) explode implode ничерта не пойму. Ето новостной engine, все, блин, работает кроме этого  :(
ЖЖ

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Формирование таблицы
« Ответ #1 : 20 Января 2004, 23:12:27 »
cosss Сам писал свой "engine"? :)

$res 
mysql_query("SELECT id, date, title, text FROM news WHERE date=NOW() ORDER BY id DESC");
while(
$fetch mysql_fetch_assoc($res)){
  echo 
$fetch[\'title\']."
"; // Выводит заголовки новостей
}


Дальше надеюсь сам разберёшься, а вобще купи книжку и прочитай.
Мне тормоз послужил толчком...

Оффлайн cosss

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://tochka-ru.com
Формирование таблицы
« Ответ #2 : 21 Января 2004, 18:28:31 »
Neter
Сам писал. Оказывается как два пальца... Только захотеть надо

Вообще спасибо тебе, точнее твоему посту, я этот цикл уже 500 раз видел и только щас меня проперло... Все работает как надо теперь, только вот еще одна проблемка появилась. Я пока двигатель тестил всякого хлама туда позаписывал, потом очистил таблицу, но вот ID Auto_increment не сбросился падла, а продолжает расти с прошлой позиции. Как его сбросить можно?
ЖЖ

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Формирование таблицы
« Ответ #3 : 21 Января 2004, 19:40:11 »
TRUNCATE TABLE news
Мне тормоз послужил толчком...

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

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Формирование таблицы
« Ответ #4 : 21 Января 2004, 20:57:12 »
cosss, на будущее, чтобы избежать больших проблем, не обращай на эту цифру никакого внимания. потому, что это и не цифра вовсе. и ничего с ней делать не надо.

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

Оффлайн cosss

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://tochka-ru.com
Формирование таблицы
« Ответ #5 : 22 Января 2004, 13:42:33 »
RomikChef
Как ничего делать не надо... А я вот хочу новости по 4 на страницу выводить... И еще в обратном порядке... Последние сверху... Разве здесь это не пригодится?
ЖЖ

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Формирование таблицы
« Ответ #6 : 22 Января 2004, 13:55:31 »
Цитировать
cosss:
Разве здесь это не пригодится?

нет

Цитировать
cosss:
А я вот хочу новости по 4 на страницу выводить...

в sql запросе limit
во поиск по форуму по фразе постраничный

Цитировать
cosss:
И еще в обратном порядке...

order by time desc

в общем почитай ман mysql...
http://forums.webscript.ru/showthread.php?s=&threadid=10645&msgnum=16
работа в Украине

Оффлайн cosss

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://tochka-ru.com
Формирование таблицы
« Ответ #7 : 22 Января 2004, 15:13:02 »
Yukko
Не, не так... 4 последние новости будут на главной странице... Если надо больше почитать я веду посетителя в раздел новости.

SELECT * FROM $table ORDER BY id DESC

а чтоб по 4 выводить я думаю нужно узнать кол-во id вычесть 4 штуки (получится напр. 195) потом SELECT * FROM $table WHERE id>195 ORDER BY id DESC

не резонно?

Я видел размер кода постраничного вывода... Мне пока впадлу так заморачиваться? Хотя если переубедите :) придется.
ЖЖ

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

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Формирование таблицы
« Ответ #8 : 22 Января 2004, 15:37:07 »
Цитировать
cosss:
А я вот хочу новости по 4 на страницу выводить... И еще в обратном порядке... Последние сверху... Разве здесь это не пригодится?

Я бы тебе не советовал привязываться к айди...
Мало ли - ты захочешь поставить новость задним числом?
или ошибешься - поставишь не ту дату, а потом - исправишь.
порядок будет нарушен. Не надо привязываться к ид. у новости обязана быть дата ее опубликования. вот по ней и соритуй последние 4.

Цитировать
cosss:
узнать кол-во id

И ВСЕ-ТАКИ ты вляпался со всей дури в эту проблему.
говорили тебе: нету такого числа - id!!!
НЕТУ!
Не можешь понять - просто запомни!
нету никакого "кол-ва"! А если ты новость удалишь? Только не надо мне пееть тут песни про " я не буду удалять".Я тебе пример привожу, а не проблему. проблема как раз - в отношении к айди к цыферке!
 абстрактного мышления хоть грамм есть?
база данных - не счетные палочки! а айди - не бирка с номерочком!
Это не номер! Это уникальный удентификатор
УНИКАЛЬНЫЙ <- долго думать над этим словом
ИДЕНТИФИКАТОР <- долго думать над этим словом

лишь внешне похожий на цыферку.

Постраничный вывод тебе действительно, не нужен. на главной 4 последних, на странице новостей - по месяцам.

А вот насчет размера кода надо глаза разуть.
ты видел код ламерский. а ламер тебе ЛЮБОЙ код напишет на 10 страниц.
размер нормального кода, если писать ДУМАЯ ГОЛОВОЙ и спрашивая в форуме, я там привел.

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Формирование таблицы
« Ответ #9 : 22 Января 2004, 15:40:22 »
cosss
Читай:
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 | rows OFFSET offset]
      [PROCEDURE procedure_name(argument_list)]
      [FOR UPDATE | LOCK IN SHARE MODE]]

Вот этот запрос, выведет мне категории упорядочив результат по id_категории в обратном порядке (категория с большим id будет первой), а LIMIT показывает, что со смещения 0 (у меня в базе самый большой id категории - 20) надо взять всего четыре записи:

SELECT * FROM `categories` order by categories_id desc LIMIT 0, 4

таким образом у меня выводятся категории с id равными
20
19
17
16

--------------
записи с id = 18 нет в помине!

Кстати Ромик прав, у новости есть дата
работа в Украине

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

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Формирование таблицы
« Ответ #10 : 22 Января 2004, 15:49:29 »
да, как раз хотел написать про лимит.

который-то как раз тебе и нужен и при выводе этой новосмсти,и при постраничном выводе.

Оффлайн cosss

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://tochka-ru.com
Формирование таблицы
« Ответ #11 : 22 Января 2004, 16:51:16 »
Огромное вам спасибо, все понял, только придется добавить в табличку время, на случай, если я в один день напишу 2 новости сразу, чтоб сортировалось правильно, хотя так редко бывает...

2Yukko
LIMIT 0,4 при чем тут 0?
ЖЖ

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
Формирование таблицы
« Ответ #12 : 22 Января 2004, 17:00:00 »
Цитировать
cosss:
Огромное вам спасибо, все понял,

Ничего ты, ИМХО, не понял!
потому что задаешь вот такие вопросы
Цитировать
cosss:
LIMIT 0,4 при чем тут 0?


это означает возвратить 4 рядка начиная с нулевого.

Не с того, у которого id=0 !!!!!! а с того который выводится твоим запросом в самую первую очередь.

Поставь phpmyadmin и попробуй с какой-то таблицей выводить результат с разными значениями циферок после LIMIT\'а
работа в Украине

Оффлайн DV

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Формирование таблицы
« Ответ #13 : 22 Января 2004, 18:14:58 »
да ...
вотчем мне нравится этот форум - здесь вежливо поясняют а не посылают :)

Оффлайн cosss

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 44
  • +0/-0
  • 0
    • Просмотр профиля
    • http://tochka-ru.com
Формирование таблицы
« Ответ #14 : 22 Января 2004, 19:19:52 »
Yukko
Где взять phpmyadmin?
ЖЖ

 

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