Автор Тема: Несколько интересных вопросов к знающим ответы!  (Прочитано 14074 раз)

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

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
it4all
id темы будет браться из второй таблицы со списком тем...

tarya
[OFF]Афигеть!!![/OFF]

Оффлайн Yukko

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1586
  • +0/-0
  • 0
    • Просмотр профиля
    • http://estrabota.com.ua
it4all
Я немного не в тему, но думаю, что вот это
http://forums.webscript.ru/showthread.php?s=&threadid=14103&pagenumber=1
тебе стоит почитать

[OFF]кажтеся, я опоздал на праздник жизни...[/OFF]
работа в Украине

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Цитировать
it4all:
Я так ихотел ,но FreeSpace и RomikChef в предыдущих сообщениях усиленно отговаривают меня от этого.

Покажи мне, где я тебя отговаривал?
Я наоборот говорил тебе, что нужны две таблицы и я рад, что ты это понял.
Ну а как ты собирался определять, какое сообщение принадлежит какой теме? Конечно же по полю thread_id в таблице сообщений! В этом поле лежит айди темы, в которой оставлено это сообщение.

Вот создаешь ты новую тему, делаешь запрос типа
INSERT INTO threads VALUES (bla-bla-bla)
Потом получаешь auto_increment id новой темы и создаешь первое сообщение в теме:
INSERT INTO messages VALUES(NULL, thread_id, ...)
NULL стоит на том месте, где СУБД сама подставит новый auto_increment id, а thread_id - это айди темы, который ты получил после предыдущего запроса.
А вообще скачай какой-нить бесплатный форум, например phpBB и посмотри на структуру базы данных - сразу много любопытных вещей поймешь.

tarya
Ты не задумывался над тем, чтобы критически оценить эти пару килобайт кода перед тем, как постить их с целью показать пример новичку?
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн it4all

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.it4all.h10.ru
Цитировать
RomikChef:
айди генерить не надо - пусть мускуль генерит автоинкрементом.

Цитировать
FreeSpace:
Почему варчар и зачем uniqid()?
Чем тебе не угодил числовой primary key с auto_increment?

Показываю.
З.С.
-------------
Информации набралось много, мне ламеру,нужно ее переварить ,пошевелить тем,что у меня вместо мозгов.
А посему на денек можно прерватся. ОК.

А напоследок очень хочется кинуть маааленький камешек в огород Князя Тари.
tarya на твоей главной все даты написаны не очень куросяво,год впереди понимаеш, не очень, как-то для крутого программера.Если не знаешь как переделать пиши ,подскажу. А за код спрасибо,что  не поленился.
« Последнее редактирование: 14 Января 2004, 22:13:19 от it4all »

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

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Мда.
Доходит до него с трудом...

1.Форум должон обслуживатся минмум 2 таблицами,одна для тем,другая для ответов.

Не обязательно.
Если учесть, что принцип объединения до тебя не доходит, то лучше бы ты вернулся к первоначальному варианту

2.Ликвидирую "yes" и "no",и заменяю их на 1 и 0

 какие еще 1 и 0? Из какого пальца ты их высосал?
Ты читать умеешь? Цитирую:
Цитировать
RomikChef:
поле топик должно быть пустым у первых сообщений темы и содержать номер первого, если это ответ.

Это в случае одной таблицы.
А в случае двух, то это поле есть только в таблице ответов и содержит айди темы.

3.Но вот как без всяких-разных "id" обойтись,не представляю.Как различить ответы для одной темы от ответов для другой.Более того ,как наведеш курсор на любую ссылку на форуме,так там не один, а несколко "id" передаются.

а никто тебе и не предлагает обходиться. Это проблемы твоего восприятия.
про несколько айди - поподробнее.

4.Накой мне "auto_incrementить" все ответы , не понял.
Ронимать тебе не обязательно. Это ты можешь оставить на потом.
А сейчас просто делай, как велят.

Цитировать
it4all:
усиленно отговаривают меня от этого.

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

ЕЙ, кто там ему велел разделять?
нарисуйте ему структуры таблиц с пояснениями.

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
Ноу проблем!

Структуру позаимствовал у phpBB, упростив её для твоей задачи:


CREATE TABLE `topics` (
  `topic_id` mediumint(8) unsigned NOT NULL auto_increment,
  `topic_title` char(60) NOT NULL default \'\',
  `topic_time` int(11) NOT NULL default \'0\',
  PRIMARY KEY  (`topic_id`),
);
CREATE TABLE `posts` (
  `post_id` mediumint(8) unsigned NOT NULL auto_increment,
  `topic_id` mediumint(8) unsigned NOT NULL default \'0\',
  `post_time` int(11) NOT NULL default \'0\',
  `post_username` varchar(25) default NULL,
  `post_text` text,
  PRIMARY KEY  (`post_id`),
);


