Внедрение x-editable для каждого поля + выбор загрузки данных / обновления

0

В течение долгого времени я пытаюсь сделать x-editable datatable. Я хочу редактировать все поля, примеры показывались только для редактирования полей:

x1
x2
x3

а не другой.

Вот пример jsfiddle http://jsfiddle.net/xBB5x/3485/

Я также задаюсь вопросом, как настроить выбор для получения данных, а затем как их обновить (возможно, сначала это функция onload), а затем ajax update.php, если im right.), Но кроме этого я получаю ошибки на data.php файл, пока я не обновляю поле whwho. Очень благодарен в расследовании этого досадного дела. В ожидании подсказок.

data.php

//delay (for debug only)
sleep(1); 
require_once("../checklogin.php");
require_once("../lib/functions.php");
require_once("../lib/Db.class.php");

// Creates the instance  || preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,12}$/', $_POST['password'])
$db = new Db();
$user = new users();
$error = array();

/*
You will get 'pk', 'name' and 'value' in $_POST array.
*/
$pk = $_REQUIRE['pk'];
$name = $_REQUIRE['name'];
$value = $_REQUIRE['value'];
/*
 Check submitted value
*/
if(!empty($value)) {
    /*
      If value is correct you process it (for example, save to db).
      In case of success your script should not return anything, standard HTTP response '200 OK' is enough.

      for example:
      $result = mysql_query('update users set '.mysql_escape_string($name).'="'.mysql_escape_string($value).'" where user_id = "'.mysql_escape_string($pk).'"');
    */
    $update = $db->query("UPDATE tbl_ticket SET ".$name." = :fvalue WHERE id = :id", array(
        "fvalue" => $value,
        "id" => $pk
    ));
    //here, for debug reason we just return dump of $_POST, you will see result in browser console
    echo "ok";
} else {
    /* 
    In case of incorrect value or error you should return HTTP status != 200. 
    Response body will be shown as error message in editable form.
    */

    header('HTTP 400 Bad Request', true, 400);

}

Отладка data.php: по изменению ввода bywho

<br />
<b>Notice</b>: Undefined variable: _REQUIRE in <b>C:\xampp\htdocs\platform\admin\data.php</b> on line <b>20</b><br />
<br />
<b>Notice</b>: Undefined variable: _REQUIRE in <b>C:\xampp\htdocs\platform\admin\data.php</b> on line <b>21</b><br />
<br />
<b>Notice</b>: Undefined variable: _REQUIRE in <b>C:\xampp\htdocs\platform\admin\data.php</b> on line <b>22</b><br />

Моя функция для рисования данных

function drawticket()
    {
        global $db;
        $drawUserstb = $db->query("SELECT * FROM tbl_ticket");

        foreach ($drawUserstb as &$rows) {
            echo '<tr>  
                    <td>'.$rows['id'].'</td>  
                    <td class="edit bywho '.$rows['id'].'"><a href="#" id="bywho" data-type="text" data-title="Bywho Id" data-pk= "'.$rows['id'].'" data-value="'.$rows['bywho'].'">'.$rows['bywho'].'</a></td>  
                    <td class="edit message '.$rows['id'].'">'.$rows['message'].'</td>  
                    <td class="edit prority '.$rows['id'].'">
                    <a href="#" id="prority" data-title="Prority" data-type="select" data-pk= "'.$rows['id'].'" data-value="'.$rows['prority'].'" data-param="XXX">'.$rows['prority'].'</a>
                    </td>  
            </tr>';
        }
    }

Скрипт, выполняющий действия редактирования

$(document).ready(function () {

    $('td.edit a').editable({
        type: 'text',
        url: 'data.php',      
        ajaxOptions: {
            type: 'put'
        }        
    });
    $('.td.e

dit a[id=prority]').editable({
     loadurl : 'include/json.php',
     submit : 'OK'
});

//ajax emulation
$.mockjax({
    url: '/post',
    responseTime: 200,
    response: function(settings) {
        console.log(settings);
    }
}); 

});

Json для выбора редактирования (временная настройка)

<?PHP
header('Content-Type: application/json');
    require_once("../../../checklogin.php");
    require_once("../../../lib/functions.php");
    require_once("../../../lib/Db.class.php");

    $db = new Db();
    $user = new users();
    $error = array();
 $array['1'] =  'No prority'; 
 $array['2'] =  'Important'; 
 $array['0'] =  'V important'; 
 $array['selected'] =  '1';
 print json_encode($array);

 ?>
Теги:
jquery-select2
x-editable

1 ответ

0

Я не уверен, полностью ли я соблюдаю ваши вопросы.

Я верю, что в первой части вы говорите, что хотите, чтобы все поля в таблице были доступны для редактирования?

Предполагая, что в этом случае это похоже на некоторые проблемы с вашими селекторами. Селектор "td.edit a" выбирает все элементы под элементом с редактированием класса. На самом деле это выбор как столбца "bywho", так и столбца "proraty". Он не выбирает элементы в столбце сообщения, потому что там нет привязанного тега (т.е.).

Селектор ".td.edit a [id = prority]" фактически не выбирает ничего из-за. перед td.. означает класс. поэтому он пытается найти элементы с классом "td" и класс "edit", которых нет в вашем документе. Если вы удалите. он выберет тег привязки в столбце "пропорциональность", но уже выбранный этим селектором.

Если вы хотите, чтобы все элементы в таблице были доступны для редактирования, вы можете вместо этого сделать что-то вроде: $('td.edit').children().editable({ type: 'text', url: 'data.php',
ajaxOptions: { type: 'put' }
});
$('td.edit').children().editable({ type: 'text', url: 'data.php',
ajaxOptions: { type: 'put' }
});

Обратите внимание, что для этого требуется, чтобы в каждом элементе был элемент, а не только текст. Поэтому вам нужно будет обернуть суперпользователей в тег. http://jsfiddle.net/xBB5x/4230/

Кроме того, в отношении ошибок, которые вы видите в php. Я думаю, что ошибка означает, что переменная, которую вы используете _REQUIRE, не определена. Я считаю, что вы должны использовать $ _POST. (т.е. $ pk = $ _POST ['pk'];)

В любом случае кажется, что вы на правильном пути.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню