[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Заменить id на имя
KaFe
две таблицы, пример

section
-------------------------------
- id - name -
-------------------------------
1 Пряники
2 Кокосы
3 Бананы
4 Апельсины

category
--------------------------------------------------------------
- id - section - name - description
----------------------------------------------------------------
1 2 Тяжелый *
2 2 Маленький *
3 4 Оранжевый *
4 3 Желтый *


Вопрос вот в чем?
Мне нужно взять id,section,name из таблицы category, с id и name нет проблем, а вот section возник вопрос, мне нужно чтобы вместо 2 выводилось "какосы".

Неужели придется делать запрос на все записи таблицы section, а потом их подставлять по значению поля section из таблицы category???



Спустя 17 минут, 36 секунд (29.07.2010 - 11:49) inpost написал(а):
KaFe Да, можно в массив отправить таблицу section, а далее просто подставлять нужное значение. А можно кроном формировать раз в пол часа страницу с массивом! А потом её инклюдить, где надо. И на один запрос в БД будет меньше =)

Спустя 9 минут, 2 секунды (29.07.2010 - 11:58) linker написал(а):
SELECT cat.id, cat.name, sec.section FROM category AS cat
LEFT JOIN section AS sec ON sec.id = cat.section

Спустя 5 минут, 14 секунд (29.07.2010 - 12:03) KaFe написал(а):
linker Это не сильно нагрузит mysql, мне же нужно получить сразу несколько категорий?

Спустя 56 минут, 32 секунды (29.07.2010 - 13:00) linker написал(а):
KaFe
Не боись, это нормальный, обычный запрос, который кстати выведет все категории с соответствующими секшенами.

Спустя 19 минут, 32 секунды (29.07.2010 - 13:19) KaFe написал(а):
linker Ладно поверю на слово wink.gif

Спустя 9 минут, 53 секунды (29.07.2010 - 13:29) DedMorozzz написал(а):
MrBrown, KaFe таки прав. 1 вопрос, 1 тема. Все сообщения оффтопа удаляю

Спустя 1 час, 28 минут, 59 секунд (29.07.2010 - 14:58) linker написал(а):
Итак, из таблицы section нужно вытащить поле section, из таблицы category нужно вытащить id и name. Вопрос, в каком месте не работал запрос?

Спустя 4 минуты, 32 секунды (29.07.2010 - 15:03) KaFe написал(а):
linker извините за мудае**во, все работает, я был не внимателен и не правильно подставил id-шки. Спасибо за 3 пост wink.gif

Спустя 1 минута, 8 секунд (29.07.2010 - 15:04) linker написал(а):
smile.gif Ну ладно, бывает.

Спустя 2 минуты, 6 секунд (29.07.2010 - 15:06) KaFe написал(а):
Последний вопрос

SELECT cat.id, cat.name, sec.name FROM category ...

данные из данного запроса мне вытягивать mysql_fetch_row???

Спустя 1 минута, 12 секунд (29.07.2010 - 15:07) linker написал(а):
$row = mysql_fetch_assoc($result);
echo $row['name'] . ' - ' . $row['section'];

Спустя 3 минуты, 25 секунд (29.07.2010 - 15:11) KaFe написал(а):
В итоге вот так

$sql = "SELECT cat.id, cat.name, sec.name FROM category AS cat LEFT JOIN 
section AS sec ON sec.id = cat.section LIMIT "
.$start.",".$records;
$query = mysql_query($sql);
if (mysql_num_rows($query)>0)
while ($row = mysql_fetch_row ($query))
{
echo '<tr><td><input type="checkbox" name="arr[]" value="'.$row[0].'"></td>';
echo '<td>'.$row[1].'</td><td>'.$row[2].'</td>';
echo '<td><a href="'.href(THIS,4,'edit',$row['id']).'">'.icon(edit).'</a></td></tr>';
}
echo '</table><br>';

Спустя 13 минут, 30 секунд (29.07.2010 - 15:24) linker написал(а):
KaFe
Как хочешь, но mysql_fetch_assoc приятнее в плане читабельности выводимых данных. Через некоторое время ты забудешь, что есть $row[0], $row[1], $row[2]. А не дай бог что-то поменяется, вообще голову свернешь искать баги.

