За последние 24 часа нас посетили 60945 программистов и 1744 робота. Сейчас ищут 909 программистов ...

foreach

Тема в разделе "PHP для новичков", создана пользователем vodorod, 25 сен 2012.

  1. vodorod

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

    С нами с:
    10 янв 2011
    Сообщения:
    217
    Симпатии:
    0
    Подскажите в чем может быть ошибка? На старом хосте работал, сегодня перенес на новый, вообще перестал
    Код (Text):
    1.  
    2. if(!empty($_GET['filters'])){
    3.   $wh = ' WHERE ';
    4.   $data = json_decode($_GET['filters']);
    5.  
    6.   foreach ($data->rules as $rule) {
    7.    
    8.     if(!$first){
    9.         $wh .= ' '.$searchData->groupOp.' ';
    10.     } else {
    11.         $first=false;
    12.     }
    13.  
    14.  
    15.     switch ($rule->op) {
    16.           case 'bw': $wh .= $rule->field." LIKE '".$rule->data."'"; break;
    17.        }
    18.  
    19.  }
    20.  
    21.   //определяем команду (поиск или просто запрос на вывод данн
    22. }
    Причем проблема где то именно в цикле так как WHERE печатается
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Что, то как - то оторвано.

    Посмотри, что там приходит в var_dump($rule); ?
     
  3. vodorod

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

    С нами с:
    10 янв 2011
    Сообщения:
    217
    Симпатии:
    0
    Ну вот полный код:
    Код (Text):
    1.  
    2. <?
    3.  
    4. include("bd.php");
    5.  
    6. $page = $_GET['page'];
    7. $limit = $_GET['rows'];
    8. $sidx = $_GET['sidx'];
    9. $sord = $_GET['sord'];
    10.  
    11.  
    12. if(!$sidx) $sidx =1;                
    13.      
    14.     // Выполним запрос, который
    15.     // вернет суммарное кол-во записей в таблице
    16.     $result = mysql_query("SELECT COUNT(*) AS count FROM personal_users");
    17.     $row = mysql_fetch_array($result);
    18.      // Теперь эта переменная хранит кол-во записей в таблице
    19.     $count = $row['count'];                  
    20.      
    21.     // Рассчитаем сколько всего страниц займут данные в БД
    22.     if( $count > 0 && $limit > 0) {
    23.         $total_pages = ceil($count/$limit);
    24.     } else {
    25.         $total_pages = 0;
    26.     }                  
    27.  
    28.     // Если по каким-то причинам клиент запросил
    29.     if ($page > $total_pages) $page=$total_pages;                  
    30.      
    31.     // Рассчитываем стартовое значение для LIMIT запроса
    32.     $start = $limit*$page - $limit;                  
    33.      
    34.     // Зашита от отрицательного значения
    35. if($start < 0) $start = 0;
    36.   if (isset($_GET['_search']) && $_GET['_search'] == 'true') {
    37. $first=true;            
    38. if(!empty($_GET['filters'])){
    39.   $wh = ' WHERE 1';
    40.   $data = json_decode($_GET['filters']);
    41. echo var_dump($_GET['filters']);
    42.   foreach ($data->
    43.     rules as $rule) {
    44.     echo var_dump($rule);
    45.     if(!$first){
    46.         $wh .= ' '.$searchData->groupOp.' ';
    47.     } else {
    48.         $first=false;
    49.     }
    50.  
    51.  
    52.     switch ($rule->op) {
    53.           case 'bw': $wh .= $rule->field." LIKE '".$rule->data."'"; break;
    54.        }
    55.  
    56.  }
    57.  
    58.   //определяем команду (поиск или просто запрос на вывод данн
    59. }
    60. }
    61.  
    62. $sql="SELECT * FROM personal_users ".$wh." ORDER BY ".$sidx." ".$sord." LIMIT ".$start.", ".$limit;
    63. $res=mysql_query($sql);
    64.     //echo $sql;
    65.     $s = "<?xml version='1.0' encoding='utf-8'?>";
    66.     $s .=  "<rows>";
    67.     $s .= "<page>".$page."</page>";
    68.     $s .= "<total>".$total_pages."</total>";
    69.     $s .= "<records>".$count."</records>";    
    70.  
    71. ...
    Почему то оба раз выдает NULL хотя в firebug показывает, что данные точно ушли
     
  4. vodorod

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

    С нами с:
    10 янв 2011
    Сообщения:
    217
    Симпатии:
    0
    Проблема в json_decode.
    Вот та строка которая передается {\"groupOp\":\"AND\",\"rules\":[{\"field\":\"login_user\",\"op\":\"bw\",\"data\":\"202\"}]}
    Как исправить эту проблему?

    Добавлено спустя 7 минут:
    Вопрос закрыт. Спасибо
     
  5. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код ваще ппц...

    Возможно включены "Волшебные ковычки", которые следует уже выключать.

    Код (PHP):
    1. $str='{\"groupOp\":\"AND\",\"rules\":[{\"field\":\"login_user\",\"op\":\"bw\",\"data\":\"202\"}]}';
    2.  
    3. echo stripslashes($str);