Странная какая то ерунда. В MySQL таблице есть строки (text) такого вида "1 225.05", мне нужно показывать их без пробела. Делаю так: PHP: ... foreach ($column as $r) { $select1 = "SELECT S_ZU_kvm FROM temp_05_05_2008_16_55_38 WHERE kad_number_ZU='$r'"; $select11 = mysql_fetch_array(mysql_query($select1)); $test = $select11['S_ZU_kvm']; $S_ZU_kvm = str_replace(' ', '', $test); } echo $S_ZU_kvm."<br>"; в результате цифры остаются такого же формата какого и были то есть 1 222.55.... в чем причина не могу понять... Если же я просто пишу PHP: $S_ZU_kvm = str_replace(' ', '', '1 005.55'); то все правильно отрабатывается...
Сделай так PHP: ... foreach ($column as $r) { $select1 = "SELECT REPLACE(S_ZU_kvm , ' ', '') FROM temp_05_05_2008_16_55_38 WHERE kad_number_ZU='$r'"; $select11 = mysql_fetch_array(mysql_query($select1)); $test = $select11['S_ZU_kvm']; $S_ZU_kvm = str_replace(' ', '', $test); } echo $S_ZU_kvm."<br>"; [/quote]
В переменной $S_ZU_kvm оказывается NULL... понять не могу почему... А кодировка, разные символы... и как исправить?
1) Сделайте единичный запрос к базе, а не в массиве 2) В начало файла - error_reporting(E_ALL); 3) После запроса к mysql - or die(mysql_error); 4) Выводите непосредственно $select11['S_ZU_kvm']
Написал вот так. PHP: <?php require_once ("connect_db.php"); error_reporting(E_ALL); $select1 = "SELECT REPLACE(S_ZU_kvm, ' ', '') FROM temp_05_05_2008_16_55_38 WHERE kad_number_ZU='02:49:15 07 01:0014'"; $query = mysql_query($select1); $select11 = mysql_fetch_array($query) or die(mysql_error); $test = $select11['S_ZU_kvm']; $S_ZU_kvm = str_replace(' ', '', $test); echo $S_ZU_kvm."<br>"; ?> вот что выдало Notice: Undefined index: S_ZU_kvm in Z:\home\192.168.0.2\www\test_replace_v2.php on line 8
Все равно пробелы не убирает. Дело похоже действительно в кодировке... а как пробел написать по другому можно?
Правильнее не так: PHP: <?php $query = mysql_query($select1); $select11 = mysql_fetch_array($query) or die(mysql_error); ?> А так: PHP: <?php $query = mysql_query($select1); $select11 = mysql_fetch_array($query) or die(mysql_error); ?> Это значит, что в массиве нет такого индекса. Поэтому смотрите на ошибки базы.
Что то мне кажется индекс тут не причем. Я же получаю значение в переменную. Теперь мне нужно удалить оттуда пробел и вернуть его обратно в базу. Может есть другой способ это сделать? Руками забил в базу 4 056.45 . И о чудо скрипт все сделал правильно... Так как же сделать правильную кодировку?
Ошибка говорит, что нет такой переменной (а конкретно -- значения S_ZU_kvm в массиве - результате выборки из базы). Такое может быть по двум причинам: 1) Mysql вернула нулевой результат (ни одного ряда не выбрано) 2) Возникла ошибка базы и она "подавилась". Собственно, несуществующая переменная есть NULL. P.S. На мой взгляд проблема с кодировками может вызвать проблему с отображением букв, но не цифр.
PHP: $select1 = "SELECT REPLACE(S_ZU_kvm, ' ', '') as S_ZU_kvm FROM temp_05_05_2008_16_55_38 WHERE kad_number_ZU='02:49:15 07 01:0014'"; С этой строкой все правильно проходит. Руками забил в базу 4 056.45 . И о чудо скрипт все сделал правильно... Так как же сделать правильную кодировку?
Смотря какая кодировка в базе. На основании этого надо делать: setlocale(LC_ALL, "ru_RU.кодировка"); - локаль документа mysql_query("SET NAMES 'кодировка'"); - локаль соединения И еще не забудьте указать такую же в метатегах html-страницы.
В базе cp1251_general_ci. Написал вот так PHP: require_once ("connect_db.php"); setlocale(LC_ALL, "cp1251_general_ci"); mysql_query("SET NAMES 'cp1251_general_ci'"); все равно все тоже самое