Спустя 55 минут, 1 секунда (29.07.2010 - 16:19) KaFe написал(а):
linker я тебя понимаю, но если я буду использовать mysql_fetch_assoc($result); при таком запросе то у меня Имя категории и Имя раздела сольются в один элемент ассоциативного массива. Так что тут без вариантов.
Все дело в этом
cat.name, sec.name
, а менять на такое
cat.name, sec.section
, мне уже не хочется, ведь я уже все связи таблиц расплонировал

Спустя 21 минута, 25 секунд (29.07.2010 - 16:41) Guest написал(а):
KaFe, чтобы не сливались используй на будущее псевдонимы:
cat.name as name1, sec.name as name2


...
$row['name1']



Спустя 19 минут, 34 секунды (29.07.2010 - 17:00) sergeiss написал(а):
KaFe - а тебе не надо ничего менять в таблицах! Для таких случаев существует возможность "на лету" задать новое имя для колонки в выборке.
Берем твой запрос
$sql = "SELECT cat.id, cat.name, sec.name FROM category AS cat LEFT JOIN 
section AS sec ON sec.id = cat.section LIMIT "
.$start.",".$records;

и слегка модифицируем
$sql = "SELECT cat.id as cat_id, cat.name as cat_name, sec.name as sec_name FROM category AS cat LEFT JOIN 
section AS sec ON sec.id = cat.section LIMIT "
.$start.",".$records;

Данные те же, названия колонок другие. И ты можешь спокойно делать то, о чем linker сказал.

Спустя 8 минут, 24 секунды (29.07.2010 - 17:09) KaFe написал(а):
sergeiss а мне это нужно? Делать запрос в два раза длиннее, усложнять его, для того чтобы использовать в самом скрипте mysql_fetch_assoc вместо mysql_fetch_row.

Спустя 15 минут, 2 секунды (29.07.2010 - 17:24) sergeiss написал(а):
KaFe - не хочешь "делать как люди", делай "по-поповски". Мне-то какое дело? laugh.gif laugh.gif laugh.gif

Но только зачем ты тогда вопросы задаешь, если и сам всё знаешь, как правильно? Да и разработчики стандарта SQL люди были глупые, придумали зачем-то алиасы для колонок... Делать им нефиг было... Правильно говорю? wink.gif

Спустя 1 час, 5 минут, 26 секунд (29.07.2010 - 18:29) KaFe написал(а):
sergeiss а для чего тогда вообще существует mysql_fetch_row? И почему разработчики php ее в топку не отправят???
Цитата (sergeiss @ 29.07.2010 - 14:24)
Да и разработчики стандарта SQL люди были глупые, придумали зачем-то алиасы для колонок... Делать им нефиг было... Правильно говорю?
Я не отрицаю, что алиасы полезная вещь, но скажите зачем делать все через ЗАДНИЦУ, когда все можно сделать в два раза легче.

P.S: У меня такое ощущение что php-программисты специально себе делают жизнь хуже.

И зачем мне ассоциативный массив? когда мне надо всего то в таблицу вывести категории и подписать из каких они разделов. Я не решаю глобальных задач!!!

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

Спустя 3 часа, 28 минут, 10 секунд (29.07.2010 - 21:57) linker написал(а):
KaFe
Делай как знаешь, но я через недельку, другую попрошу тебя не глядя на SQL-запрос, навскидку сказать, а что же прячется за $row[2]. Может тогда поймешь в чем разница между mysql_fetch_row и mysql_fetch_assoc.

Спустя 1 час, 10 минут, 2 секунды (29.07.2010 - 23:07) sergeiss написал(а):
linker - он сам с этим вопросом придет сюда smile.gif Мол, проблема есть, помогите разобраться, не пойму, почему $myrow1023[ 125 ] не то показывает, что должно wink.gif

Но вот тогда мы ему ВСЁ вспомним biggrin.gif

Спустя 34 минуты, 51 секунда (29.07.2010 - 23:42) KaFe написал(а):
Цитата (linker @ 29.07.2010 - 18:57)
Делай как знаешь, но я через недельку, другую попрошу тебя не глядя на SQL-запрос, навскидку сказать, а что же прячется за $row[2]. Может тогда поймешь в чем разница между mysql_fetch_row и mysql_fetch_assoc.

