PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 10
Krondor Отправлено: 05 Июля, 2011 - 09:35:41 • Тема: Преобразование числа в строку • Форум: Хранение данных, их вывод и обработка

Ответов: 1
Просмотров: 1524
Добрый день, Уважаемые форумчане.
Помогите пожалуйста. у меня возникла необходимость преобразования числа в строку. но не переделать переменную типа int в переменную типа string, а переделать число 241 в строку "Двести сорок один".
Не подскажете ли, есть ли какие-то готовые решения(или хотя бы алгоритмы) или нужно придумывать самому?
Krondor Отправлено: 06 Мая, 2011 - 22:38:08 • Тема: Оптимизация запроса • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 33
Большое спасибо за комментарии..
проблема решена убиранием UPPER().
Krondor Отправлено: 06 Мая, 2011 - 12:20:14 • Тема: Оптимизация запроса • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 33
Господа, прощу помощи еще раз.
есть запрос:
CODE (text):
скопировать код в буфер обмена
  1. SELECT ctlg.name ctlgname,
  2.         i.number,
  3.         i.name itmname,
  4.         Price_final((100+crg.margin)/100,
  5.                         (100+irg.margin)/100,
  6.                         p.prc,
  7.                         i.weight,
  8.                         ss.weight_price,
  9.                         (SELECT cur FROM fw_currency WHERE fw_currency.id_cur=p.id_cur),
  10.                         'Наличные',
  11.                         cur.id_cur,
  12.                         ss.nal,
  13.                         ss.beznal,
  14.                         (100+ss.add_margin)/100,
  15.                         i.weightv,
  16.                         ss.fraht,
  17.                         ss.custom,
  18.                         ss.pack,
  19.                         ss.use_weightv,
  20.                         r.name
  21.                 ) prc,
  22.                 Weight2(
  23.                                 ss.Weight_Price,
  24.                                 cur.cur,
  25.                                 'Наличные',
  26.                                 ss.nal,
  27.                                 ss.beznal
  28.                 ) weight2,
  29.                 p.qty,
  30.                 del.period,
  31.                 si.descr,
  32.                 ss.weight_price,
  33.                 r.name regname,
  34.                 u.id sup_id,
  35.                 del.id del_id,
  36.                 i.item_id,
  37.                 p.id_prc,
  38.                 cur.id_cur,
  39.                 ors.ordered,
  40.                 ors.sold,
  41.                 del.del_type
  42. FROM fw_deliveries as del
  43.         LEFT JOIN fw_users as u ON (del.id_user=u.id)
  44.         LEFT JOIN fw_price as p ON (p.id_sup=u.id)
  45.         LEFT JOIN fw_sup_settings as ss ON (ss.id_user=u.id)
  46.         LEFT JOIN fw_sup_info AS si ON (si.id_user=u.id)  
  47.         LEFT JOIN fw_items as i ON (i.item_id=p.id_itm)
  48.         LEFT JOIN fw_catalogs as ctlg ON (ctlg.id=i.catalogue_id)
  49.         LEFT JOIN fw_clientsrg as crg ON (crg.client_id='2' and crg.dealer_id='83')
  50.         LEFT JOIN fw_itemsrg as irg ON (irg.catalogue_id=ctlg.id and irg.supplier_id=ss.id_user)
  51.         LEFT JOIN fw_currency as cur ON (cur.id_cur=p.id_cur)
  52.         LEFT JOIN fw_regions as r ON (r.id=si.region_id)
  53.         LEFT JOIN fw_order_statistic as ors ON (ors.item_id=p.id_itm and ors.sup_id=p.id_sup)
  54. WHERE UPPER(i.number)='MR455003' and ((del.period < '7') OR (del.period >= '7' AND del.period < '16') OR (del.period >= '16' AND del.period <= '22') OR (del.period >= '23' AND del.period <= '45') OR del.period >= '46') and p.status='1' and ctlg.enabled='1'
  55. ORDER BY prc

он выполняется от 30 до 2х минут. мне необходимо его оптимизировать, чтобы он выполнялся не более 2-3х секунд.
на сколько я понимаю, надо разносить JOINы, но я знаю как именно.

на счет кучи одинаковых условий с del.period не обращайте внимания. это условие собирается из 5 разных галок с формы, так что мне проще проверить тупо наличие галки, чем проверять в каких комбинациях эти галки присутствуют.
Krondor Отправлено: 04 Мая, 2011 - 14:08:07 • Тема: Помогите с запросом на добавление • Форум: SQL и Архитектура БД

Ответов: 0
Просмотров: 16
Господа. прощу помощи.
есть база данных инет-магазина автозапчастей. в ней есть три таблицы.
fw_items - в ней находится информация по деталям. каждая деталь принадлежит одному конкретному каталогу. (id, название, каталожный номер, id каталога, прочее)
fw_matches - в ней находится соответствие названия и ID каталога. (cat_name, cat_id)
pricelist - прайс-лист поставщика, в котором находится информация по деталям и ценам. (поле brend содержит название каталога, к которому принадлежит деталь)
мне нужно из таблички pricelist забрать все детали, которых нет в табличке fw_items.
у меня получилось пока что составить вот такой запрос:
CODE (text):
скопировать код в буфер обмена
  1. INSERT INTO fw_items (`name`, `number`, `catalogue_id`, `alternative`)
  2. SELECT fr.name, fr.number, m.cat_id, fr.altcode
  3. FROM pricelist fr
  4. LEFT JOIN fw_matches AS m ON (m.cat_name=fr.brend)
  5. LEFT JOIN fw_items AS i ON (i.number=fr.number and i.catalogue_id=m.cat_id)
  6. WHERE (NOT EXISTS (
  7. SELECT a.item_id
  8. FROM fw_items a
  9. WHERE a.item_id=i.item_id))
  10. AND (m.cat_name=fr.brend)

но при использовании такого запроса периодически появляются дубликаты уже имеющихся в таблице деталей.
подскажите пожалуйста, как можно модифицировать запрос, чтобы дубликатов не возникало и детали загружались корректно?
Krondor Отправлено: 20 Апреля, 2010 - 10:50:44 • Тема: Проблема с проходом по массиву. • Форум: Программирование на PHP

Ответов: 0
Просмотров: 199
Добрый день, господа.
я сейчас работаю над форумом одним. у меня возникла такая проблема.
есть массив $users=array('user_id' => array(<список тем, где отписался user>))
вот print_r($users):
CODE (text):
скопировать код в буфер обмена
  1.  
  2. Array
  3. (
  4.     [3] => Array
  5.         (
  6.             [0] => 10
  7.             [1] => 9
  8.             [2] => 12
  9.             [3] => 11
  10.         )
  11.  
  12.     [4] => Array
  13.         (
  14.             [0] => 15
  15.             [1] => 13
  16.         )
  17.  
  18. )

далее следует вот такой код:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. foreach ($users as $uid => $ut) {
  3.         echo "uid=".$uid.", utopics=";
  4.         print_r($ut);
  5. }
  6.  

вот результат этого кода:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. uid=3, utopics=
  3.  
  4. Array
  5. (
  6.     [0] => 10
  7.     [1] => 9
  8.     [2] => 12
  9.     [3] => 11
  10. )
  11.  
  12. uid=4, utopics=
  13.  
  14. Array
  15. (
  16.     [0] => 10
  17.     [1] => 9
  18.     [2] => 12
  19.     [3] => 11
  20. )
  21.  

как видно из результата, для обоих пользователей показывается один и тот же список тем, хотя непосредственно перед пробегом по массиву, его содержание было показано пользователю.
никак не могу понять в чем проблема?? помогите пожалуйста.
заранее благодарен.
(Добавление)
проблема решилась сама собой, стоило мне поменять $ut на $tu.
Krondor Отправлено: 03 Декабря, 2009 - 14:30:35 • Тема: Вопрос про дату • Форум: SQL и Архитектура БД

Ответов: 5
Просмотров: 46
спасибо.
и соотвественно, чтобы быть абсолютно уверенным, что мы берем данные только за текущий месяц текущего года к этому запросу еще надо добавить " && YEAR('date_field' ) = YEAR(NOW())". так?
Krondor Отправлено: 03 Декабря, 2009 - 11:46:12 • Тема: Вопрос про дату • Форум: SQL и Архитектура БД

Ответов: 5
Просмотров: 46
Господа, помогите пожалуйста.
есть таблица, в таблице есть поле Дата(тип данных Date). мне нужно выбрать из таблицы все записи, даты которых входят в текущий месяц.
например сегодня 02 декабря 2009. мне нужны все данные за декабрь 2009 года.

подскажите пожалуйста, как мне запрос построить??
Krondor Отправлено: 09 Октября, 2009 - 09:24:47 • Тема: как правильно поставить проверку, что запрос вернул пустой ответ? • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 52
Champion пишет:
Если бы запрос выполнился нормально, $q был бы корректным. Покажи строчку, где у тебя mysql_query
(Добавление)
Кстати, напиши там mysql_query() or die(mysql_error()) и увидишь ошибку если она есть


Champion, большое спасибо, "or die(mysql_error())" показал, где у меня ошибка закралась.

я использовал строку запроса, обрамленную апострофами, а не двойными кавычками, и у меня названия переменных не обрабатывались при передаче запроса к MySQL серверу. Улыбка
Krondor Отправлено: 09 Октября, 2009 - 08:57:28 • Тема: как правильно поставить проверку, что запрос вернул пустой ответ? • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 52
Champion пишет:
$q - это указатель на ресурс. Его нужно проинициализировать корректным запросом mysql_query(). Возможно не выполнился запрос, тогда надо проверить его в ПМА.

Привет пишется, потому что функция mysql_num_rows возвращает при ошибке false. А false == 0 - это истинное условие. Кстати, false === 0 - ложное.


ой. прошу прощения. забыл указать еще одну деталь. в данный момент таблица пустая. запрос выполняется(по крайней мере mysql не ругается на него никаким образом), просто выводить из таблицы нечего.
Krondor Отправлено: 09 Октября, 2009 - 08:44:56 • Тема: как правильно поставить проверку, что запрос вернул пустой ответ? • Форум: SQL и Архитектура БД

Ответов: 4
Просмотров: 52
Добрый день.
Чтобы не плодить тем, спрошу здесь.
извините за такой ламерский вопрос, но я не знаю, что делать.
как правильно поставить проверку, что запрос вернул пустой ответ?

если я пробую:
if (mysql_num_rows($q) == 0) {
echo "Привет";
}
то мне выдается варнинг: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
но при этом пишется Привет.
а если я пробую:
if (!isset($q)) {
echo "Привет";
}
то никакого варнинга нет, но и Привета тоже нет.

подскажите пожалуйста, как сделать проверку, чтобы не было варнинга и выводился Привет. Улыбка

заранее благодарен.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB