Reputation: 1
I am having difficulty using the UPDATE command on a functioning database.
What I am attempting to do:
On an existing database I want to update a specific field (sdate) using a date picker and have the value be saved into the database.
What is happening:
I am able to access the database (the echo of one of the elements (row[0]) works) but I am not able to get the date picker's value to get saved into the database.
Can someone point me in the right direction please?
Here is the main html code:
<?php include '../include/header.php'; ?>
<?php include '../include/datepicker.php'; ?>
<?php include '../include/format.php'; ?>
<fieldset>
<legend>Presale Units in Stock</legend>
<table border=1>
<tr>
<th>Id</th>
<th>Ship Date</th>
<th>Button?</th>
</tr>
<tr>
<form>
<?php include '../include/junk.presale.mysql.php'; ?>
</table>
<button type="reset" value="Reset">Reset</button>
</form>
</tr>
</fieldset>
<br>
<?php include '../include/footer.php'; ?>
Here is junk.presale.mysql.php:
<?php
// Get database credentials
require 'config.php';
$dbtable = "assembly2";
$col1 = "id";
$col4 = "sdate";
$comm = "SELECT * FROM $dbtable";
/* Create a new mysqli object with database connection parameters */
$conn= new mysqli($dbhost,$dbuser,$dbpass,$dbname);
if(mysqli_connect_errno()) {
echo "Connection Failed: " . mysqli_connect_errno();
exit();
}
// Assembly array
if ($result = $conn->query($comm)) {
/* fetch object array */
while ($row = $result->fetch_row()) {
if(($row[5]=="presale")or($row[4]!=0)) {
echo "<tr>";
echo "<td>$row[0]</td>";
echo "<td><input type=\"text\" name=\"sdate\" class=\"datepicker\"></td>";
echo "<td><input name=\"update\" type=\"submit\" id=\"update\" value=\"Update\"></td>";
if(isset($_POST["update"])){
$entry4 = $_POST["sdate"];
$cmd = "UPDATE $dbtable SET $col4=$entry4 WHERE $col1=$row[0]";
// use prepared statements to increase security
if ($stmt = mysqli_prepare($conn,$cmd)){
mysqli_stmt_execute($stmt);
}
// Close statement and connection
mysqli_stmt_close($stmt);
}
echo "</tr>";
}
}
}
/* free result set */
$result->close();
// Close statement and connection
mysqli_close($conn);
?>
Any help is much appreciated!
Upvotes: 0
Views: 78
Reputation: 500
As for as i understand your problem you want to update each row of a table by clicking update button. for this you have to create multiple form not a single form. Your logic is not correct. use the below code a hopes that will solve your problem.
<?php include '../include/header.php'; ?>
<?php include '../include/datepicker.php'; ?>
<?php include '../include/format.php'; ?>
<fieldset>
<legend>Presale Units in Stock</legend>
<table border="1">
<tr>
<th>Id</th>
<th>Ship Date</th>
<th>Button?</th>
</tr>
<?php include '../include/junk.presale.mysql.php'; ?>
</table>
<br>
<?php include '../include/footer.php'; ?>
Here is you another file.
// Assembly array
if ($result = $conn->query($comm)) {
/* fetch object array */
while ($row = $result->fetch_row()) {
if(($row[5]=="presale")or($row[4]!=0)) {
echo "<tr>";
echo "<form id=\"form-$row[0]\" name=\"form-name-$row[0]\" method=\"post\">";
echo "<td>$row[0]</td>";
echo "<td><input type=\"text\" name=\"sdate\" class=\"datepicker\"></td>";
echo "<td><input type=\"hidden\" name=\"rec_id\" value=\"$row[0]\"></td>";
echo "<td><input name=\"update\" type=\"submit\" id=\"update\"
value=\"Update\"> </td>";
echo "</form>";
echo "</tr>";
}
}
}
if(isset($_POST["update"])){
$entry4 = $_POST["sdate"];
$rec_id = $_POST["rec_id"];
$cmd = "UPDATE $dbtable SET $col4='$entry4' WHERE $col1=$rec_id";
// use prepared statements to increase security
if ($stmt = mysqli_prepare($conn,$cmd)){
mysqli_stmt_execute($stmt);
}
// Close statement and connection
mysqli_stmt_close($stmt);
}
Upvotes: 1