Привет, я повторил несколько строк из базы данных. В каждой строке есть поле выбора, которое отображает то, что в данный момент находится в этом поле, связанном с этой строкой.
С помощью поля выбора я могу выбрать другой вариант. При отправке ничего не происходит, ошибок нет. Что он должен сделать, так это обновить эти поля. Мне никогда раньше не удавалось обновлять несколько строк, так что это для меня в новинку.
Первый запрос ниже - это обновление, которого я пытаюсь достичь, чтобы обновить все поля с помощью order_ref.
Второй запрос просто отображает все данные, необходимые для просмотра.
<?php
ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
?>
<form>
<table class = "tbl-qa">
<thead>
<tr>
<th class = "table-header"><p>Action</p></th>
<th class = "table-header"><p>Campaign</p></th>
<th class = "table-header"><p>Title</p></th>
<th class = "table-header" width = "100px"><p>Order Reference</p></th>
<th class = "table-header"><p>Last updated</p></th>
</tr>
</thead>
<tbody>
<?php
require_once("../db/db_connection.php");
if (isset($_POST['submit'])) {
$sql = $db->prepare("UPDATE articles SET order_ref=? WHERE id=?
");
$order_ref = $_POST['order_ref'];
$sql->bind_param("ii", $order_ref, $_GET["id"]);
if ($sql->execute()) {
$success_message = "Edited Successfully";
} else {
$error_message = "Problem in Editing Record";
}
}
$sql = $db->prepare("SELECT * FROM articles WHERE campname=? ORDER BY order_ref ASC
");
$sql->bind_param("s",$_GET["campname"]);
$sql->execute();
$result = $sql->get_result();
?>
<?php
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
?>
<tr>
<td class = "table-row" width = "100px"><div class = "edit"><a href = "/_admin/edit.php?id=<?php echo $row["id"]; ?>" class = "link">Edit</a> |</div><div class = "bin"><a href = "delete.php?id=<?php echo $row["id"]; ?>" class = "link"><img content = "delete" id = "delete" title = "Delete" onclick = "return confirm('Are you sure you want to delete?')" src = "/_admin/images/delete.png"/></div>
</a>
</td>
<td>
<?php echo $row["campname"]; ?>
</td>
<td class = "table-row"><a href = "../campaigns/<?php echo str_replace(' ', '-', strtolower($row["campname"])); ?>/page.php?art_url=<?php echo $row["art_url"]; ?>"><?php echo $row["art_title"]; ?></a></td>
<td class = "contentedit">
<select name = "order_ref">
<option value = "<?php echo $row["order_ref"]?>"selected><?php echo $row["order_ref"]?></option>
<option value = "1">1</option>
<option value = "2">2</option>
<option value = "3">3</option>
<option value = "4">4</option>
<option value = "5">5</option>
<option value = "6">6</option>
</select>
</td>
<td class = "table-row"><?php echo strftime("%b %d, %Y", strtotime($row["last_updated"])); ?></a></td>
<!-- action -->
</tr>
<?php
}
}
else {
echo "No results";
}
?>
<tr class = "table-row">
<td colspan = "5"><input name = "submit" type = "submit" value = "Update" class = "submit"></td>
</tr>
</tbody>
</table>
</form>
Что мне нужно сделать, чтобы обновить order_ref для каждой строки, которая выводится эхом?
Вы используете здесь как POST, так и GET, почему? $order_ref = $_POST['order_ref']; и $order_ref, $_GET["id"]), что это?
@Funk Forty Niner Я включил код формы и обработку ошибок. Надеюсь, это даст вам лучшее представление.
Формы по умолчанию используют GET без метода POST. У вас есть отчет об ошибках, но вы не сообщили нам, какие именно ошибки вы получили. if (isset($_POST['submit'])) не будет. То же и для $order_ref = $_POST['order_ref'];.
@Funk Forty Niner Я добавил полный код с кодом сообщения об ошибке вверху. Я перехожу по ссылке со страницы, прежде чем отобразить результаты. POST предназначен для обновления строк. Похоже, я делаю это неправильно.
По-прежнему нет решения для этого






пожалуйста, опубликуйте html / форму для этого.