我需要你的帮助。
我创建了一个代码,该代码使用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中没有变化。
我希望你理解我。 谢谢大家。
答案 0 :(得分: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返回值
这是神奇的。谢谢你的帮助答案 1 :(得分:0)
您的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屏幕截图,您只发布了chefdequart
,chefdequart2
和adjoint2
您需要查看$ .ajax data:
,因为您发布的内容应该包含6个参数(包括cmsperso
&amp; cmsperso2
),但Firebug仅显示3。< / p>