Сохранение изменений в SlickGrid с помощью php - PullRequest
3 голосов
/ 04 июля 2011

У меня настроена SlickGrid, она читает данные из моей базы данных с помощью PHP, моя проблема возникает, когда я пытаюсь сохранить данные обратно в свою базу данных, я пытаюсь использовать JSON, чтобы дать мне массив, который я могу затем использовать для обратной записи в базу данных, я вижу эту ветку, объясняющую это:

Сохранение изменений в SlickGrid

Итак, у меня есть скрытый элемент формы в моем коде, и я использую JSON для кодирования переменной данных, назначая его скрытому вводу данных в форме, эта форма отправляет на страницу с именем save_price.php, проблема в том, Когда я печатаю переменную data_r или var_dump, в качестве вывода получаю значение null, я думаю, что это может быть связано с тем, как я использую PHP для добавления содержимого в переменную данных, либо это, либо я делаю что-то действительно явно неправильное Надеюсь, вы понимаете, в чем проблема, в Интернете нет большой документации по извлечению / сохранению в БД с помощью PHP, поэтому я немного застрял, стуча головой об стену, вот мой код:

1 Ответ

4 голосов
/ 05 июля 2011

Хорошо, так что я нашел проблему, просто если кто-то изо всех сил пытается заставить все это работать, вот рабочий код, он получает данные из базы данных, а затем отправляет измененные данные на другую страницу для обработки, ему нужно немногонемного доработок, которые произойдут, как только я все это осуществлю:

<?php 
include("includes/check_session.php");
require_once('includes/functions.php');
require_once('includes/config.php');

$data = '';
$i = 0;

$query = "
    SELECT * FROM `prices`";
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    $data .= '
        data['.$i.'] = {
            id: "'.$row['id'].'",
            title: "'.$row['title'].'",
            duration: "'.$row['duration'].'",
            percentComplete: "'.$row['percentComplete'].'",
            start: "'.$row['start'].'",
            finish: "'.$row['finish'].'",
            effortDriven: "'.$row['effortDriven'].'"
        };
    ';

    $i++;

echo $data;
}

?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset=utf-8>

    <?php // include("includes/cms_head_scripts.php"); ?>
    <link rel="stylesheet" href="css/slick.grid.css" type="text/css" media="screen" charset="utf-8" />
    <link rel="stylesheet" href="css/smoothness/jquery-ui-1.8.5.custom.css" type="text/css" media="screen" charset="utf-8" />
    <link rel="stylesheet" href="css/examples.css" type="text/css" media="screen" charset="utf-8" />
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script language="javascript" src="js/jquery.json.js"></script>

</head>
<body>
    <div id="content_cont">

        <div id="main">

                <div style="position:relative">
                    <div style="width:600px;">
                        <div id="myGrid" style="width:100%;height:500px;"></div>
                    </div>
                </div>  



            pricing

        </div><!-- #main -->

    </div><!-- #content_cont -->

        <script src="lib/firebugx.js"></script>


        <script src="lib/jquery-ui-1.8.5.custom.min.js"></script>
        <script src="lib/jquery.event.drag-2.0.min.js"></script>

        <script src="slick.core.js"></script>
        <script src="plugins/slick.cellrangeselector.js"></script>
        <script src="plugins/slick.cellselectionmodel.js"></script>
        <script src="slick.editors.js"></script>
        <script src="slick.grid.js"></script>


        <script type="text/javascript">
            var grid;
            var data = [];
            var columns = [
                {id:"title", name:"Title", field:"title", editor:TextCellEditor},
                {id:"duration", name:"Duration", field:"duration", editor:TextCellEditor},
                {id:"%", name:"% Complete", field:"percentComplete", editor:TextCellEditor},
                {id:"start", name:"Start", field:"start", editor:TextCellEditor},
                {id:"finish", name:"Finish", field:"finish", editor:TextCellEditor},
                {id:"effort-driven", name:"Effort Driven", field:"effortDriven", editor:TextCellEditor}
            ];

            var options = {
                    editable: true,
                    enableCellNavigation: true,
                    asyncEditorLoading: false,
                    autoEdit: true
                };

            $(function() {

                <?php echo $data ?>
                grid = new Slick.Grid($("#myGrid"), data, columns, options);

            })



        </script>

<form method="POST" action="save_price.php">
    <input type="submit" value="Save">
    <input type="hidden" name="data" value="">
</form>
<script type="text/javascript">
  $(function() {
    $("form").submit(
      function() {
        $("input[name='data']").val($.JSON.encode(data));

      }
    );
  });
</script>

</body>
</html>
...