За последние 24 часа нас посетили 42575 программистов и 1814 роботов. Сейчас ищут 1509 программистов ...

Удаление пробела в данных взятых из MySQL.

Тема в разделе "PHP для новичков", создана пользователем Keo, 7 май 2008.

  1. Keo

    Keo Активный пользователь

    С нами с:
    20 сен 2006
    Сообщения:
    38
    Симпатии:
    0
    Странная какая то ерунда. В MySQL таблице есть строки (text) такого вида "1 225.05", мне нужно показывать их без пробела.

    Делаю так:

    PHP:
    1.  ...
    2.  foreach ($column as $r)
    3.          {
    4.                      
    5.              $select1 = "SELECT S_ZU_kvm FROM temp_05_05_2008_16_55_38 WHERE kad_number_ZU='$r'";
    6.                                      $select11 = mysql_fetch_array(mysql_query($select1));
    7.                                      $test = $select11['S_ZU_kvm'];
    8.              $S_ZU_kvm = str_replace(' ', '', $test);
    9.                          }
    10.  
    11.  echo $S_ZU_kvm."<br>";


    в результате цифры остаются такого же формата какого и были то есть 1 222.55.... в чем причина не могу понять... Если же я просто пишу
    PHP:
    1.  $S_ZU_kvm = str_replace(' ', '', '1 005.55');
    то все правильно отрабатывается...
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    кодировка, разные символы.
     
  3. EugeneTM

    EugeneTM Активный пользователь

    С нами с:
    19 апр 2008
    Сообщения:
    85
    Симпатии:
    0
    Сделай так

    PHP:
    1.  ...
    2.  foreach ($column as $r)
    3.          {
    4.                      
    5.              $select1 = "SELECT REPLACE(S_ZU_kvm , ' ', '') FROM temp_05_05_2008_16_55_38 WHERE kad_number_ZU='$r'";
    6.                                      $select11 = mysql_fetch_array(mysql_query($select1));
    7.                                      $test = $select11['S_ZU_kvm'];
    8.              $S_ZU_kvm = str_replace(' ', '', $test);
    9.                          }
    10.  
    11.  echo $S_ZU_kvm."<br>";
    [/quote]
     
  4. Keo

    Keo Активный пользователь

    С нами с:
    20 сен 2006
    Сообщения:
    38
    Симпатии:
    0
    В переменной $S_ZU_kvm оказывается NULL... понять не могу почему...

    А кодировка, разные символы... и как исправить?
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    1) Сделайте единичный запрос к базе, а не в массиве
    2) В начало файла - error_reporting(E_ALL);
    3) После запроса к mysql - or die(mysql_error);
    4) Выводите непосредственно $select11['S_ZU_kvm']
     
  6. Keo

    Keo Активный пользователь

    С нами с:
    20 сен 2006
    Сообщения:
    38
    Симпатии:
    0
    Написал вот так.
    PHP:
    1. <?php
    2.     require_once ("connect_db.php");
    3.     error_reporting(E_ALL);
    4.    
    5.     $select1 = "SELECT REPLACE(S_ZU_kvm, ' ', '') FROM temp_05_05_2008_16_55_38 WHERE kad_number_ZU='02:49:15 07 01:0014'";
    6.     $query = mysql_query($select1);
    7.     $select11 = mysql_fetch_array($query) or die(mysql_error);
    8.     $test = $select11['S_ZU_kvm'];
    9.         $S_ZU_kvm = str_replace(' ', '', $test);
    10.     echo $S_ZU_kvm."<br>";
    11. ?>
    вот что выдало

    Notice: Undefined index: S_ZU_kvm in Z:\home\192.168.0.2\www\test_replace_v2.php on line 8
     
  7. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    правильне для последающей выдачи будет
     
  8. Keo

    Keo Активный пользователь

    С нами с:
    20 сен 2006
    Сообщения:
    38
    Симпатии:
    0
    Все равно пробелы не убирает. Дело похоже действительно в кодировке... а как пробел написать по другому можно?
     
  9. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Правильнее не так:
    PHP:
    1. <?php
    2.  $query = mysql_query($select1);
    3. $select11 = mysql_fetch_array($query) or die(mysql_error);
    4. ?>
    5.  
    А так:
    PHP:
    1.  
    2. <?php
    3.  $query = mysql_query($select1);
    4. $select11 = mysql_fetch_array($query) or die(mysql_error);
    5. ?>
    6.  

    Это значит, что в массиве нет такого индекса. Поэтому смотрите на ошибки базы.
     
  10. Keo

    Keo Активный пользователь

    С нами с:
    20 сен 2006
    Сообщения:
    38
    Симпатии:
    0
    Что то мне кажется индекс тут не причем. Я же получаю значение в переменную. Теперь мне нужно удалить оттуда пробел и вернуть его обратно в базу. Может есть другой способ это сделать?

    Руками забил в базу 4 056.45 . И о чудо скрипт все сделал правильно... Так как же сделать правильную кодировку?
     
  11. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Ошибка говорит, что нет такой переменной (а конкретно -- значения S_ZU_kvm в массиве - результате выборки из базы).
    Такое может быть по двум причинам:
    1) Mysql вернула нулевой результат (ни одного ряда не выбрано)
    2) Возникла ошибка базы и она "подавилась".

    Собственно, несуществующая переменная есть NULL.

    P.S. На мой взгляд проблема с кодировками может вызвать проблему с отображением букв, но не цифр.
     
  12. Keo

    Keo Активный пользователь

    С нами с:
    20 сен 2006
    Сообщения:
    38
    Симпатии:
    0
    PHP:
    1. $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 . И о чудо скрипт все сделал правильно... Так как же сделать правильную кодировку?
     
  13. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Смотря какая кодировка в базе. На основании этого надо делать:
    setlocale(LC_ALL, "ru_RU.кодировка"); - локаль документа
    mysql_query("SET NAMES 'кодировка'"); - локаль соединения
    И еще не забудьте указать такую же в метатегах html-страницы.
     
  14. Keo

    Keo Активный пользователь

    С нами с:
    20 сен 2006
    Сообщения:
    38
    Симпатии:
    0
    В базе cp1251_general_ci.

    Написал вот так

    PHP:
    1. require_once ("connect_db.php");
    2. setlocale(LC_ALL, "cp1251_general_ci");
    3. mysql_query("SET NAMES 'cp1251_general_ci'");
    все равно все тоже самое