[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрос из двух таблиц
Syrex
Приветствую! Возникла такая проблема: в БД mysql есть две таблицы - `events` и `type_events` (события и типы событий соотв.). В первой таблице поля id_event, name_event, description, date; во второй - id_type, type. Задача состоит в том, чтобы, сначала вывести на экран из 2ой таблицы типы событий в виде ссылок (с этим проблем не возникло), а затем в зависимости от выбора типа на экран выводились определенные события из первой таблиы. Подскажите пожалуйта, как это реализовать и нужна ли здесь вообще вторая таблица или можно просто в первую добавить ячейку type?



Спустя 2 минуты, 15 секунд (4.06.2010 - 20:01) DedMorozzz написал(а):
связь как осуществлена? А насчёт добавить - тебе смотреть. Может и проще - думаю нормализация как раз подскажет

Спустя 8 минут, 55 секунд (4.06.2010 - 20:10) Syrex написал(а):
Видимо связи то пока и нет) В общем происходит, что при нажатии на любую категорию (тип) выводятся все события из 1 первой таблицы, а нужно что бы тип-событие были связаны, вот это и не пойму как сделать.

Спустя 36 минут, 47 секунд (4.06.2010 - 20:47) Unlikely написал(а):
Syrex
Можно и одной обойтись вполне. Только (мне кажется) в дальнейшем будут "неудобства" с добавлением типа.
А если оставить events и type_events то в events можно добавить поле type, в него вписывать типы из type_events -> type при выводе сравнивать оба типа.
mysql_query("SELECT * FROM `events` WHERE `type` = '$переменная в которой нужный тип из type_events'", $db);

Спустя 5 минут, 37 секунд (4.06.2010 - 20:52) Unlikely написал(а):
Или добавлять в events -> type id из type_events и сравнивать по ним. Так даже лучше и быстрей будет наверно.

Спустя 2 часа, 6 минут, 35 секунд (4.06.2010 - 22:59) Syrex написал(а):
Unlikely
Попробовал так как вы сказали, добавил в events поле id_type (соответсвует этому же полю в таблице types_events). Но что значит "сравнивать по ним"? Сделал такой запрос:
$query = "SELECT * FROM events INNER JOIN types_events ON events.id_type = types_events.id_type";
$result = mysql_query ($query, $link);
$num_rows = mysql_num_rows($result);
echo "<ul>";
while ($row = mysql_fetch_array($result))
{
echo "<li><a href = show_type_event.php?name=".$row['name'].">".$row['name']."</a><br>";
}
echo "</ul>";

Теперь выводит только совпадающие по параметру id_type ссылки, но при нажатии на любую из них все равно выводятся все ссылки из первой таблицы(

Спустя 1 час, 31 минута, 56 секунд (5.06.2010 - 00:31) Unlikely написал(а):
Syrex
Ну, "сравнить" значит вывести данные из таблицы по какому то соответствию smile.gif

Допустим так делаем ссылки:
$link_res = mysql_query("SELECT * FROM `types_events`");

while($link_row = mysql_fetch_assoc($link_res)) {
echo "<a href=\"show_type_event.php?name={$link_row['id_type']}\">{$link_row['type']}</a>";
}


Линки получились show_type_event.php?name=1 show_type_event.php?name=2 и тд.

Теперь надо брать id который передаётся методом get и выводить соответствующие записи.

if(isset($_GET['name'])) {
$res = mysql_query("SELECT * FROM `events` WHERE `id_type` = '{$_GET['name']}'");
while($row = mysql_fetch_assoc($res)) {
// выводим результаты
}
}

Спустя 13 часов, 40 минут, 37 секунд (5.06.2010 - 14:11) Syrex написал(а):
Unlikely
Спасибо, все получилось!)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.