$q=mysql_query("SELECT DISTINCT ELT(MONTH(date),'Янв.','Фев.','Март','Апр.','Май','Июнь','Июль','Авг.','Сен.','Окт.','Ноя.','Дек.') AS rus_month FROM `date`");
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Viper
Отправлено: 20 Декабря, 2010 - 15:13:02
Активный участник
Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007 Откуда: Симферополь
Помог: 98 раз(а)
Цитата:
ELTELT(MONTH(date)
Не используйте date, time и т.п. в названии полей, т.к. есть такие же функции DATE(), TIME() и т.д. Сами потом запутаетесь и к тому же можете получить неожиданно интересные результаты.
Покинул форум
Сообщений всего: 18
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
Спасибо большое. Очень помогло.
JustUserR
Отправлено: 20 Декабря, 2010 - 17:46:28
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Reniksa Использование генерации строкового наименования элемента выбираемой даты на стороне сервера приложений не обеспечивает добавление дополнительной эффективности в данном случае - однако может являтеься критерием несовместимости при осуществлении переноса информационных полей на другой БД-сервер вследствие использования региональных символов в константном представлении
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Reniksa
Отправлено: 21 Декабря, 2010 - 10:25:28
Новичок
Покинул форум
Сообщений всего: 18
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
А как же тогда сделать?
Мне собственно для чего это нужно. У меня есть таблица со статьями, у каждой статьи есть дата опубликования с типом поля DATE. Как сделать сортировку по месяцам, чтобы можно было выбрать месяц из выпадающего списка. Я сделала вот так, на другой таблице для примера. Конечно ничего не работает, жду ваших советов. Но суть задумки думаю будет ясна.
$q=mysql_query("SELECT DISTINCT ELT(MONTH(`date`),'Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь') AS month_short FROM `date`");
$q2=mysql_fetch_array("SELECT name FROM date WHERE MONTH(`date`)={$_POST['month']}");
}
EuGen
Отправлено: 21 Декабря, 2010 - 10:30:51
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Да не слушайте..
Иногда у меня (и еще по меньшей мере у 10-20 пользователей форума) создается впечатление, что не все посты с этого аккаунта пишутся человеком.
Приведенное решение вполне просто и понятно. Единственный его минус - в том, что он нарушает правило "БД - не калькулятор", то есть лучше вычисления делать на стороне скрипта.
Но если большой нагрузки не предполагается, то это - нормально, функции в SQL для того и придуманы.
А по поводу "несовместимостей" - это актуально, только если Вы хотите сделать систему, работающаю и в Oracle и в Postgree. Но я на 99% уверен, что у Вас будет MySQL как он и есть сейчас. Не так ли?
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Reniksa
Отправлено: 21 Декабря, 2010 - 10:33:00
Новичок
Покинул форум
Сообщений всего: 18
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
Да конечно будет MySQL. Только что-то не работает. Не подскажите где я сделала ошибку? (Добавление)
Походу значение $_POST['month'] не принимается. Ведь оно теперь в буквенном виде. А как бы в базе данных этого буквенного вида и нету, есть только в запросе. Вот надо чтото сделать чтобы во втором запросе поняли что я хочу выбрать. Как-то так...
EuGen
Отправлено: 21 Декабря, 2010 - 10:43:05
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Делайте так: выбирайте и month_short (то есть то, что по-русски Вам нужно) и оригинальное значение из БД.
Оригинальное подставляйте в <option value=''> (то есть в значение опции), а русское - в визуальное отобразение опции. Тогда все будет искаться и работать.
Да, и переименуйте уже Ваши поля/таблицы так, чтобы они не использовали в названии служебные слова/зарезервированные функции SQL (это затрудняет читаемость кода, да и к ошибке неожиданной привести может)
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Reniksa
Отправлено: 21 Декабря, 2010 - 11:06:57
Новичок
Покинул форум
Сообщений всего: 18
Дата рег-ции: Сент. 2010
Помог: 0 раз(а)
Спасибо, добрый человек. У меня все получилось.
OrmaJever
Отправлено: 21 Декабря, 2010 - 12:39:32
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
зачем реально так усложнять? Можно вывести с бд цыфрой а потом
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.