2015-03-13 3 views
1

Как вы можете видеть, я хочу создать через несколько форм и кнопок. Проблема в том, когда я хочу отправить одну строку из моего массива, я хочу выполнить эту конкретную форму, а не другую.form submit in a while loop php, jquery

Даже я поместил тег кнопки внутри формы. У меня проблема. Я думаю, чтобы установить уникальный идентификатор для создания тега, например id="form_submit_change_status<?php echo $row['id_user']; ?>". Но тогда проблема заключается в том, какие изменения я должен внести в код javascript. извините за мой английский, и я надеюсь, чтобы понять мою проблему ...

while($row = $result->fetch_array()){ 
<form name="form_submit_change_status" id="form_submit_change_status" action=""> 
<input type="text" class="user_id" id="user_id" name="user_id" value="<?php echo $row['id_user']; ?>" /> 
<input type="text" name="is_enabled" value="<?php echo $row['is_enabled']; ?>" /> 
</form> 
<button type="submit" id="submit_change_status" class="btn btn-warning btn-xs" value="<?php echo $row['is_enabled']; ?>">Change status</button> 
} 


$(document).ready(function(){ 
$('#submit_change_status').click(function(){ 
var formData = $("#form_submit_change_status").serializeArray(); 
var userId = $("#user_id").val(); 
alert(userId); 
var URL = $("#form_submit_change_status").attr("action"); 
var URL = "change_status_user.php"; 
$.post(URL, 
formData, 
function(data, textStatus, jqXHR) 
{ 
// alert("Data: " + data + "\nStatus: " + textStatus); 
}).fail(function(jqXHR, textStatus, errorThrown) 
{ 
}); 
var varChangeStatus = $('#is_enabled'+userId).val(); 
if(varChangeStatus=="true"){ 
$('#is_enabled'+userId).html('false'); 
}else{ 
$('#is_enabled'+userId).html('true'); 
} 
}); 
}); 
</script> 


// change_status_user.php 
$DBConnection = new DBConnection(); 
if (isset($_POST['is_enabled'])) { 
$id = $_POST['user_id']; 
$status = $_POST['is_enabled']; 
if($status=="true") 
$status = "false"; 
else 
$status = "true"; 
$sql = "UPDATE users SET is_enabled = '$status' WHERE id_user = $id"; 
$res = $DBConnection->db_connection->query($sql); 
echo $sql; 
} 
+0

Ваша проблема заключается в том, что вы используете идентификатор. Вместо этого используйте классы, чтобы избежать получения неправильной формы. – Albin

ответ

1

Как было отмечено выше другими, он гибок, чтобы использовать классы, в отличие от идентификаторов, поскольку они нуждаются быть уникальным. Классы также помогают группировать элементы для более легкого доступа позже.

HTML (PHP):

while($row = $result->fetch_array()){ 
<form name="form_submit_change_status" class="form_submit_change_status" action=""> 
    <input type="text" class="user_id" name="user_id" value="<?php echo $row['id_user']; ?>" /> 
    <input type="text" class="is_enabled" name="is_enabled" value="<?php echo $row['is_enabled']; ?>" /> 
    <button type="button" class="btn btn-warning btn-xs" value="<?php echo $row['is_enabled']; ?>">Change status</button> 
</form> 
} 

JQuery:

$(function(){ 
    $('.btn.btn-warning').click(function(e) { 
     e.preventDefault(); 
     var $form = $(this).closest(".form_submit_change_status"); 
     var formData = $form.serializeArray(); 
     var userId = $form.find(".user_id").val(); 
     alert(userId); 
     //var URL = $form.attr("action"); 
     var URL = "change_status_user.php"; 
     $.post(URL, formData) 
     .done(function(data) { 
      //success 
     }). 
     fail(function(jqXHR, textStatus, errorThrown) { 
      //failure  
     }); 

     var $isStatus = $form.find(".is_enabled"); 
     var varChangeStatus = $isStatus.val(); 
     $isStatus.val(varChangeStatus=="true" ? "false" : "true"); 
    }); 
}); 
0

Вы используете while цикл для создания HTML-элементов, но используя тот же идентификатор атрибута каждый раз. Идентификаторы должны быть уникальными; классов, однако, нет.

Попробуйте вместо этого:

PHP/HTML:

while($row = $result->fetch_array()){ 
    <form name="form_submit_change_status" class="form_submit_change_status" action=""> 
    <input type="text" class="user_id" name="user_id" value="<?php echo $row['id_user']; ?>" /> 
    <input type="text" class="is_enabled" name="is_enabled" value="<?php echo $row['is_enabled']; ?>" /> 
    <button type="submit" class="btn btn-warning btn-xs" value="<?php echo $row['is_enabled']; ?>">Change status</button> 
</form> 
} 

JS:

$(document).ready(function() { 
    $('.submit_change_status').click(function(e) { 
     e.preventDefault(); 
     var $form = $(this).closest(".form_submit_change_status"); 
     var formData = $form.serializeArray(); 
     var userId = $form.find(".user_id").val(); 
     alert(userId); 
    // var URL = $form.attr("action"); 
     var URL = "change_status_user.php"; 
     $.post(URL, 
      formData, 
      function(data, textStatus, jqXHR) { 
       // alert("Data: " + data + "\nStatus: " + textStatus); 
      }).fail(function(jqXHR, textStatus, errorThrown) {}); 
     var $isEnabled = $form.find('.is_enabled'); 
     var varChangeStatus = $isEnabled.val(); 
     if (varChangeStatus == "true") { 
      $isEnabled.html('false'); 
     } else { 
      $isEnabled.html('true'); 
     } 
    }); 
});