Ajax发布到php更新mysql

时间:2016-01-14 05:46:27

标签: php jquery mysql ajax

我为自己的网站构建了一个管理页面,其中包含许多用于将数据保存,更新,删除到数据库中不同表格的表单。

目前我根据myjax post命令为每个执行mysql查询的函数提供了一个PHP文件。这有点失控。

例如我有一个用于保存新类别的文件

$cataddname = $_POST['name'];
$area = $_POST['area'];

$shortname = preg_replace('/\s+/', '_', $cataddname);

$update_category = "INSERT INTO clet_faq_category (id, name, nickname, area) VALUES ('', '$cataddname', '$shortname', '$area')";
mysqli_query($db_connect, $update_category);

我的保存新类别命令发布到此文件:

然后我有一个保存类别编辑的文件:

$cataddname = $_POST['name'];
$area = $_POST['area'];
$id = $_POST['cid'];
$shortname = preg_replace('/\s+/', '_', $cataddname);

$update_category = "UPDATE clet_faq_category SET name='$cataddname', nickname='$shortname', area='$area' WHERE id = '$id'";
mysqli_query($db_connect, $update_category);

另一个删除类别:

$c_id = $_POST['delete_id'];

$sql_del = "DELETE FROM clet_faq_category WHERE id = '$c_id'";
$del_question = mysqli_query( $db_connect, $sql_del );

然后我有一个调用页面的jQuery ajax调用:

function newcat(){
    var id = "answer";
    tinymce.execCommand('mceRemoveEditor', true, id);

    var category = document.getElementById('newcategory').value;
    var area = document.getElementById('area').value;
    var dataString = 'name=' + category + '&area=' + area;
    $.ajax({
        type: "post",
        url:  "newcat.php?area_id=" + areaid,
        data : {
          'name': category,
          'area': area,
          'query' : query
        },
        cache: false,
        success: function(html){
            $('#category_table').html(html);
            $('#cat-form').text("Category Saved");
        }
    });
    return false;
}

当你看到它们时,它只是一个运行mysql查询的东西。

我试图做的是简化这一点,我想通过ajax将整个查询传递给我的php文件,但这不是任何可以看到我的js文件的选项将能够找出我的所有查询和表名,他们需要做的就是将查询发布到我的php页面并损坏我的整个数据库。

所以我的问题是,有没有办法以更聪明的方式做到这一点,可能在同一个文件中创建php函数,在同一个文件中有category_delete(),category_add(),category_edit()并且每个都使用ajax目标其中一个类别,如果你知道我的意思,至少我的所有功能和查询将在同一个地方而不是在多个单独的文件中。

2 个答案:

答案 0 :(得分:0)

您必须在ajax中发送额外参数作为操作,此参数指定操作

在php中

     switch($_POST['action'])
     {
         case 'delete':
           .....
      }

答案 1 :(得分:0)

你可以这样做创建一个单独的类来执行插入删除和更新的选项。并在您的ajax页面上调用这些函数

$func = new CUD();

switch($_POST['action'])
     {
         case 'delete':
           $func->delete($values..)
         case 'update':
           $func->update($values..)
          case 'delete':
           $func->insert($values..)

  }