Код страны храниться в определенном поле таблицы `users`.(например для России храним 'RU')
Что бы узнать страну пользователя (и соответственно название требуемого файла картинки флага) необходимо отправить запрос к базе данных. Вроде бы все ничего, но если на странице отображается очень много логинов, причем получаемых также динамически, то получается очень много запросов к базе. Как бы так сделать, что бы при любом упоминании логина любого пользователя, ему подставлялась картинка с флагом ?
Спустя 7 минут, 15 секунд (19.10.2011 - 14:28) Игорь_Vasinsky написал(а):
ну помоему ресурсоемким получиться вариант новой таблицы
`flags`
name | flag
или даже при регистрации для юзера имя файла флага заносить
чем писать алгоритм перебора и выбора флага на if или case, вообще смотря скока стран, если 10-20 - то можно обойтись и условиями
`flags`
name | flag
или даже при регистрации для юзера имя файла флага заносить
чем писать алгоритм перебора и выбора флага на if или case, вообще смотря скока стран, если 10-20 - то можно обойтись и условиями
Спустя 5 минут (19.10.2011 - 14:33) Melvin написал(а):
Игорь_Vasinsky
Понимаешь в чем дело, я переживаю за производительность.
Вот, допустим, вывожу на сайте новости. Делаю запрос к таблице `news` получаю все необходимую инфу (включая логин создателя новости, скажем User1). Затем, при выводе новости на страницу, обращаюсь уже к таблице `users` с тем, что бы узнать страну пользователя User1. Узнав страну, вывожу перед логином соответствующую картинку с флагом. Это при каждом выводе новости, мне приходится обращаться по разу к таблице users. Это на мой взгляд тормозно, если новостей на странице будет много.
Как быть?
Понимаешь в чем дело, я переживаю за производительность.
Вот, допустим, вывожу на сайте новости. Делаю запрос к таблице `news` получаю все необходимую инфу (включая логин создателя новости, скажем User1). Затем, при выводе новости на страницу, обращаюсь уже к таблице `users` с тем, что бы узнать страну пользователя User1. Узнав страну, вывожу перед логином соответствующую картинку с флагом. Это при каждом выводе новости, мне приходится обращаться по разу к таблице users. Это на мой взгляд тормозно, если новостей на странице будет много.
Как быть?
Спустя 2 минуты, 53 секунды (19.10.2011 - 14:36) Игорь_Vasinsky написал(а):
Видешь - запрос в users всё равно идёт, ну можешь даже так:
у тя же в users не вся инфа хранится? есть же ещё привязка - вот там можешь хранить...
вообщем элегантно было бы отделная табла для стран и флагов, но я думаю ни чё страшного не будет и в той табле столбец добавить, где ты запросы к юзерам делаешь - логины там или ещё что.
у тя структура БД какая?
у тя же в users не вся инфа хранится? есть же ещё привязка - вот там можешь хранить...
вообщем элегантно было бы отделная табла для стран и флагов, но я думаю ни чё страшного не будет и в той табле столбец добавить, где ты запросы к юзерам делаешь - логины там или ещё что.
у тя структура БД какая?
Спустя 3 минуты, 9 секунд (19.10.2011 - 14:39) Melvin написал(а):
Структура простая:
Две таблицы: users (id,login,password,country)
news (id, caption,body,login)
То есть это нормально будет что я для вывода 15 новостей на сайт 15 раз к таблице users обращусь?
Две таблицы: users (id,login,password,country)
news (id, caption,body,login)
То есть это нормально будет что я для вывода 15 новостей на сайт 15 раз к таблице users обращусь?
Спустя 3 минуты, 42 секунды (19.10.2011 - 14:42) Игорь_Vasinsky написал(а):
А так бы самый сок:
`users`
id | login | pass | id_country
`country`
id | name | flag
`news`
id | caption | body | id_user
И JOINами запросы делать
Видишь как всё завязано?
Твой пример : 15 новостей = по 15 запросов в 2 таблицы
Мой 15 новостей = 15 запросов в 3 таблицы
`users`
id | login | pass | id_country
`country`
id | name | flag
`news`
id | caption | body | id_user
И JOINами запросы делать
Видишь как всё завязано?
Твой пример : 15 новостей = по 15 запросов в 2 таблицы
Мой 15 новостей = 15 запросов в 3 таблицы
Спустя 59 секунд (19.10.2011 - 14:43) Melvin написал(а):
Аааа все понял. Спасибо большущее.
Спустя 2 минуты, 11 секунд (19.10.2011 - 14:46) Игорь_Vasinsky написал(а):
НУ вот..
можешь
memory_usage() использовать - чтоб смотреть скока оперативы тратишь
можешь
memory_usage() использовать - чтоб смотреть скока оперативы тратишь
Спустя 10 минут, 26 секунд (19.10.2011 - 14:56) Guest написал(а):
А зачем вообще для 15 новостей делать 15 запросов?
Делаем один общий запрос во все таблицы для 15 новостей и в цикле выводим на страницу.
Делаем один общий запрос во все таблицы для 15 новостей и в цикле выводим на страницу.
Спустя 1 час, 45 минут (19.10.2011 - 16:41) Melvin написал(а):
Застрял теперь вот на этом:
Теперь делаю только 1 запрос к базе:
Выдает верные результаты, но не понимаю как вывести на страницу значение полей, которые одинаковые в нескольких таблицах.
То есть если делаю так:
то в $row['id'] - что будет, если поле id есть у всех трех таблиц?
Теперь делаю только 1 запрос к базе:
$news = mysql_query("SELECT * FROM `users`,`news`,`country` WHERE users.id = news.id_users AND country.id = users.id_country");
Выдает верные результаты, но не понимаю как вывести на страницу значение полей, которые одинаковые в нескольких таблицах.
То есть если делаю так:
$row = mysql_fetch_array($news,MYSQL_ASSOC);
то в $row['id'] - что будет, если поле id есть у всех трех таблиц?
Спустя 2 минуты, 1 секунда (19.10.2011 - 16:43) imbalance_hero написал(а):
В БД хранишь в таблице юзеров идентификатор страны: "ru", далее:
Ничего ведь нет сложного, и лишней таблицы не надо :)
<img src="/images/flag_{$flag}.jpg" />
Ничего ведь нет сложного, и лишней таблицы не надо :)
Спустя 3 минуты, 52 секунды (19.10.2011 - 16:47) Melvin написал(а):
imbalance_hero
Проблема не в том. Если я делаю запрос к таблице news, и получаю автора новости. Мне для каждой новости приходится выяснять какой у него этот идентификатор. А это лишний запрос.
НО я уже все решил, сделав запрос сразу к нескольким таблицам и с условиями.
Проблема не в том. Если я делаю запрос к таблице news, и получаю автора новости. Мне для каждой новости приходится выяснять какой у него этот идентификатор. А это лишний запрос.
НО я уже все решил, сделав запрос сразу к нескольким таблицам и с условиями.
Спустя 4 минуты, 1 секунда (19.10.2011 - 16:51) Melvin написал(а):
В общем не понимаю, как вывести что-то, если запрос сформирован сразу к нескольким таблицам с условием выборки.
mysql_fetch_row($result) - вообще выдает в своих индексах все поля ВСЕХ таблиц. Хз как усзнать нужный индекс.. )) короче хелп
mysql_fetch_row($result) - вообще выдает в своих индексах все поля ВСЕХ таблиц. Хз как усзнать нужный индекс.. )) короче хелп
Спустя 1 минута, 7 секунд (19.10.2011 - 16:52) Winston написал(а):
print_r(mysql_fetch_assoc($result));
Спустя 3 минуты, 24 секунды (19.10.2011 - 16:55) imbalance_hero написал(а):
Melvin
А может запрос покажешь?
А может запрос покажешь?
Спустя 2 минуты, 16 секунд (19.10.2011 - 16:58) Melvin написал(а):
$news = mysql_query("SELECT * FROM `users`,`news`,`country` WHERE users.id = news.id_users AND country.id = users.id_country");
Теперь понял, что он в итоге неверно выдает id. В результате он возвращает id не новости а пользователя...
Спустя 1 минута, 46 секунд (19.10.2011 - 17:00) imbalance_hero написал(а):
Ну так надо указывать поля, которые тебе нужны при выборке, а не просто *.
В таком виде:
`users`.`country`,`news`.`id`,`country`.`id` AS `country_id` ...
И вообще, если ты используешь одну таблицу, и к ней присоединяешь другие, то тут left join тебе надо.
В таком виде:
`users`.`country`,`news`.`id`,`country`.`id` AS `country_id` ...
И вообще, если ты используешь одну таблицу, и к ней присоединяешь другие, то тут left join тебе надо.
Спустя 2 минуты, 3 секунды (19.10.2011 - 17:02) Melvin написал(а):
imbalance_hero
А можешь показать пример, как надо составить запрос с left join вот на основании этих 3 таблиц?
А можешь показать пример, как надо составить запрос с left join вот на основании этих 3 таблиц?
Спустя 2 минуты, 10 секунд (19.10.2011 - 17:04) imbalance_hero написал(а):
Мы список юзеров выбираем, или новости? Что является главной таблицей?
Спустя 4 минуты, 29 секунд (19.10.2011 - 17:08) Melvin написал(а):
В общем есть такие таблицы:
users: id,login,id_country;
news: id,caption,body,id_users;'
country: id,name,image;
Нужно составить запрос с целью получить информацию из таблицы news. Но для каждой новости нужно вывести возле её автора картинку из таблицы country.
То есть в news.id_user - храним id автора новости. В users.id_country - храним для него id картинки.
users: id,login,id_country;
news: id,caption,body,id_users;'
country: id,name,image;
Нужно составить запрос с целью получить информацию из таблицы news. Но для каждой новости нужно вывести возле её автора картинку из таблицы country.
То есть в news.id_user - храним id автора новости. В users.id_country - храним для него id картинки.