Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.05.2015, 16:45
Интересующийся
Отправить личное сообщение для nik_neman Посмотреть профиль Найти все сообщения от nik_neman
 
Регистрация: 06.02.2012
Сообщений: 21

Вывести данные из php
Здравствуйте.
Только сегодня познакомился с ExtJs. В версии 4.2.1 нашел необходимый мне пример 'custom-form'.
Теперь необходимо передавать в форму свои данные которые находятся в БД.
Начал 'смотреть' файл custom-form.js.
Ext.Loader.setConfig({enabled: true});
Ext.Loader.setPath('Ext.ux', '../ux');
Ext.require([
    'Ext.data.*',
    'Ext.panel.Panel',
    'Ext.view.View',
    'Ext.layout.container.Fit',
    'Ext.toolbar.Paging',
    'Ext.ux.form.SearchField',
    'Ext.ux.DataTip'
]);

Ext.define('Post', {
    extend: 'Ext.data.Model',
    idProperty: 'post_id',
    fields: [
        {name: 'postId', mapping: 'post_id'},
        {name: 'title', mapping: 'topic_title'},
        {name: 'topicId', mapping: 'topic_id'},
        {name: 'author', mapping: 'author'},
        {name: 'lastPost', mapping: 'post_time', type: 'date', dateFormat: 'timestamp'},
        {name: 'excerpt', mapping: 'post_text'}
    ]
});

Ext.onReady(function(){
    
    var forumId = 4;

    var store = Ext.create('Ext.data.Store', {
        model: 'Post',
        proxy: {
            type: 'jsonp',
            url: 'http://sencha.com/forum/topics-remote.php',
            extraParams: {
                forumId: forumId
            },
            reader: {
                type: 'json',
                root: 'topics',
                totalProperty: 'totalCount'
            }
        },
        listeners: {
            beforeload: function(){
                var params = store.getProxy().extraParams;
                if (params.query) {
                    delete params.forumId;
                } else {
                    params.forumId = forumId;
                }
            }
        }
    });
    store.loadPage(1);

    var resultTpl = Ext.create('Ext.XTemplate',
        '<tpl for=".">',
        '<div class="search-item">',
            '<h3><span>{lastPost:this.formatDate}<br>by {author}</span>',
            '<a href="http://sencha.com/forum/showthread.php?t={topicId}&p={postId}" target="_blank">{title}</a></h3>',
            '<p>{excerpt}</p>',
        '</div></tpl>',
    {
        formatDate: function(value){
            return Ext.Date.format(value, 'M j, Y');
        }
    });

    var panel = Ext.create('Ext.panel.Panel', {
        title: 'Forum Search',
        height: 300,
        width: 600,
        renderTo: 'search-panel',
        id: 'search-results',
        layout: 'fit',
        items: {
            overflowY: 'auto',
            xtype: 'dataview',
            tpl: resultTpl,
            store: store,
            itemSelector: 'div.search-item',
            emptyText: '<div class="x-grid-empty">No Matching Threads</div>'
        },
        dockedItems: [{
            dock: 'top',
            xtype: 'toolbar',
            items: {
                width: 400,
                fieldLabel: 'Search',
                labelWidth: 50,
                xtype: 'searchfield',
                store: store
            }
        }, {
            dock: 'bottom',
            xtype: 'pagingtoolbar',
            store: store,
            pageSize: 25,
            displayInfo: true,
            displayMsg: 'Topics {0} - {1} of {2}',
            emptyMsg: 'No topics to display'
        }]
    });
});

Есть ли пример исходника файла topics-remote.php, чтобы увидеть как хранятся там данные?
Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 21.05.2015, 08:21
Профессор
Отправить личное сообщение для novikov Посмотреть профиль Найти все сообщения от novikov
 
Регистрация: 19.11.2012
Сообщений: 178

post_id
topic_title
topic_id
author
post_time timestamp
post_text
Ответить с цитированием
  #3 (permalink)  
Старый 21.05.2015, 14:03
Интересующийся
Отправить личное сообщение для nik_neman Посмотреть профиль Найти все сообщения от nik_neman
 
Регистрация: 06.02.2012
Сообщений: 21

Спасибо за ответ, но можно по-подробней?
Хотя бы маленький пример.
Заранее спасибо.

Последний раз редактировалось nik_neman, 21.05.2015 в 15:03.
Ответить с цитированием
  #4 (permalink)  
Старый 22.05.2015, 02:14
Профессор
Отправить личное сообщение для novikov Посмотреть профиль Найти все сообщения от novikov
 
Регистрация: 19.11.2012
Сообщений: 178

Нужно сформировать похожий JSON, как по ссылке в вашем примере. Это можно посмотреть в браузере.

http://sencha.com/forum/topics-remote.php

Из PHP обращаетесь к базе и выбираете из нужные таблиц строки. Собираете их в ассоциативный массив. Затем преобразуете его в строку JSON и возвращаете её через echo.

Используете $_GET['forum_id'], mysqli, json_encode.

Соответствия полей определены у вас в модели через свойство mapping. Но можно обойтись и без этого, а отправить из PHP те же названия полей, что используются в JavaScript'е.

