Я делаю сортировку по прайсу, естественно y.e. мешает.
$key = "price";
Делаю запрос
$result = mysql_query ("SELECT `ad_index`, `ad_date`, `ad_title`, `ad_html`, `district`, `orient`, `phones`, `total_space`, `floors_num`, `state`, `material`, `house_type`, `price`,`room_count`, `living_space`, `kitchen_space`, `planning`, `floor`, `toilet`, `balcony`, `loggia` FROM zhilcom_class_advert_flat_sale ORDER BY $key ", $db);
$myrow = mysql_fetch_array($result);
в php понятно символы могу удалить лишние
$price = $myrow['price']; echo substr($price,0,strpos($price,'.00'));
но как тоже самое сделать при запросе в mysql?
Спустя 59 минут, 5 секунд (24.07.2010 - 03:22) Ice написал(а):
1. Очень плохо, что так сформирован ХМЛ. Думать было надо.
2. Здесь
2. Здесь
$myrow = mysql_fetch_array($result);недочет. Найдёте?
Спустя 4 часа, 43 минуты, 4 секунды (24.07.2010 - 08:05) twin написал(а):
Цитата |
но как тоже самое сделать при запросе в mysql? |
Не нужно это делать. Просто нужно правильно писать запрос:
$result = mysql_query ("SELECT `ad_index`, `ad_date`, `ad_title`, `ad_html`,
`district`, `orient`, `phones`, `total_space`,
`floors_num`, `state`, `material`, `house_type`,
`price`,`room_count`, `living_space`, `kitchen_space`,
`planning`, `floor`, `toilet`, `balcony`, `loggia`
FROM zhilcom_class_advert_flat_sale
ORDER BY $key ASC", $db);
Спустя 3 часа, 1 минута, 26 секунд (24.07.2010 - 11:06) Michael написал(а):
1.
2.
SELECT ..., FORMAT(`price`, 0) as `price`, ...
2.
SELECT ..., LEFT(`price`, LOCATE('.' , `price`) - 1) as `price`, ...
Спустя 31 минута, 24 секунды (24.07.2010 - 11:37) twin написал(а):
Да он и так отсортирует, если задать условие явно. ASC ИЛИ DESC
Спустя 40 минут, 32 секунды (24.07.2010 - 12:18) Michael написал(а):
Цитата (twin) |
Да он и так отсортирует, если задать условие явно. ASC ИЛИ DESC |
если не указывать, то ASC по умолчанию:
Цитата (HELP) |
The default sort order is ascending |
Вопрос в том как отсортирует - как строку или как число. К тому же он просил, чтобы средствами mysql отрубалась нечисловая часть.
Нашел еще один ядовый вариант - и отрубает и в число переводит и сортирует правильно:
SELECT ..., CAST(`price` AS SIGNED) as `price`, ... order by `price` ASC
Спустя 5 часов, 26 минут, 21 секунда (24.07.2010 - 17:44) umnik90 написал(а):
Цитата (Ice @ 24.07.2010 - 00:22) |
1. Очень плохо, что так сформирован ХМЛ. Думать было надо. 2. Здесь $myrow = mysql_fetch_array($result);недочет. Найдёте? |
XML делает локальная база, я же не заставлю их переписать ради меня ее?
Недочет не нашел.
Спустя 1 минута, 42 секунды (24.07.2010 - 17:46) umnik90 написал(а):
Цитата (Michael @ 24.07.2010 - 09:18) | ||||
если не указывать, то ASC по умолчанию:
Вопрос в том как отсортирует - как строку или как число. К тому же он просил, чтобы средствами mysql отрубалась нечисловая часть. Нашел еще один ядовый вариант - и отрубает и в число переводит и сортирует правильно: SELECT ..., CAST(`price` AS SIGNED) as `price`, ... order by `price` ASC |
Спасибо!
Однако не совсем понимаю синтаксис применения.
$result = mysql_query ("SELECT `ad_index`, `ad_date`, `ad_title`, `ad_html`, `district`, `orient`, `phones`, `total_space`, `floors_num`, `state`, `material`, `house_type`, CAST(`price` AS SIGNED) as `price`,`room_count`, `living_space`, `kitchen_space`, `planning`, `floor`, `toilet`, `balcony`, `loggia` FROM zhilcom_class_advert_flat_sale ORDER BY `price` ASC ", $db);
$myrow = mysql_fetch_array($result);
так не работает...
в дальнейшем обращение такое же? как к элементу массива myrow price?
Спустя 54 секунды (24.07.2010 - 17:47) umnik90 написал(а):
Цитата (twin @ 24.07.2010 - 08:37) |
Да он и так отсортирует, если задать условие явно. ASC ИЛИ DESC |
Воспринимает тогда как строку и сортировка не верная
Спустя 7 минут, 12 секунд (24.07.2010 - 17:54) Ice написал(а):
Цитата (umnik90 @ 24.07.2010 - 18:44) |
XML делает локальная база, я же не заставлю их переписать ради меня ее? Недочет не нашел. |
1. Передайте им, что они... Почему? Потому что в ХМЛе можно было разнести в разные теги все.
2. Недочет в том, что функции не хватает третьего параметра, а из-за этого только хуже.
Спустя 35 минут, 49 секунд (24.07.2010 - 18:30) umnik90 написал(а):
Цитата (Ice @ 24.07.2010 - 14:54) | ||
1. Передайте им, что они... Почему? Потому что в ХМЛе можно было разнести в разные теги все. 2. Недочет в том, что функции не хватает третьего параметра, а из-за этого только хуже. |
Вы имеете введу MYSQL_BOTH MYSQL_ASSOC MYSQL_NUM?
Это ведь не поможет в сложившейся ситуации, да и никогда без них проблем не было.
Спустя 44 минуты, 12 секунд (24.07.2010 - 19:14) Ice написал(а):
Цитата (umnik90 @ 24.07.2010 - 19:30) |
да и никогда без них проблем не было |
Для меня проблема, когда скрипт жрет память за двоих:) Урезаю аппетиты как могу

