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 Ладно поверю на слово
Спустя 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 пост
Спустя 1 минута, 8 секунд (29.07.2010 - 15:04) linker написал(а):
Ну ладно, бывает.
Спустя 2 минуты, 6 секунд (29.07.2010 - 15:06) KaFe написал(а):
Последний вопрос
данные из данного запроса мне вытягивать mysql_fetch_row???
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]. А не дай бог что-то поменяется, вообще голову свернешь искать баги.
Как хочешь, но 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 - а тебе не надо ничего менять в таблицах! Для таких случаев существует возможность "на лету" задать новое имя для колонки в выборке.
Берем твой запрос
и слегка модифицируем
Данные те же, названия колонок другие. И ты можешь спокойно делать то, о чем linker сказал.
Берем твой запрос
$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 - не хочешь "делать как люди", делай "по-поповски". Мне-то какое дело?
Но только зачем ты тогда вопросы задаешь, если и сам всё знаешь, как правильно? Да и разработчики стандарта SQL люди были глупые, придумали зачем-то алиасы для колонок... Делать им нефиг было... Правильно говорю?
Но только зачем ты тогда вопросы задаешь, если и сам всё знаешь, как правильно? Да и разработчики стандарта SQL люди были глупые, придумали зачем-то алиасы для колонок... Делать им нефиг было... Правильно говорю?
Спустя 1 час, 5 минут, 26 секунд (29.07.2010 - 18:29) KaFe написал(а):
sergeiss а для чего тогда вообще существует mysql_fetch_row? И почему разработчики php ее в топку не отправят???
Цитата (sergeiss @ 29.07.2010 - 14:24) |
Да и разработчики стандарта SQL люди были глупые, придумали зачем-то алиасы для колонок... Делать им нефиг было... Правильно говорю? |
Я не отрицаю, что алиасы полезная вещь, но скажите зачем делать все через ЗАДНИЦУ, когда все можно сделать в два раза легче.
P.S: У меня такое ощущение что php-программисты специально себе делают жизнь хуже.
И зачем мне ассоциативный массив? когда мне надо всего то в таблицу вывести категории и подписать из каких они разделов. Я не решаю глобальных задач!!!
Короче если хотите по привычке кодить - делайте, но я буду использовать функции по обстоятельствам.
P.S: У меня такое ощущение что php-программисты специально себе делают жизнь хуже.
И зачем мне ассоциативный массив? когда мне надо всего то в таблицу вывести категории и подписать из каких они разделов. Я не решаю глобальных задач!!!
Короче если хотите по привычке кодить - делайте, но я буду использовать функции по обстоятельствам.
Спустя 3 часа, 28 минут, 10 секунд (29.07.2010 - 21:57) linker написал(а):
KaFe
Делай как знаешь, но я через недельку, другую попрошу тебя не глядя на SQL-запрос, навскидку сказать, а что же прячется за $row[2]. Может тогда поймешь в чем разница между mysql_fetch_row и mysql_fetch_assoc.
Делай как знаешь, но я через недельку, другую попрошу тебя не глядя на SQL-запрос, навскидку сказать, а что же прячется за $row[2]. Может тогда поймешь в чем разница между mysql_fetch_row и mysql_fetch_assoc.
Спустя 1 час, 10 минут, 2 секунды (29.07.2010 - 23:07) sergeiss написал(а):
linker - он сам с этим вопросом придет сюда Мол, проблема есть, помогите разобраться, не пойму, почему $myrow1023[ 125 ] не то показывает, что должно
Но вот тогда мы ему ВСЁ вспомним
Но вот тогда мы ему ВСЁ вспомним
Спустя 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'] - может там имя, или цифра, а может там трансвистит .
И кстати да на вскидку я смогу сказать что там хранятся $row[2] какое то значение , а что именно там хранится и ты сказать не сможешь если будешь использовать свой вариант, также я смогу определить что в sql запросе мы получаем как минимум 3 столбца
И на вскидку - мы не гадалки, чтобы не смотря на sql запрос ВСКИДЫВАТЬСЯ
Цитата (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 ... и все еще с риском что возможны изменения в запросах.
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 ... и все еще с риском что возможны изменения в запросах.