2

MySQL データベースへのデータの記録の理解に少し問題があります。これで、DB にいくつかのテーブルがグリッドに表示されました。エディターをアタッチしましたが、それを正しく使用する方法がわかりません (編集可能なデータを php スクリプトに送信します)。助けを求めてもいいですか?ありがとう。

view.js

    Ext.onReady(function() {
    var cols = [
    { dataIndex: 'id', header: 'id', hidden: true },
    { dataIndex: 'title', header: 'Title', width: 200, editor: 'textfield'},
    { dataIndex: 'author', header: 'Author', width: 200, editor: 'textfield' },
    { dataIndex: 'isbn', header: 'ISBN', width: 100, editor: 'numberfield' },
],

    fields = [];
        for(var i=0; i<cols.length; i++) {
        fields.push(cols[i].dataIndex);
    }

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

var store = Ext.create('Ext.data.JsonStore', {
    model: 'Book',
    proxy: {
        type: 'ajax',
        url: 'view.php',
        reader: {
            type: 'json'
        }
    }
});

Ext.create('Ext.grid.Panel', {
    columns: cols,
    width: 520,
    style: 'margin-top: 20%; margin-left: 35%',
    plugins: [
        Ext.create('Ext.grid.plugin.RowEditing', {
            clicksToEdit: 2
        })
    ],
    renderTo: Ext.getBody(),
    store: store
});
store.load();
});

view.php

    <?php

require_once 'db.php';

$result = mysql_query('SELECT * FROM books');
while ($row = mysql_fetch_assoc($result)) {

    for ($i=0; $i < mysql_num_fields($result); $i++) {
        $meta = mysql_fetch_field($result, $i);
        }
    $rows[] = $row;
}

print (json_encode($rows));
?>

edit.js

    Ext.onReady(function(){
Ext.QuickTips.init();
var simpleForm = new Ext.FormPanel ({
    labelWidth: 75,     
    url:'edit.php',    
    frame:true,
    title: 'Add book',
    bodyStyle:'padding:5px 5px 0',
    width: 350,
    defaults: {width: 230},
    defaultType: 'textfield',

        items: [{
            fieldLabel: 'Title',
            name: 'title',
            allowBlank:false
            },{
            fieldLabel: 'Author',
            name: 'author'
            },{
            fieldLabel: 'ISBN',
            name: 'isbn'
        }],            
        buttons: [{
            text: 'Save',          
            handler: function () {
                simpleForm.getForm().submit({
                    waitMsg: 'Saving...',   
                    success: function () {     
                        Ext.MessageBox.alert ('Message','Data has been saved');
                        simpleForm.getForm().reset();
                    },
                  failure: function () {   
                        Ext.MessageBox.alert ('Message','Saving data failed');
                    }
                });
            }
        },{
            text: 'Cancel',
            handler: function () {
                simpleForm.getForm().reset();
            }
        }]
    });
    simpleForm.render ('simple-form');
});

edit.php - ????????

    <?php
    require_once 'db.php';
    $q=mysql_query ("INSERT INTO books VALUES (null, '".$_POST['title']."','".$_POST['author']."','".$_POST['isbn']."')
    ") or die ('{"success":"false"}');

    // json output to notify the insert is success or not
    if ($q) {
        echo '{"success":"true"}';
    }
    else {
        echo '{"success":"false"}';
    }
?>
4

0 に答える 0