Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Вывод с БД в таблицу [EXT JS] (https://javascript.ru/forum/extjs/29268-vyvod-s-bd-v-tablicu-%5Bext-js%5D.html)

RogeR31415 21.06.2012 17:02

Вывод с БД в таблицу [EXT JS]
 
Требуется осуществить вывод информации с БД (имя wp, одна таблица journal, три поля id surname name) в таблицу, grid как я понимаю. Я думаю кто то да сталкивался с таким делом - можете дать рабочий пример? Или обьяснить кому не тяжело... Нужно наверное взять данные json`ном с бд - передать в стор а потом в грид? Не могу никак все в кучу собрать... Жду помощи. За ранее благодарен Всем! :cray:

RogeR31415 21.06.2012 18:25

есть json данные взятые с бд...
 
есть json данные взятые с бд...

[{"id":1,"surname":"фывфыв","name":"фывф ввв"},{"id":2,"surname":"фывыфаппре ","n ame":"кнокно"},{"id":3,"surname":"Putin","na me":"Vladimir"},{"id":4,"surname":"M edvedev","name":"Dmitriy"},{"id":5,"surname":"Yanu kovich","name":"Viktor"}]

Теперь надо создать хранилище?

RogeR31415 21.06.2012 18:44

Спасибо с этим я тоже разобрался... Сейчас вот пытаюсь понять - этож

data:{'items':[....

Вместо этого надо подключить данные от сюда json_encode($rows); ?

DjDiablo 21.06.2012 18:57

нафига, хотя может быть можно и так, только вряд ли нужно :)
store.load() - обычно достаточно :)
========================
Опять же пример из документации.
Ext.define('userModel', {
        extend: 'Ext.data.Model',
        fields: ['name', 'surname']
    });
    var store = Ext.create('Ext.data.JsonStore', {
        model: 'userModel',
        proxy: {
            type: 'ajax',
            url: 'users.json',//адрес откуда берём инфу
            reader: {
                type: 'json',
                root: 'users'
            }
        }
    });
    store.load();// грузим инфу с сервера

====================================
json файл приведите к виду.
{
    success: true,
    users: [
        {"id":1,"surname":"фывфыв","name":"фывф� �ввв"},
        {"id":2,"surname":"фывыфаппре� �","n ame":"кнокно"},{"id":3,"surname":"Putin","na me":"Vladimir"},  
        {"id":4,"surname":"M edvedev","name":"Dmitriy"},{"id":5,"surname":"Yanu kovich","name":"Viktor"}
    ]
}

фывыфаппре� � - что за кракозябры ?

RogeR31415 21.06.2012 19:06

Спасибо. Делаю. Кракозябры - там мое имя было и моей подруги (для конспирации) =)

DjDiablo 21.06.2012 19:13

Конспирируетесь говорите :)
Видимо у вас много подруг и половина из них на этом форуме :D

RogeR31415 21.06.2012 19:19

Правильно я думаю?
 
Я вообще с программированием (php) дружу... А сегодня вот начальник (я стажер) сказал за день все освоить [extjs] (не, не все - а типо ознакомиться и показать результат)... я над простым выводом инфы с бд сижу уже 4 часа.. а даже до грида не дошел(

Так должно быть как то? ---

----------
Файл show.js
----------
Смысл:
Задать модель, создать хранилище, а потом уже в грид и вывод?
типо...

Ext.define('showModel', {
        extend: 'Ext.data.Model',
        fields: ['id','surname', 'name', {name:'size', type: 'float'}, {name:'lastmod', type:'date', dateFormat:'timestamp'}]
    });
    
var store = Ext.create('Ext.data.JsonStore', {
        model: 'showModel',
        proxy: {
            type: 'ajax',
            url: 'get.json',//адрес откуда берём инфу
            reader: {
                type: 'json',
                root: 'images' (тут немного не понятно)
            }
        }
    });
    store.load();// грузим инфу с сервера



Вот файл get.php (он уже не нужен?) надо через *.json делать?

<?php
    $mysql = mysql_connect('localhost', 'roor', '') or
		die("Could not connect: " . mysql_error());
    mysql_select_db('wp');

    $query = 'select * from journal';
    $res = mysql_query($query);

    while ($row = mysql_fetch_assoc($res)) {
        for ($i=0; $i < mysql_num_fields($res); $i++) {
            $info = mysql_fetch_field($res, $i);
            $type = $info->type;

            if ($type == 'real')
                $row[$info->name] = doubleval($row[$info->name]);
            
            if ($type == 'int')
                $row[$info->name] = intval($row[$info->name]);
        }

        $rows[] = $row;
    }

    echo json_encode($rows);
    
    mysql_close($mysql);
?>

RogeR31415 21.06.2012 19:20

не не! Я тут первый из моих друзей)

DjDiablo 21.06.2012 19:58

Цитата:

А сегодня вот начальник (я стажер) сказал за день все освоить [extjs].
неслабо :blink:

Цитата:

Вот файл get.php (он уже не нужен?) надо через *.json делать?
клиент забирает данные с сервера, а откуда появляются эти данные клиенту решительно пофиг. Это может быть готовый json файл, или он может диначески создаваться php скриптом. Но твой скрипт должен сгенерить json по моему образцу.

nekto_O 21.06.2012 20:09

<!DOCTYPE html>
<html>
<head>
<title>demo</title>
<script src='http://dev.sencha.com/deploy/ext-4.0.7-gpl/ext-all.js'></script>
<link rel="stylesheet" href="http://dev.sencha.com/deploy/ext-4.0.7-gpl/resources/css/ext-all.css">
<script>
Ext.onReady(function() {
var gc = [
    { dataIndex: 'id', hidden: true },
    { dataIndex: 'name', header: 'Имя' },
    { dataIndex: 'surname', header: 'Фамилия', flex: 1 }
],
    sf = [];
for(var i=0; i<gc.length; i++) {
    sf.push(gc[i].dataIndex);
}

Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: sf
});

var store = Ext.create('Ext.data.JsonStore', {
    model: 'User',
    data: [{"id":1,"surname":"фывфыв","name":"фывф� �ввв"},{"id":2,"surname":"фывыфаппре� �","name":"кнокно"},{"id":3,"surname":"Putin","name":"Vladimir"},{"id":4,"surname":"M edvedev","name":"Dmitriy"},{"id":5,"surname":"Yanu kovich","name":"Viktor"}]
});

Ext.create('Ext.grid.Panel', {
    columns: gc,
    renderTo: Ext.getBody(),
    store: store
});

});                   
</script>
</head>
<body></body>
</html>


Соответственно вместо статического указания данных вам нужно использовать proxy, примерно так:
proxy: {
        type: 'ajax',
        url: 'get.php',
        reader: {
            type: 'json'
        }
}


Часовой пояс GMT +3, время: 15:45.