Последний раз редактировалось novikov, 22.05.2015 в 12:47.
Ответить с цитированием
  #5 (permalink)  
Старый 22.05.2015, 12:25
Интересующийся
Отправить личное сообщение для nik_neman Посмотреть профиль Найти все сообщения от nik_neman
 
Регистрация: 06.02.2012
Сообщений: 21

Попробовал вывести статические данные типа вот так:
$arr[] = array("topic_title"=>"Status bar error with IFrames", "author"=>"Daz", "post_text"=>"get better");
$json = json_encode($arr);
echo $json;

Нечего не выводит
Из файла topics-remote.php делал json_decode текста, чтобы посмотреть пример ассоциативного массива, но получал null.

Последний раз редактировалось nik_neman, 22.05.2015 в 12:28.
Ответить с цитированием
  #6 (permalink)  
Старый 22.05.2015, 12:45
Профессор
Отправить личное сообщение для novikov Посмотреть профиль Найти все сообщения от novikov
 
Регистрация: 19.11.2012
Сообщений: 178

NULL из-за того, что не были заэкранированы одиночные кавычки:
' -> \'

var_dump(var_export(json_decode('...', true)));


array (
'totalCount' => '6679',
'topics' =>
array (
0 =>
array (
'post_id' => '604220',
'topic_title' => 'Status bar error with IFrames',
'topic_id' => '134120',
'author' => 'Daz',
'post_time' => '1305857168',
'post_text' => 'Ext version tested:

Ext 3.3.3

Adapter used:
ext

css used:
default ext-all.css

Browser versions tested against:
FF4 (firebug 1.7.1 installed)

...',
'forum_title' => 'Ext 3.x: Bugs',
'forumid' => '41',
'reply_count' => '0',
),
1 =>

Последний раз редактировалось novikov, 22.05.2015 в 13:39.
Ответить с цитированием
  #7 (permalink)  
Старый 22.05.2015, 13:59
Интересующийся
Отправить личное сообщение для nik_neman Посмотреть профиль Найти все сообщения от nik_neman
 
Регистрация: 06.02.2012
Сообщений: 21

Спасибо за кавычки)
Ответить с цитированием
  #8 (permalink)  
Старый 22.05.2015, 14:08
Интересующийся
Отправить личное сообщение для nik_neman Посмотреть профиль Найти все сообщения от nik_neman
 
Регистрация: 06.02.2012
Сообщений: 21

echo выводить переменную json?
Ответить с цитированием
  #9 (permalink)  
Старый 22.05.2015, 14:16
Интересующийся
Отправить личное сообщение для nik_neman Посмотреть профиль Найти все сообщения от nik_neman
 
Регистрация: 06.02.2012
Сообщений: 21

В php файле сделал так
$arr[] = array(
    "totalCount" => '6679',
    "topics" =>
    array(
        array(
            "post_id" => "604220",
            "topic_title" => "Status bar error with IFrames",
            "topic_id" => "134120",
            "author" => "Daz",
            "post_time" => "1305857168",
            "post_text" => "Ext version tested:",
            "forum_title" => "EXT",
            "forumid" => "41",
            "reply_count" => "0"
            )
    )
);

$json = json_encode($arr);
echo $json;

Нечего не выводит.

Если объявить $arr, то в консоли ошибка - SyntaxError: missing ; before statement
{"totalCount":"6679","topics":[{"post_id":"604220","topic_title":"Status

Последний раз редактировалось nik_neman, 22.05.2015 в 14:45.
Ответить с цитированием
  #10 (permalink)  
Старый 22.05.2015, 14:45
Профессор
Отправить личное сообщение для novikov Посмотреть профиль Найти все сообщения от novikov
 
Регистрация: 19.11.2012
Сообщений: 178

Квадратные скобки после имени переменной не нужны. Количество записей в totalCount должно быть реальным. Обычно этот параметр используется для разбивки результата запроса на страницы.

$arr = array(
    "totalCount" => '10',
    "topics" =>
    array(
        array(
            "post_id" => "604220",
            "topic_title" => "Status bar error with IFrames",
            "topic_id" => "134120",
            "author" => "Daz",
            "post_time" => "1305857168",
            "post_text" => "Ext version tested:",
            "forum_title" => "EXT",
            "forumid" => "41",
            "reply_count" => "0"
            )
    )
);

$json = json_encode($arr);
echo $json;

Последний раз редактировалось novikov, 22.05.2015 в 15:25.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправить данные черен JS к PHP Smokvin AJAX и COMET 1 04.12.2014 13:34
Как подключить данные с PHP по средствам JS на удаленный сервер. Nyam Элементы интерфейса 13 11.04.2014 17:14
Как получить данные из php скрипта в расширении для Safari? housewm Opera, Safari и др. 2 19.12.2013 18:31
Как вывести данные из PHP Sherminator Events/DOM/Window 2 07.08.2012 20:11
Как вывести содержимое PHP файла с помощью JS? pavdin Серверные языки и технологии 6 22.12.2010 14:16