Спустя 4 часа, 5 минут, 17 секунд (24.07.2010 - 23:19) umnik90 написал(а):
Мы отвлелись, так как же это работает? ))
Спустя 32 минуты, 55 секунд (24.07.2010 - 23:52) SlavaFr написал(а):
в общем mysql научилось у ПХП многому и неожиданое заявление типа
выдает при отключеном sql_mode на удивление 10
мое одноразовое предложение
а многоразовое, это или изменить импорт в таблицу или зделать дополнительное поле, где содержимое будет в правильном формате содержатся и благодоря индексу быстро сортироватся
set @@sql_mode:= '';
select ('2.00 banana.'+'3 Jabloka') * '2 bublik';
выдает при отключеном sql_mode на удивление 10
мое одноразовое предложение
.... ORDER BY (`price` * 1)
а многоразовое, это или изменить импорт в таблицу или зделать дополнительное поле, где содержимое будет в правильном формате содержатся и благодоря индексу быстро сортироватся
Спустя 7 часов, 37 минут, 16 секунд (25.07.2010 - 07:30) Michael написал(а):
Цитата (umnik90) |
так не работает... в дальнейшем обращение такое же? как к элементу массива myrow price? |
да, обращение такое же. SQL запрос проверяй сначала в phpmyadmin. Я у себя проверял - все работает.
Спустя 10 часов, 48 минут, 45 секунд (25.07.2010 - 18:18) umnik90 написал(а):
Michael
в phpmyadmin работает, однако на страницу ничего не выводит.
http://slon.dn.ua/zhilcom/zhilcom_in.php просто пустое поле.
в phpmyadmin работает, однако на страницу ничего не выводит.
http://slon.dn.ua/zhilcom/zhilcom_in.php просто пустое поле.
Спустя 5 минут, 10 секунд (25.07.2010 - 18:24) umnik90 написал(а):
запрашиваю так:
пытаюсь вывести
весь код:
$result = mysql_query ("SELECT `ad_index`, `ad_date`, `ad_title`, `ad_html`, `district`, `orient`, `phones`, `total_space`, `floors_num`, `state`, `material`, `house_type`, CAST(`price` AS SIGNED) as `price`, `room_count`, `living_space`, `kitchen_space`, `planning`, `floor`, `toilet`, `balcony`, `loggia` FROM zhilcom_class_advert_flat_sale ORDER BY `price` ASC ", $db);
$myrow = mysql_fetch_array($result);
пытаюсь вывести
<?php $myrow['price']; ?>
весь код:
<?php
$result = mysql_query ("SELECT `ad_index`, `ad_date`, `ad_title`, `ad_html`, `district`, `orient`, `phones`, `total_space`, `floors_num`, `state`, `material`, `house_type`, CAST(`price` AS SIGNED) as `price`, `room_count`, `living_space`, `kitchen_space`, `planning`, `floor`, `toilet`, `balcony`, `loggia` FROM zhilcom_class_advert_flat_sale ORDER BY `price` ASC ", $db);
$myrow = mysql_fetch_array($result);
do
{ ?>
<tr onclick="location.href='Гиперссылка';" style="cursor: pointer;" class="go">
<td style="border-top:#FFF thin solid; border-left:#FFF thin solid; padding:5px;"><a href="<?php echo "zhilcom_db_det.php?id=".$myrow['ad_index']; ?>"><?php echo $myrow['room_count']; ?></a></td>
<td style="border-top:#FFF thin solid; border-left:#FFF thin solid;"><?php
$district= $myrow['district'];
switch ($district) {
case '0': echo "?"; break;
case '1': echo "Ворошиловский"; break;
case '2': echo "Калининский"; break;
case '3': echo "Киевский"; break;
case '4': echo "Ленинский"; break;
case '5': echo "Куйбышевский"; break;
case '6': echo "Кировский"; break;
case '7': echo "Будёновский"; break;
case '8': echo "Пролетарский"; break;
case '9': echo "Петровский"; break;
case '10': echo "Межгород"; break;
case '11': echo "Макеевка"; break;
};
?></td>
<td style="border-top:#FFF thin solid; border-left:#FFF thin solid;"><?php echo $myrow['orient']; ?> </td>
<td style="border-top:#FFF thin solid; border-left:#FFF thin solid;"><?php $myrow['price']; ?></td>
<td style="border-top:#FFF thin solid; border-left:#FFF thin solid;"><?php
$state= $myrow['state'];
switch ($state) {
case '0': echo "?"; break;
case '1': echo "Убитое"; break;
case '2': echo "Требующее ремонта"; break;
case '3': echo "Нормальное"; break;
case '4': echo "Хорошее"; break;
case '5': echo "Ремонт"; break;
case '6': echo "Капитальный ремонт"; break;
case '7': echo "Евроремонт"; break;
};
?></td>
<td style="border-top:#FFF thin solid; border-left:#FFF thin solid;"><?php echo $myrow['living_space']; ?></td>
<td style="border-top:#FFF thin solid; border-left:#FFF thin solid;"><?php echo $myrow['total_space']; ?></td>
<td style="border-top:#FFF thin solid; border-left:#FFF thin solid;"><?php echo $myrow['kitchen_space']; ?></td>
<td style="border-top:#FFF thin solid; border-left:#FFF thin solid;"><?php echo $myrow['floor']; ?></td>
<td style="border-top:#FFF thin solid; border-left:#FFF thin solid;"><?php echo $myrow['floors_num']; ?></td>
<td style="border-top:#FFF thin solid; border-left:#FFF thin solid; border-right:#FFF thin solid;"><?php echo $myrow['ad_index']; ?></td>
</tr>
<?php
}
while ($myrow = mysql_fetch_array ($result));
?>
Спустя 11 минут, 8 секунд (25.07.2010 - 18:35) Michael написал(а):
Вместо:
Пиши:
<?php $myrow['price'];
Пиши:
<?php echo $myrow['price'];
Спустя 16 минут, 39 секунд (25.07.2010 - 18:51) umnik90 написал(а):
Цитата (Michael @ 25.07.2010 - 15:35) |
Вместо:<?php $myrow['price']; Пиши: <?php echo $myrow['price']; |
i am so sorry...
туплю))
p.s. на самом деле я там оставил преобразование php еще. и в итоге получалось мускл вернул результат, а php взял и обрезал его по первому условию. в общем я тогда это заметил и убрал вместе с выводом зачем-то.
спасибо за помощь!
Спустя 5 часов, 6 минут, 21 секунда (25.07.2010 - 23:58) SlavaFr написал(а):
я честно говоря не понял, чем (price * 1) не понравился?
Спустя 32 минуты, 34 секунды (26.07.2010 - 00:30) twin написал(а):
SlavaFr
Цитата |
я честно говоря не понял, чем (price * 1) не понравился? |
Кстати, самое простое и действенное решение. Я чет не задумывался, спасибо за науку.
Всегда решал в PHP приведение типов
Цитата |
$a = $a + 0; |
, чет на ум не пришло так же сделать в MySQL...
(Умножить на 1 и прибавить ноль в контексте одно и тоже.)
(Умножить на 1 и прибавить ноль в контексте одно и тоже.)