title: jqGrid - PHP , How to save edited data to server (MySQL)
body: <p>I'm trying to learn jqGrid and i have some annoying
  problem which i can't figure it out. I'm using Navigation Grid for add,
  edit and deleting data. The problem is, i can add,edit or delete
  datas from the web. <strong>But the changes won't be applied for my server</strong>. So
  for example if i edit the first row it changes in my Nav Grid but then
  if i reload the page, its there again.</p>
  
  <p>NavGridHTML.html</p>
  
  <pre><code>&lt;!DOCTYPE html&gt;
      &lt;html&gt;
      &lt;head&gt;
          &lt;title&gt;Navigation Grid&lt;/title&gt;          
          &lt;link rel="stylesheet" type="text/css" media="screen" href="css/jquery-ui.css" /&gt;
          &lt;link rel="stylesheet" type="text/css" media="screen" href="css/ui.jqgrid.css" /&gt;
  
          &lt;style type="text/css"&gt;
          html, body {
              margin: 0;
              padding: 0;
              font-size: 75%;
          }
          &lt;/style&gt;
  
          &lt;script src="js/jquery-1.11.0.min.js" type="text/javascript"&gt;&lt;/script&gt;
          &lt;script src="js/jquery.jqGrid.min.js" type="text/javascript"&gt;&lt;/script&gt;
          &lt;script src="js/i18n/grid.locale-en.js" type="text/javascript"&gt;&lt;/script&gt;
  
          &lt;script type="text/javascript"&gt;
              $(function () {
  
                  jQuery("#navgrid").jqGrid({
  
                      url: "GridPHP.php",
                      editurl:"GridEditPHP.php",
                      datatype: "json",
                      mtype: "GET",
                      //cellEdit: true,
                      //cellsubmit: "remote",
                      //cellurl: "GridEditPHP.php",
                      colNames: ["Film ID","Title","Description","Length","Rating"],
                      colModel: [
                          { name: "film_id", index: "film_id", width: 40, editable: false, editoptions: {readonly:true,size: 10}},
                          { name: "title", index: "title", width: 180, editable:true, editoptions: {size: 10}},           
                          { name: "description", index: "description", width: 700, sortable: false, editable:true, edittype: "textarea", editoptions: {rows:"3", cols:"30"}},
                          { name: "length", index: "length", width: 50, align: "right", editable:true, editoptions: {size: 10}},
                          { name: "rating", index: "rating", width: 70, align: "right", editable:true, editoptions: {size: 10}}
                      ],
                      pager: "#pagernav",
                      rowNum: 10,
                      rowList: [10,20,30],
                      sortname: "film_id",
                      sortorder: "asc",
                      viewrecords: true,
                      //gridview: true,
                      //autoencode: true,
                      caption: "Navigation Table"
                      //  height: 210
  
                  });
  
                  jQuery("#navgrid").jqGrid('navGrid','#pagernav',
                  {edit:true,add:true,del:true, search: false, view: true}, // options
                  {height: 280, reloadAfterSubmit:false, recreateForm: true, closeAfterEdit: true, editCaption: "The Edit Dialog", saveData: "Data has been changed! Save changes?", closeOnEscape: true}, // edit options
                  {height: 280, reloadAfterSubmit:false, recreateForm: true, closeAfterAdd: true, closeOnEscape: true}, // add options
                  {reloadAfterSubmit:false, closeOnEscape: true}, // del options
                  {}, // search options
                  {closeOnEscape: true}
                  );
  
              });     
          &lt;/script&gt;
  
      &lt;/head&gt;
      &lt;body&gt;
          &lt;table id="navgrid"&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
          &lt;div id="pagernav"&gt;&lt;/div&gt;
      &lt;/body&gt;
      &lt;/html&gt;
  </code></pre>
  
  <p><em>GridPHP.php</em></p>
  
  <pre><code>&lt;?php
  include("GridCONFIG.php");
  
  $page = $_REQUEST["page"];
  $limit = $_REQUEST["rows"];
  $sidx = $_REQUEST["sidx"];
  $sord = $_REQUEST["sord"];
  
  if (!$sidx) $sidx = 1;
  
  $totalrows = isset($_REQUEST["totalrows"]) ? $_REQUEST["totalrows"]: false;
  
  if($totalrows) {
  
      $limit = $totalrows;
  
  }
  
  $db =mysqli_connect($host, $username, $password, $database) or die ("Connection Error: " . mysqli_error($db));
  
  mysqli_select_db($db,$database) or die ("Error connecting to db!");
  $result = mysqli_query($db,"SELECT COUNT(*) AS count FROM film");
  $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
  $count = $row['count'];
  
  if ($count &gt; 0 ) {
  
      $var = @($count/$limit);
      $totalpages = ceil ($var);
  
  } else {
  
      $totalpages = 0;
  
  }
  
  if ($page &gt; $totalpages) $page=$totalpages;
  
  if ($limit &lt; 0) $limit = 0;
  
  $start = $limit*$page - $limit;
  if ($start &lt; 0) $start = 0;
  
  $sql = "SELECT film_id, title, description, length, rating FROM film ORDER BY $sidx $sord LIMIT $start , $limit";
  $result = mysqli_query($db,$sql) or die ("Couldn't execute query! ".mysqli_error($db));
  
  $responce = new \stdClass();
  $responce -&gt; success = false;
  $responce -&gt; page = $page;
  $responce -&gt; total = $totalpages;
  $responce -&gt; records = $count;
  
  $i = 0;
  while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
  
      $responce -&gt; rows[$i]["id"] = $row["film_id"];
      $responce -&gt; rows[$i]['cell'] = array($row["film_id"],$row["title"],$row["description"],$row["length"],$row["rating"]);
      $i++;
  
  }
  
  echo json_encode($responce);
  mysqli_close($db);
  
  ?&gt;
  </code></pre>
  
  <p><em>GridEditPHP.php</em></p>
  
  <pre><code>&lt;?php
  include("GridCONFIG.php");
  
  $db =mysqli_connect($host, $username, $password, $database) or die ("Connection Error: " . mysqli_error($db));
  mysqli_select_db($db,$database) or die ("Error connecting to db.");
  
  $filmid = $_POST["film_id"];
  $title = $_POST["title"];
  $description = $_POST["description"];
  $length = $_POST["length"];
  $rating = $_POST["rating"];
  
  //switch($_REQUEST["oper"]) {
  //
  //  case "add":
  //      $sql = "INSERT INTO film (film_id,title,description,length,rating) VALUES ($filmid,$title,$description,$length,$rating)";
  //      mysqli_query($db, $sql);
  //  break;
  //  
  //  case "edit":
  //      $sql = "UPDATE film SET film_id=$filmid, title=$title, description=$description, length=$length, rating=$rating";
  //      mysqli_query($db, $sql);
  //  break;
  //  
  //  case "del":
  //      $sql = "DELETE FROM film";
  //      mysqli_query($db, $sql);
  //  break;
  echo "TEST!!!";
  if($_REQUEST["oper"]=='add') {
  
      $sql = "INSERT INTO film (film_id,title,description,length,rating) VALUES ($filmid,$title,$description,$length,$rating)";
      if(mysqli_query($db, $sql)) {
  
          echo "Film added.";
  
      } else {
  
          echo "Error adding film: " .mysqli_error($db);
  
      }
  
  } elseif($_REQUEST["oper"]=='edit') {
  
      $sql = "UPDATE film SET title=$title, description=$description, length=$length, rating=$rating WHERE film_id=$filmid";
      if(mysqli_query($db, $sql)) {
  
          echo "Film edited.";
  
      } else {
  
          echo "Error editing film: " .mysqli_error($db);
  
      }
  
  } elseif($_POST["oper"]=='del') {
  
      $sql = "DELETE FROM film WHERE film_id=$filmid";
      if(mysqli_query($db, $sql)) {
  
          echo "Film deleted.";
  
      } else {
  
          echo "Error deleting film: " .mysqli_error($db);
  
      }
  
  }
  
  mysqli_close($db);
  
  ?&gt;
  </code></pre>
  
  <p>I would be appreciated if someone can solve this annoying problem...
  And just for info, i already read <a href="http://www.trirand.com/jqgridwiki/doku.php?id=wiki%3Ajqgriddocs" rel="nofollow noreferrer">Documentation</a>, and looked every single example or solution on the internet. But still couldn't find any solution.</p>
  
  <p>And one additional question: How can i see the output from GridEditPHP.php        <code>echo "TEST!!!";</code>... 
  I mean, where can i see it on my website? </p>
  
  <p>The Database is sample database called "sakila".</p>