【问题标题】:update sql table in php with condition after ajax x-editable在ajax x-editable之后使用条件更新php中的sql表
【发布时间】:2013-02-14 04:47:32
【问题描述】:

我需要你的帮助。

我编写了一个代码,该代码使用 ajax jquery 在表中动态创建新行。

var nouvelle_ligne = $('<tr><td class="thtime">'+hours+'h'+minutes+'</td><td>Modification de l\'équipe de Quart : <b class="textepersocdq">'+chefdequart+'</b> prend la fonction de Chef de Quart et <b class="textepersoadj">'+adjoint+'</b> prend celle d\'adjoint.</td><td class="button"><button class="editperso"><i class="icon-pencil"></i></button></td><td class="button"><button class="trashperso"><i class="icon-trash"></i></button></td></tr>').fadeIn('fast');
$('#tablemc').append(nouvelle_ligne);

在这个新行中,我有一个按钮可以使用 x-editable 库进行编辑。

$(document).on("click", ".editperso", function(g){
g.stopPropagation();
  var $CellParent = $(this).closest('td').prev().children('b');
  editperso2($CellParent); });

function editperso2(bCellToEdit) {
bCellToEdit.editable({
  mode: 'inline',
  inputclass: 'input-medium texteperso',
  type: 'text',
  success: function() {
    var cmsperso = $('.textepersocms').next('span').children('div').children('form').children('div').children('div').children('div').children('input.texteperso').val();
    var chefdequart = $('.textepersocdq').next('span').children('div').children('form').children('div').children('div').children('div').children('input.texteperso').val();
    var adjoint = $('.textepersoadj').next('span').children('div').children('form').children('div').children('div').children('div').children('input.texteperso').val();
    var cmsperso2 = $(this).closest('td').children('.textepersocms').html();
    var chefdequart2 = $(this).closest('td').children('.textepersocdq').html();
    var adjoint2 = $(this).closest('td').children('.textepersoadj').html();

    console.log(cmsperso);
    console.log(chefdequart);
    console.log(adjoint);
    console.log(cmsperso2);
    console.log(chefdequart2);
    console.log(adjoint2);

    $.ajax({
      type: "POST",
      url: "form/update/updateperso.php",
      async: false,
      data: { cmsperso: cmsperso, cmsperso2: cmsperso2, chefdequart: chefdequart, chefdequart2: chefdequart2, adjoint: adjoint, adjoint2: adjoint2 }
    });
  }
});}

此代码将输入转换为变量(adjoint、chefdequart 和 cmsperso 是新值,adjoint2、chefdequart2 和 cmsperso2 是更改前的值)。

最后我有更新 mysql 表的 php 文件,但它不起作用。

elseif (empty($_POST['cmsperso']) && !empty($_POST['chefdequart']) && !empty($_POST['adjoint'])) {

    if (isset($_POST['chefdequart']) && isset($_POST['chefdequart2']) && isset($_POST['adjoint']) && isset($_POST['adjoint2'])) {

        $chefdequart = $_POST['chefdequart'];
        $chefdequart2 = $_POST['chefdequart2'];
        $adjoint = $_POST['adjoint'];
        $adjoint2 = $_POST['adjoint2'];

        $pos1 = strcasecmp($adjoint, $adjoint2);
        $pos2 = strcasecmp($chefdequart, $chefdequart2);

        if ($pos1===0 && $pos2!==0) { 

            $updateperso4 = "UPDATE `Operations` SET `chefdequart`=\"$chefdequart\" WHERE `cmsperso`='' AND `chefdequart`=\"$chefdequart2\" AND `adjoint`=\"$adjoint2\"";

            if($updateperso4) {
                echo json_encode(array("status"=>"ok"));
            }
            else {
                echo json_encode(array("status"=>"error", "error"=>"une erreur est survenue..."));
            }

            mysql_query($updateperso4, $cnx) or die(mysql_error());
            mysql_close();

        }

        elseif ($pos1!==0 && $pos2===0) {

            $updateperso5 = "UPDATE `Operations n°` SET `adjoint`=\"$adjoint\" WHERE `cmsperso`='' AND `chefdequart`=\"$chefdequart2\" AND `adjoint`=\"$adjoint2\"";

            if($updateperso5) {
                echo json_encode(array("status"=>"ok"));
            }
            else {
                echo json_encode(array("status"=>"error", "error"=>"une erreur est survenue..."));
            }

            mysql_query($updateperso5, $cnx) or die(mysql_error());
            mysql_close();

        }

        else { 
            echo "Ouppsss !"; 
        }

    }
}

当我将更新之一放入 phpmyadmin 时,更新工作和值会改变,但在我的代码中,值不会改变。

当我在插入 chefdequart 和 adjoint 后尝试使用 chefdequart 时,firebug 没有返回错误,并且:

数据在视觉上发生变化,但 phpmyadmin 没有变化。

希望你能理解我。 谢谢大家。

【问题讨论】:

    标签: php jquery mysql ajax phpmyadmin


    【解决方案1】:

    这个问题解决了

     if(cmsperso === undefined) { var cmsperso = $(this).closest('td').children('.textepersocms').html(); }
     if(chefdequart === undefined) { var chefdequart = $(this).closest('td').children('.textepersocdq').html(); }
     if(adjoint === undefined) { var adjoint = $(this).closest('td').children('.textepersoadj').html(); }
    

    我测试我的变量是否未定义,我输入我需要的值,然后 ajax 返回值

    这很神奇。感谢您的帮助

    【讨论】:

      【解决方案2】:

      您的 UPDATE 查询没有像您的 elseif 那样执行 -

      elseif (empty($_POST['cmsperso']) && !empty($_POST['chefdequart']) && !empty($_POST['adjoint'])) {
      

      而你的 if 是 -

      if (isset($_POST['chefdequart']) && isset($_POST['chefdequart2']) && isset($_POST['adjoint']) && isset($_POST['adjoint2'])) {
      

      这两个都需要$_POST['adjoint'],但看看你的Firebug屏幕截图,你只发布了chefdequartchefdequart2adjoint2

      您需要查看 $.ajax data:,因为您发布的内容应该有 6 个参数(包括 cmspersocmsperso2),但 Firebug 只显示 3 个。

      【讨论】:

      • 是的,这正是我的问题,其他发布的数据在 cosole.log 中是“未定义的”!一开始,我有三个输入 cmsperso、chefdequart 和 adjoint。当我只插入一个并更改时,它工作正常,我的问题是当我插入两个(例如:chefdequart 和 adjoint)并更改其中一个时,这不起作用。
      猜你喜欢
      • 1970-01-01
      • 2014-04-21
      • 1970-01-01
      • 2016-01-30
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多