Ich habe seit einigen Tagen damit zu kämpfen. Ich habe gesucht, wie man Tabellen aktualisiert und es geschafft hat, so weit zu gehen, um Zeilen, aber nur den letzten in der Tabelle zu aktualisieren. Jetzt versuche ich eine Schleife zu bekommen, die alle Eingaben durchläuft und die Datenbank mit den eingegebenen Werten aktualisiert. Ich denke, den Code, der korrigiert werden muss, ist in der Nähe des Ende des Codes befindetWie man die Datenbank mit der gesamten HTML-Tabelle (PHP, MySQL) aktualisiert
Was ich tun möchte:
- Get/Display-Datenbank in HTML-Tabelle
- ändern Werte bestimmter Spalten
- die Datenbanktabelle aktualisiert ein Absenden-Button verwenden, die in der Datenbank jede Zeile aktualisiert ist
hier ein Bild von dem, was wie in Web-Ansicht die Tabelle aussieht:
<?php
//Connect to database
include '../db/connect.php';
?>
<form action='test7.php' method="post">
<table border='1'>
<?php
$result = $MySQLi_CON->query("SELECT * FROM users");
echo "<tr>";
echo "<td colspan='3'>CLASS 1</td>";
echo "</tr>";
//All table rows in database presented in html table
while($row = $result->fetch_array()){
echo "<tr>";
echo "<td><input type='hidden' name='user_id[]' value='".$row['user_id']."' /></td>";
echo "<td>username :<input type='text' name='username[]' value='".$row['username']."' /></td>";
echo "<td>email :<input type='text' name='email[]' value='".$row['email']."' /></td>";
echo "<td>rank :<input type='number' name='rank[]' value='".$row['rank']."' /></td>";
echo "</tr>";
}
echo "<input type='submit' name='update' value='UPDATE' />";
?>
<table>
</form>
<?php
if(isset($_POST['update'])){
$total = count($_POST['rank']);
$user_id_arr = $_POST['user_id'];
$rank_arr = $_POST['rank'];
for($i = 0; $i < $total; $i++){
$user_id = $user_id_arr[$i];
$rank = $rank_arr[$i];
$query = "UPDATE users SET `rank`= '".$rank."' WHERE `user_id`= '".$user_id."'";
$MySQLi_CON->query($query);
header('Location: test7.php');
}
}
?>
Wenn ich die UPDATE-Taste drücken, erhalten i PHP Notice: Array to string conversion in...
.
Es bezieht sich auf 30 Linie, die diese Linie ist:
$query = "UPDATE user SET rank=$_POST[rank][$row] WHERE user_id=$value ";
EDIT: der obige Code in den Arbeitscode bearbeitet werden. Danke @Frayne Konok für deine Hilfe.
So .. var_dump ($ _ POST [Rang] [$ Zeile]) und var_dump ($ Wert) – Mattia
Ihre Update-Abfrage möglicherweise falsch, versuchen Sie mit Quote. –
Sie machen hier einen Fehler, Sie verwenden dieselbe Ressource für die foreach-Schleife, so dass Sie ein unbekanntes Problem haben. –