Рассмотрим на примере такие запросы:
1. Создание темы.
2. Ответ в теме.
3. Редактирование сообщения в теме.
4. Удаление сообщения из темы.
5. Удаление всей темы.

1. Создание темы
// UNIX_TIMESTAMP() - это mysql-функция, которая в данном случае возвращает текущее время в юниксовом формате.
mysql_query("INSERT INTO topics VALUES (NULL, \'Название темы\', UNIX_TIMESTAMP())")

// Получаем ID только что созданной темы
$topic_id mysql_insert_id();

// Создаем первое сообщение в теме
mysql_query("INSERT INTO posts VALUES (NULL, ".$topic_id.", UNIX_TIMESTAMP(), \'Имя автора сообщения (в данном случае - создателя темы)\', \'Текст сообщения\')");

2. Ответ в теме
// Подразумевается, что ID темы заранее известен и лежит в переменной $topic_id
mysql_query("INSERT INTO posts VALUES(NULL, ".$topic_id.", UNIX_TIMESTAMP(), \'Имя автора сообщения (ответа)\', \'Текст сообщения (ответа)\')");

3. Редактирование сообщения в теме
// Подразумевается, что ID редактируемого сообщения заранее известен и лежит в переменной $post_id
// Так же новый текст сообщения лежит в переменной $new_message
mysql_query("UPDATE posts SET post_text = \'".$new_message."\' WHERE post_id = ".$post_id);

4. Удаление сообщения из темы
// Подразумевается, что ID удаляемого сообщения заранее известен и лежит в переменной $post_id
mysql_query("DELETE FROM posts WHERE post_id = ".$post_id);

5. Удаление всей темы
// Подразумевается, что ID удаляемой темы заранее известен и лежит в переменной $topic_id
mysql_query("DELETE FROM topics WHERE topic_id = ".$topic_id);
// Теперь удаляем все "осиротевшие" сообщения из только что удаленной темы
mysql_query("DELETE FROM posts WHERE topic_id = ".$topic_id);


Я не описывал получение списка тем и отображение сообщений в конкретной теме, потому что думаю что из вышеприведенного кода полностью понятны взаимоотношения между двумя таблицами и нужные запросы можно будет построить самостоятельно.
Если это не удастся, советую перечитать документацию MySQL.
Если где-то что-то упустил из виду, буду рад критике.
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

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

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
[OFF]лично я не люблю писать название таблицы в каждом имени поля.
при желании всегда можно написать через точку...[/OFF]

Оффлайн FreeSpace

  • Штатный лодырь
  • Ветеран
  • *****
  • Сообщений: 613
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.infinity.com.ua
[OFF]Я тоже не люблю, но как уже говорил - структуру таблиц вместе с именами вытащил из phpBB. Да и новичку понятнее будет, где у него что лежит.[/OFF]
Программирование - это единственное искусство, которое способно воплотить столь уникальное сочетание эстетики и функциональности.

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
Есть предложение: поставить на главной странице форума большую и видную ссылку на поиск :)
LJ: Backslashed life (rss)

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

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
CGVictor ха.ха.ха
наивный.

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
RomikChef, не скажи. Многих вопросов бы просто не возникало...
(sorry, что оффтопик)
LJ: Backslashed life (rss)

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

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
CGVictor, ты абсолютно не понимаешь психологию этих людей. Абсолютно.
Чтобы воспользоваться поиском, надо
1. думать самому.
2. хотеть сделать что-то самому.

Люди, которые задают вопросы на форумах, в 90% случаев не хотят ни того ни другого. А часто еще и не умеют.
И хоть ты 10 кнопок повесь - ничего не изменится.
И давай закроем эту тему.
Я чуть больше твоего видел вопросов на форумах.

Оффлайн it4all

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.it4all.h10.ru
Цитировать
RomikChef:
Чтобы воспользоваться поиском, надо
1. думать самому.
2. хотеть сделать что-то самому.

Я недавно вользовался поиском, и что ?
Попадаешь на темы где такие же ламеры как ты ,пытаются обьясниться с теми кто, что-то знает.
Вы предлагаете искать необходимое в этой куче бестолковых вопросов и раздраженных ответов. По мне ,так это чистый мазохизм. Более того я к сожалению не располагаю таким количеством свободного времени и бесплатным интернетом.

З.С.
--------------------------
FreeSpace дал мне ссылку на "phpBB" , я его скачал, установил и теперь изучаю. С этих пор все вопросы ,которые я задавал здесь прояснились и своей тупостью раздражают меня самого. Пока я не хочу тратить на себя ваше внимание, но и закрывать тему тоже. Возможно чуть позже попрошу еще немного информации и надеюсь, что вопросы не будут такими тупыми.

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

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Ну, от твоего желания, туповатый друг мой, тут ничего на значит.
адью.

 

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