我正在使用 jqGrid 使用 jSON 数据维护 MySQL 中的数据库。我能够在网格中显示数据,但是当我尝试通过模式表单添加或编辑数据行时,我收到一条消息“未设置 URL”。但是 editurl 应该包含什么? mysql插入语句?我正在使用网格的预定义添加和编辑功能。
另外,如果你看一下 trirand 演示page http://trirand.com/blog/jqgrid/jqgrid.html在“操作”下,然后在“网格数据”下。他们将他们的 url 指定为 url:'server.php?q=2' 和他们的 editurl:"someurl.php" 他们从不说 someurl.php 包含什么。这就是我迷失的地方,我找不到资源来给我任何有关 editurl php 文件中应该包含什么内容的提示。
感谢您的任何建议。
UPDATE:editurl php 文件中的代码:我将 col 模型中的 POST 值放入变量中。我只需要 switch 语句中的 insert 和 update 语句。看一下我的插入语句,看看我应该使用哪一个。我还必须让您意识到我没有列出数据库中的所有列,而是列出了用户在网格中看到的所有列。第一个插入语句被注释,它声明了值应该根据其顺序插入的列。第二条插入语句遵循数据库中的顺序。您看到“ ”的地方是我不想显示到数据网格以供用户查看的列,因为该信息不相关。
<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "**********";
$dbname = "codes";
// connect to the database
$mysql_connect($dbhost, $dbuser, $dbpass) or die("Connection Error: " . mysql_error());
mysql_select_db($dbname) or die("Error conecting to db.");
$div = $_POST['div_id'];
$l2 = $_POST['l2_id'];
$l1l2 = $_POST['l1l2_id'];
$l1l3 = $_POST['l1l3_id'];
$l2l3 = $_POST['l2l3_id'];
$beg = $_POST['exec_beg'];
$end = $_POST['exec_end'];
$csa = $_POST['csa_id'];
$area = $_POST['area_id'];
$areadesc = $_POST['area_desc'];
$shortdesc = $_POST['short_desc'];
$longdesc = $_POST['long_desc'];
$enabled = $_POST['avail_ind'];
switch($_POST['oper'])
{
case "add":
$query = "INSERT INTO divcodes values ($div,'',$l1l2,$l2,$l1l3,$l2l3,$beg,$end,'',''$csa,$area,$areadesc,$shortdesc,$longdesc,$enabled,'','','','','',''";
$run = mysql_query($query);
break;
case "edit":
//do mysql update statement here
break;
}
当我将 editurl 设置为我的 php 文件并尝试向网格添加新的数据行时,它给了我内部服务器错误 500。我不知道如何进一步调试它,并且错误 500 是一个常见错误。
我认为由于我使用了网格的预定义操作(添加/编辑),网格只会知道在我的数据库中执行插入或更新语句,但看起来情况并非如此?
更新2:我更改了语法以使用 mysqli 扩展。一旦我重组了插入语句,我就不再收到“内部服务器错误代码 500”。当我单击添加新记录然后填写测试数据然后单击提交时,模式窗口消失,就像数据已添加到网格中一样。但我在网格中找不到数据(也许网格没有重新加载新数据)。我检查了 phpmyadmin,但找不到新行。当我编辑现有行并单击“提交”时,对话框保持打开状态,但我没有收到错误 500,这让我松了一口气。
<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "**********";
$dbname = "codes";
// connect to the database
$conn = mysqli_connect($dbhost, $dbuser, $dbpass) or die("Connection Error: " . mysql_error());
mysqli_select_db($conn,$dbname) or die("Error conecting to db.");
$div = $_POST['div_id'];
$l2 = $_POST['l2_id'];
$l1l2 = $_POST['l1l2_id'];
$l1l3 = $_POST['l1l3_id'];
$l2l3 = $_POST['l2l3_id'];
$beg = $_POST['exec_beg'];
$end = $_POST['exec_end'];
$csa = $_POST['csa_id'];
$area = $_POST['area_id'];
$areadesc = $_POST['area_desc'];
$shortdesc = $_POST['short_desc'];
$longdesc = $_POST['long_desc'];
$enabled = $_POST['avail_ind'];
switch($_POST['oper'])
{
case "add":
$query = "INSERT INTO divcodes (div_id,l1l2_id,l2_id,l1l3_id,l2l3_id,exec_beg,exec_end,csa_id,area_id,area_desc,short_desc,long_desc,avail_ind) values ($div,$l1l2,$l2,$l1l3,$l2l3,$beg,$end,$csa,$area,$areadesc,$shortdesc,$longdesc,$enabled)";
mysqli_query($conn,$query);
break;
case "edit":
$query = "UPDATE divcodes SET div_id=$div,l1l2_id=$l2,l2_id=$l1l2,l1l3_id=$l2l3,l2l3_id=$l2l3,exec_beg=$beg,exec_end=$end,csa_id=$csa,area_id=$area,area_desc=$areadesc,short_desc=$shortdesc,long_desc=$longdesc,avail_ind=$enabled";
mysqli_query($conn,$query);
break;
}
?>