Мне нужно отобразить результат динамически созданного запроса на публикацию формы только в одном делении.
Исходная таблица и сценарии более сложны, но я разбил их на основы для этого примера.
Таблица:
form.php
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>title</title>
<style>
body {padding: 30px; font-family: Arial;}
input {margin: 6px 0;}
.result {margin-bottom: 30px; color:green;}
</style>
</head>
<body>
<?php
$conn = mysqli_connect('dbserver', 'dbuser', 'dbpw', 'dbname') or die("Connection failed: " . mysqli_connect_error());
$conn->query("SET NAMES 'utf8'");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sql = "SELECT * FROM table_name ORDER BY email ASC";
$rs_result = mysqli_query($conn, $sql);
//the following part will echo multiple individual forms, depending on the table content. In this case 5.
while ($row = mysqli_fetch_assoc($rs_result)) {
echo '
'.$row["email"].'
<form action="marked.php" method="POST" id="marked_form_'.$row["id"].'" class="marked_form">
<input type="hidden" name="email_to_mark" value="'.$row["email"].'">
<input type="submit" name="submit" value="Submit" class="marked_submit">
</form>
<div class="result">
<!--echo result here-->
</div>
';
}
?>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$(".marked_form").submit(function() {
// Getting the form ID
var formID = $(this).attr('id');
var formDetails = $('#'+formID);
$.ajax({
type: "POST",
url: 'marked.php',
data: formDetails.serialize(),
success: function (data) {
// Inserting html into the result div
$('.result').html(data);
},
error: function(jqXHR, text, error){
// Displaying if there are any errors
$('.result').html(error);
}
});
return false;
});
});
</script>
</body>
</html>
Приведенный выше код будет отображать 5 форм в этом примере, выглядя следующим образом:
Форма отправляется в mark.php , которая возвращает /Отобразите результат:
<?php
$email_to_mark = $_POST['email_to_mark'];
$conn = new mysqli('dbserver', 'dbuser', 'dbpw', 'dbname');
$sql = "UPDATE table_name SET marked='1' WHERE email='$email_to_mark'";
if (mysqli_query($conn, $sql)) {
echo 'SUCCESS';
} else {
echo 'ERROR';
}
?>
В целом форма и запрос работают нормально, но когда я отправляю одну из форм, результат будет отображаться во всех div = class = "result" на странице в видеэто:
Когда я изменяю его с
<div class="result">
на
<div id="result">
, он показываетрезультат только в первом div, даже если он не ниже формы, из которой я его отправил.
=========================
Так что мне нужен результат, который будет показан только нижея только что представил, как смоделировано здесь:
Моя попытка состояла бы в том, чтобы создать отдельные div результата с отдельными идентификаторами с помощью идентификаторов таблицы,как ...
<div id="result_'.$row["id"].'">
... но так как я новичок в JS, я не знаю, как индивидуально писать в эти div.
Спасибо.