Ich habe ein PHP-Programm geschrieben, das eine MySQL-Datenbank abfragen soll, um Dropdown-Listen zu füllen, und Auswahlmöglichkeiten zum Einfügen von Werten in eine dritte Tabelle bietet. Es funktioniert fast, aber anstatt die Werte in einen Datensatz einzufügen, fügt es sie separat ein, obwohl es eine Abfrage ist. Wie behebe ich das?PHP aus MySQL-Tabellen auswählen und in einer anderen Tabelle speichern
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>
<body>
<?php // add-order.php
date_default_timezone_set("Australia/Adelaide");
$datetry= date("Y/m/d");
echo "today's date is ".$datetry."<br>";
require_once 'login.php';
$conn = new mysqli($hn, $un, $pw, $db);
if ($conn->connect_error) die($conn->connect_error);
$query="SELECT * FROM customers";
$result=$conn->query($query);
if (!$result) die($conn->error);
$rows = $result->num_rows;
for ($j = 0 ; $j < $rows ; ++$j)
{
$result->data_seek($j);
$row = $result->fetch_array(MYSQLI_NUM);
$Customers[$j][0] = $row[0];
$Customers[$j][1]= $row[1];
$Customers[$j][2]= $row[2];
}
?>
<form action="add-order.php" method ="post">
<select name="choice">
<option selected="selected">Choose a customer</option>
<?php
for ($j = 0 ; $j < $rows ; ++$j){
?>
<option value="<?php echo $Customers[$j][0]; ?>"><?php echo $Customers[$j][1]; ?></option>
<?php
}
?>
</select>
<input type="submit" value="submit">
</form>
<?php
$result->close();
//products array
$queryp="SELECT * FROM products";
$resultp=$conn->query($queryp);
if (!$resultp) die($conn->error);
$rows = $resultp->num_rows;
for ($j = 0 ; $j < $rows ; ++$j)
{
$resultp->data_seek($j);
$row = $resultp->fetch_array(MYSQLI_NUM);
$Products[$j][0] = $row[0];
$Products[$j][1]= $row[1];
}
?>
<form action="add-order.php" method ="post">
<select name="choice1">
<option selected="selected1">Choose a product</option>
<?php
for ($j = 0 ; $j < $rows ; ++$j){
?>
<option value="<?php echo $Products[$j][0]; ?>"><?php echo $Products[$j][1];
?></option>
<?php
}
?>
</select>
<input type="submit" value="submit">
</form>
<?php
$resultp->close();
$PresentCustomer = $_POST['choice'];
echo $PresentCustomer;
$PresentProduct = $_POST['choice1'];
echo $PresentProduct;
$queryO = "INSERT INTO orders VALUES('','$PresentCustomer', '$PresentProduct','$datetry')";
$resultO = $conn->query($queryO);
if (!$resultO) echo "INSERT failed: $query<br>" .
$conn->error . "<br><br>";
$resultO->close();
$conn->close();
?>
</body>
</html>
Sie geben niemals die Spalten an, in die die Daten eingefügt werden sollen. 'INSERT INTO Tabelle (Cola, Colb usw.) VALUES ('val1', 'val2' usw.)' – Xorifelse
@Xorifelse Sie müssen die Spalten nicht angeben, wenn die Werteliste Werte für alle Spalten in ihrer nominalen Reihenfolge enthält. – Shadow
@Shadow Ganz richtig, aber was passiert, wenn das nicht der Fall ist? – Xorifelse