О а ты сможешь например сказать что вот за таким скрывается не глядя на sql запрос?
$row['transvistit'] - может там имя, или цифра, а может там трансвистит wink.gif .

И кстати да на вскидку я смогу сказать что там хранятся $row[2] какое то значение tongue.gif , а что именно там хранится и ты сказать не сможешь если будешь использовать свой вариант, также я смогу определить что в sql запросе мы получаем как минимум 3 столбца wink.gif

И на вскидку - мы не гадалки, чтобы не смотря на sql запрос ВСКИДЫВАТЬСЯ laugh.gif

Цитата (sergeiss @ 29.07.2010 - 20:07)
linker - он сам с этим вопросом придет сюда smile.gif Мол, проблема есть, помогите разобраться, не пойму, почему $myrow1023[ 125 ] не то показывает, что должно wink.gif

Но вот тогда мы ему ВСЁ вспомним biggrin.gif

Давайте тут тупо не бедем разводить, а отвечайте на вопрос
Цитата
sergeiss а для чего тогда вообще существует mysql_fetch_row?

Вы же как ни как эксперт, научите меня.

Спустя 23 минуты, 53 секунды (30.07.2010 - 00:06) sergeiss написал(а):
Цитата (KaFe @ 30.07.2010 - 00:42)
а отвечайте на вопрос
Цитата
sergeiss а для чего тогда вообще существует mysql_fetch_row?

Вы же как ни как эксперт, научите меня.

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

На вопрос отвечу, только не напрямую.
В языке ПХП существует ряд моментов, пришедших еще из каких-то ранних версий языка. Которые сейчас не рекомендуются. Например, начиная с 5-й версии ПХП register_globals по умолчанию выставляется в OFF, хотя раньше было ON. И вообще - оно БЫЛО! А сейчас - не рекомендуется.

Короче говоря, в языке ПХП есть ряд возможностей, которые когда-то были сделаны, но сейчас не рекомендуются. Либо они устарели, либо они не удобны.

Спустя 3 минуты, 46 секунд (30.07.2010 - 00:10) linker написал(а):
Плюс, еще одна сторона, что лучше $i или $index? Типа зачем напрягать php парсить такой длинный $index, когда можно ему помочь и использовать просто $i.

Спустя 4 минуты, 35 секунд (30.07.2010 - 00:14) KaFe написал(а):
sergeiss вы для меня новое не открыли, я ждал более полного ответа. Буду делать как знаю.linker за sql запрос благодарен, можно благополучно закрывать тему.

Спустя 1 час, 47 минут, 1 секунда (30.07.2010 - 02:01) SlavaFr написал(а):
Для людей, которые хотят понять почему работа с $myrow1023[ 125 ] хуже чем работа с $myrow1023[название ] , а также научится не на собственных ошибках :

1) возможно прийдется делать в запросе изменения , добавить или убрать поля.
Если вы Работаете с $myrow1023[ 125 ] то у вас здвинутся все цифры с того места, где вы вставили или убрали поле в запросе. Если вы к примеру запросили 15 полей а потом передумали и убрали из запроса первое поле, то вам прейдется искать все места где употребяется $myrow1023[ х ] в коде и менять х на х-1
В случае если вы работаете с именами, то вам нужно найти $myrow1023[Хназвание ] и изменить толко в этом месте код.

2) как уже другие заметили, то обращатся по имени проще чем по цифрам
Представте себе, что вы читаете код и находите в строке 1239
'<div>'.$myrow[11].'</div>'
что нужно зделать, чтоб определить, что это такое?
найти sql которое находится в строчке 327 и отщитать 11 параметер в sql.
настоящего мужика такой работой коночно не напугать, но я лучше сразу
'<div>'.$myrow['фамилия'].'</div>' напишу, не смотря на то что другие подумают, что я работы испугался.

3) где есть оправдано применение mysql_num_rows ?
например здесь select count(*) from tabelle where ... и все еще с риском что возможны изменения в запросах.
Быстрый ответ:

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