2013-02-14 49 views
0

我需要你的幫助。在ajax x-editable之後使用php更新sql表格

我做了一個代碼,動態創建一個帶有jQuery 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可編輯庫。

$(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 } 
    }); 
    } 
});} 

此代碼變換到輸入,可變(伴隨,chefdequart和cmsperso是新的值和adjoint2,chefdequart2和cmsperso2是改變之前的值)。

最後我有PHP文件誰更新MySQL表,但它不工作。

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並伴隨後chefdequart,螢火蟲不返回錯誤,這一點: firebug

和數據可視化改變,但在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(); } 

解決了我測試我的變量是否是未定義的,我把我需要的值,和阿賈克斯返回的值

它是神奇的。感謝您的幫助

0

您的更新查詢不執行爲您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的屏幕截圖,你是僅發佈chefdequart,chefdequart2adjoint2

您需要在您的$就data:看你貼什麼,你應該有6個參數(包括cmsperso & cmsperso2),但螢火蟲只顯示3

+0

是的這正是我的問題其他發佈的數據是「未定義」與cosole.log!在一開始,我有三個輸入cmsperso,chefdequart和adjoint。當我插入只有一個和改變,它工作正常,我的問題是當我插入兩個(例如:chefdequart和adjoint),並改變其中之一,這不工作。 – user1825668 2013-02-14 05:43:26