За последние 24 часа нас посетил 18401 программист и 1606 роботов. Сейчас ищут 950 программистов ...

oracle+php+json

Тема в разделе "PHP и базы данных", создана пользователем androidx, 17 янв 2011.

  1. androidx

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

    С нами с:
    14 янв 2011
    Сообщения:
    1
    Симпатии:
    0
    Всем доброго времени суток. Прошу помощи. Скачал plugin jqgrid посмотрев демки почитав доки по нему решил применить в своей задаче и наткнулся на грабли при использовании его с Oracle. Проблема заключается в том, что почему-то не могу передать данные массива в json c MySQL проблем нет все прекрасно передается подскажите что я делаю не так для примера привожу код с использованием MySQL и Oracle. Сразу оговорюсь кодировка в двух базах Utf-8

    HTML общий

    HTML:
    1.  
    2. <link rel="stylesheet" type="text/css" media="screen" href="themes/basic/grid.css" />
    3. <link rel="stylesheet" type="text/css" media="screen" href="themes/jqModal.css" />
    4. </head>
    5.     <table id="list" class="scroll"></table>
    6.     <div id="pager" class="scroll" style="text-align:center;"></div>
    7.    
    8.     <script type="text/javascript" src="jquery-1.3.1.min.js"></script>
    9.     <script type="text/javascript" src="jquery.jqGrid.js"></script>
    10.     <script type="text/javascript">
    11.     jQuery(document).ready(function(){
    12.         jQuery("#list").jqGrid({
    13.             url:'auto.php',
    14.             datatype: 'json',
    15.             mtype: 'POST',
    16.             colNames:['#', '№ Авто', 'Название'],
    17.             colModel :[
    18.                  {name:'id', index:'id', width:30}
    19.                 ,{name:'auto_number', index:'auto_number', width:80, align:'right'}
    20.                 ,{name:'auto_marka', index:'auto_marka', width:90}
    21.                 ],
    22.             pager: jQuery('#pager'),
    23.             rowNum:5,
    24.             rowList:[5,10,30],
    25.             sortname: 'id',
    26.             sortorder: "asc",
    27.             viewrecords: true,
    28.             imgpath: 'themes/basic/images',
    29.             caption: 'Данные авто'
    30.         });
    31.     });
    32.     </script>
    33. </body>
    34. </html>
    35.  
    PHP MySQL все передается и отображается
    PHP:
    1.  
    2. <?php
    3.   $dbh = new PDO('mysql:host=localhost;dbname=test', 'test', 'test');
    4.   $res = $dbh->query('SELECT * FROM auto ');
    5.  $i=0;
    6.     while($row = $res->fetch(PDO::FETCH_ASSOC)) {
    7.         $response->rows[$i]['id']=$row['id'];
    8.         $response->rows[$i]['cell']=array($row['id'], $row['id'], $row['auto_number'] ,$row['auto_marka ']);
    9.        $i++;
    10.  }  
    11.     echo json_encode($response);
    12.  
    13. echo выводит вот такой массив значений
    14. {"rows":[{"id":"1","cell":["1","\u0418\u0432\u0430\u043d\u043e\u0432","\u0418\u0432\u0430\u043d","\u0418\u0432\u0430\u043d\u043e\u0432\u0438\u0447"]},{"id":"2","cell":["2","\u041f\u0435\u0442\u0440\u043e\u0432","\u041f\u0435\u0442\u0440","\u041f\u0435\u0442\u0440\u043e\u0432\u0438\u0447"]},{"id":"3","cell":["3","\u0421\u0438\u0434\u043e\u0440\u043e\u0432","\u0421\u0438\u0434\u043e\u0440","\u0421\u0438\u0434\u043e\u0440\u043e\u0432\u0438\u0447"]},{"id":"4","cell":["4","\u0421\u0435\u0440\u0433\u0435\u0435\u0432","\u0421\u0435\u0440\u0433\u0435\u0439","\u0421\u0435\u0440\u0433\u0435\u0435\u0432\u0438\u0447"]},{"id":"5","cell":["5","\u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432","\u0412\u0430\u0441\u0438\u043b\u0438\u0439","\u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432\u0438\u0447"]},{"id":"6","cell":["6","\u0422\u0430\u0440\u0430\u0441\u043e\u0432","\u0422\u0430\u0440\u0430\u0441","\u0422\u0430\u0440\u0430\u0441\u043e\u0432\u0438\u0447"]}]}
    15.  
    А вот с данными из Oracle ничего не выходит и не отбражаются в jgrid подскажите что делаю не так? HTML один и тот же использую.

    PHP:
    1.  
    2. ?php
    3.  include ("connect.php");
    4. $conn = oci_connect("test", "test", "test/MAIN");
    5.  
    6. $query = "SELECT id, auto_number, auto_marka FROM AUTO "; // запрос отрабатывает  данные выбираются проверил
    7.  
    8. $statement = oci_parse ($conn, $query);
    9.  
    10. oci_execute ($statement);
    11. $i=0;
    12.  while ($row = oci_fetch_array ($statement, OCI_BOTH)) {
    13.  
    14.   $response->rows[$i]['id']=$row['id'];
    15.   $response->rows[$i]['cell']=array($row['id'], $row['auto_number'] ,$row['auto_marka ']);
    16.  
    17.    /*echo "[id]  ".$row['ID']." ";
    18.     echo "[auto_marka] ".$row['auto_marka']."";*/  
    19.      $i++;
    20. }
    21. echo json_encode($response);
    22. ?>
    23. [color=red]а здесь echo выводит вот  что [/color] {"rows":{"1":{"id":null,"cell":[null,null,null]},"2":{"id":null,"cell":[null,null,null]},"3":{"id":null,"cell":[null,null,null]},"4":{"id":null,"cell":[null,null,null]},"5":{"id":null,"cell":[null,null,null]},"6":{"id":null,"cell":[null,null,null]}}}
    24.  
    я так понимаю что ошибка, где-то здесь-
    $response->rows[$i]['id']=$row['id'];
    $response->rows[$i]['cell']=array($row['id'], $row['auto_number'] ,$row['auto_marka ']);

    только что не так здесь, не могу понять. Помогите плиз разобраться.