编辑后无法在数据库中保存数据,但网格显示更改

时间:2013-12-17 15:30:54

标签: javascript php mysql

当我在网格中编辑行时,更改仅显示在此网格中。但是当我重新加载网格时,所有更新都会消失,因为数据尚未在数据库中更新

谁能提醒我哪里弄错了。 这里是我的test.html

<script type="text/javascript" src="js/jquery.js"></script>

<script src="js/i18n/grid.locale-ru.js" type="text/javascript"></script>
<script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="js/jquery.jqgrid.min.js" type="text/javascript"></script>
<script src="js/grid.common.js" type="text/javascript"></script>
<script src="js/grid.formedit.js" type="text/javascript"></script>

<script type="text/javascript">
    $(function(){
                $('#table').jqGrid({
                        url:'test.php',
                        datatype: 'json',
                        mtype: 'POST',
                        height: 500,
                        colNames:['Код страны','Код региона', 'Город','Долгота','Широта','nbip'],
                        colModel :[
                                    {name:'country_code', index:'country_code', width:80, editable:true, edittype:'text'},
                                    {name:'region_code', index:'region_code', width:180, editable:true, edittype:'text'},
                                    {name:'city', index:'city', width:190, editable:true, edittype:'text'},
                                    {name:'latitude', index:'latitude', width:160, editable:true, edittype:'text'},
                                    {name:'longitude', index:'longitude', width:160, editable:true, edittype:'text'},
                                    {name:'nbip', index:'nbip', width:130, editable:true, edittype:'text'}],

                        pager: $('#tablePager'),
                        pgtext : "Page {0} of {1}",
                        rowNum:100,
                        rowList:[10,20,30,100],
                        sortname: 'city',
                        sortorder: 'asc',
                        caption: 'Загрузка JSON данных',
                        rownumbers: true,
                        rownumWidth: 40

                });




                jQuery("#table").jqGrid('navGrid','#tablePager',
                {edit:true,add:true,del:true,search:true}, //options
                {url:'edit.php', height:280,reloadAfterSubmit:false, closeAfterEdit: true}, // edit options
                {height:280,reloadAfterSubmit:false}, // add options
                {reloadAfterSubmit:false}, // del options
                {} // search options
                );


                        }



    });
</script>

</head>
<body>
        <table id="table"></table>
        <div id="tablePager"></div>

</form>
</body>
</html>

test.php的

    <?php

$db = mysql_connect($db_host, $db_login, $db_passwd);
mysql_select_db($db_name);

$page = $_POST['page'];     
$limit = $_POST['rows'];     
$sidx = $_POST['sidx'];      
$sord = $_POST['sord'];    

if(!$sidx) $sidx =1; 

$result = mysql_query("SELECT COUNT(*) AS count FROM cities"); 
$row = mysql_fetch_array($result,MYSQL_ASSOC);
$count = $row['count']; 


if( $count > 0 && $limit > 0) { 
    $total_pages = ceil($count/$limit);
} else {
    $total_pages = 0;
}

if ($page > $total_pages) $page=$total_pages; 

$start = $limit*$page - $limit; 
if($start <0) $start = 0; 

$query = "SELECT id, country_code, region_code, city, latitude, longitude, nbip FROM cities ORDER BY ".$sidx." ".$sord." LIMIT ".$start.", ".$limit; 
$result = mysql_query($query);

$data->page = $page;
$data->total = $total_pages;
$data->records = $count;

$i = 0; 
while($row = mysql_fetch_assoc($result)) {
    $data->rows[$i]['id'] = $row[id];
    $data->rows[$i]['cell'] = array($row[country_code],$row[region_code],$row[city],$row[latitude],$row[longitude],$row[nbip]);
    $i++;
}

header("Content-type: text/script;charset=utf-8"); 

echo json_encode($data);
?>

edit.php

$db = mysql_connect($db_host, $db_login, $db_passwd) or die("Connection Error: " . mysql_error());
mysql_select_db($db_name) or die("Error conecting to db.");
//mysql_query("SET NAMES 'utf8'");

 // And so on for the other form values
    $id = $_POST['id'];
    $country_code = mysql_real_escape_string($_POST['country_code']);
    $region_code = mysql_real_escape_string($_POST['region_code']);
    $city = $_POST['city'];
    $latitude = mysql_real_escape_string($_POST['latitude']);
    $longitude = mysql_real_escape_string($_POST['longitude']);
    $nbip = mysql_real_escape_string($_POST['nbip']);

if($_POST['oper']=='add'){
   // mysql insert
}else if($_POST['oper']=='edit'){
   // mysql update
    $query = "UPDATE cities SET city = '".$city."' WHERE id = ".$id;
    $result = mysqli_query($db,$query) or die(mysql_error()); 
    break;
}else if($_POST['oper']=='del'){
   // mysql delete
}

?>

感谢。

1 个答案:

答案 0 :(得分:0)

您正在使用mysqli进行数据更新,并在代码中使用mysql_real_escape_string, mysql_connect, mysql_select_db

将您的代码更新为仅使用mysqli,而不是同时使用mysqlmysqli