[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: удалить символ из поля mysql
umnik90
Поле price имеет вид "1000.00 у.е.", хранить только число не получится - так формируется поле в xml на локальной БД.

Я делаю сортировку по прайсу, естественно 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. Здесь
$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.
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)
Цитата (twin)
Да он и так отсортирует, если задать условие явно. ASC ИЛИ DESC

если не указывать, то ASC по умолчанию:
Цитата (HELP)
The default sort order is ascending


Вопрос в том как отсортирует - как строку или как число. К тому же он просил, чтобы средствами 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)
Цитата (umnik90 @ 24.07.2010 - 18:44)
XML делает локальная база, я же не заставлю их переписать ради меня ее?
Недочет не нашел.

1. Передайте им, что они... Почему? Потому что в ХМЛе можно было разнести в разные теги все.
2. Недочет в том, что функции не хватает третьего параметра, а из-за этого только хуже.

Вы имеете введу MYSQL_BOTH MYSQL_ASSOC MYSQL_NUM?

Это ведь не поможет в сложившейся ситуации, да и никогда без них проблем не было.

Спустя 44 минуты, 12 секунд (24.07.2010 - 19:14) Ice написал(а):
Цитата (umnik90 @ 24.07.2010 - 19:30)
да и никогда без них проблем не было

Для меня проблема, когда скрипт жрет память за двоих:) Урезаю аппетиты как могу smile.gif

Спустя 4 часа, 5 минут, 17 секунд (24.07.2010 - 23:19) umnik90 написал(а):
Мы отвлелись, так как же это работает? ))

Спустя 32 минуты, 55 секунд (24.07.2010 - 23:52) SlavaFr написал(а):
в общем mysql научилось у ПХП многому и неожиданое заявление типа

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 просто пустое поле.

Спустя 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 и прибавить ноль в контексте одно и тоже.)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.