Forum Webscript.Ru

Программирование => PHP => Тема начата: cosss от 20 Января 2004, 22:19:47

Название: Формирование таблицы
Отправлено: cosss от 20 Января 2004, 22:19:47
В Mysql таблица выглядит так:

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

Подскажите как мне сформировать ее с помощью скрипта в нормальную таблицу. Я никак не могу понять как работают циклы. Пожалуйста не посылайте меня на разные факи :) explode implode ничерта не пойму. Ето новостной engine, все, блин, работает кроме этого  :(
Название: Формирование таблицы
Отправлено: Neter от 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 от 21 Января 2004, 18:28:31
Neter
Сам писал. Оказывается как два пальца... Только захотеть надо

Вообще спасибо тебе, точнее твоему посту, я этот цикл уже 500 раз видел и только щас меня проперло... Все работает как надо теперь, только вот еще одна проблемка появилась. Я пока двигатель тестил всякого хлама туда позаписывал, потом очистил таблицу, но вот ID Auto_increment не сбросился падла, а продолжает расти с прошлой позиции. Как его сбросить можно?
Название: Формирование таблицы
Отправлено: Neter от 21 Января 2004, 19:40:11
TRUNCATE TABLE news
Название: Формирование таблицы
Отправлено: Меняздесьдавнонет от 21 Января 2004, 20:57:12
cosss, на будущее, чтобы избежать больших проблем, не обращай на эту цифру никакого внимания. потому, что это и не цифра вовсе. и ничего с ней делать не надо.

Это трудно понять тем, кто впервые с базой столкнулся. Но это надо. Если что непонятно, сомнения - спроси. я отвечу.
Название: Формирование таблицы
Отправлено: cosss от 22 Января 2004, 13:42:33
RomikChef
Как ничего делать не надо... А я вот хочу новости по 4 на страницу выводить... И еще в обратном порядке... Последние сверху... Разве здесь это не пригодится?
Название: Формирование таблицы
Отправлено: Yukko от 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 от 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

не резонно?

Я видел размер кода постраничного вывода... Мне пока впадлу так заморачиваться? Хотя если переубедите :) придется.
Название: Формирование таблицы
Отправлено: Меняздесьдавнонет от 22 Января 2004, 15:37:07
Цитировать
cosss:
А я вот хочу новости по 4 на страницу выводить... И еще в обратном порядке... Последние сверху... Разве здесь это не пригодится?

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

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

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

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

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

А вот насчет размера кода надо глаза разуть.
ты видел код ламерский. а ламер тебе ЛЮБОЙ код напишет на 10 страниц.
размер нормального кода, если писать ДУМАЯ ГОЛОВОЙ и спрашивая в форуме, я там привел.
Название: Формирование таблицы
Отправлено: Yukko от 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 нет в помине!

Кстати Ромик прав, у новости есть дата
Название: Формирование таблицы
Отправлено: Меняздесьдавнонет от 22 Января 2004, 15:49:29
да, как раз хотел написать про лимит.

который-то как раз тебе и нужен и при выводе этой новосмсти,и при постраничном выводе.
Название: Формирование таблицы
Отправлено: cosss от 22 Января 2004, 16:51:16
Огромное вам спасибо, все понял, только придется добавить в табличку время, на случай, если я в один день напишу 2 новости сразу, чтоб сортировалось правильно, хотя так редко бывает...

2Yukko
LIMIT 0,4 при чем тут 0?
Название: Формирование таблицы
Отправлено: Yukko от 22 Января 2004, 17:00:00
Цитировать
cosss:
Огромное вам спасибо, все понял,

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


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

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

Поставь phpmyadmin и попробуй с какой-то таблицей выводить результат с разными значениями циферок после LIMIT\'а
Название: Формирование таблицы
Отправлено: DV от 22 Января 2004, 18:14:58
да ...
вотчем мне нравится этот форум - здесь вежливо поясняют а не посылают :)
Название: Формирование таблицы
Отправлено: cosss от 22 Января 2004, 19:19:52
Yukko
Где взять phpmyadmin?
Название: Формирование таблицы
Отправлено: Меняздесьдавнонет от 22 Января 2004, 19:28:56
cosss
есть такой сайт в интернете
волшебный.
адрес его - http://www.google.com
там такая полосочка.
вводишь в ней слово, которое не знаешь, где взять, и оно волшебным образом рассказывает.

Но вообще пхпмайадмин тебе не сильно нужен. зря его юкко приплел.ты бы от темы своей не отвлекался.
Название: Формирование таблицы
Отправлено: hanslinger от 22 Января 2004, 19:30:30
Здесь (http://www.phpmyadmin.net/)
Название: Формирование таблицы
Отправлено: cosss от 22 Января 2004, 20:53:49
2 RomikChef
Да я знал, что он мне не нужен особо, Юкко обижать не хотел ;)
Он у меня на серваке, кстати, установлен в cpanel\'и вещь для ленивых, я так понял...

Ладна... тему можно закрыть, начало для движка положено. Все работает, даже картинки аплодятся с первого раза :)

Дальше буду постить вопросы для модернизации движка.
Название: Формирование таблицы
Отправлено: Yukko от 22 Января 2004, 22:58:38
Цитировать
cosss:
Юкко обижать не хотел

Yukko ты никогда не обидишь, если после того, как спросишь что-то и тебе ответят, начнешь думать своей головой! ;)