У меня есть строка, как показано ниже.
Я извлекаю id и имя из db, а другие опции выбора должны обновляться в определенной строке.
Мой идентификатор и имя, как показано ниже
$sql = "SELECT id, name,day,week,month,pickup,drop_location FROM crm LIMIT 10";
$resultset = mysqli_query($conn, $sql) or die("database error:". mysqli_error($conn));
while( $emp = mysqli_fetch_assoc($resultset) ) {
?>
<tr style="text-align: center;">
<td><?php echo $emp["id"]; ?></td>
Я обновляю строку, но она не работает.
form.php
<form action="drop.php" name = "myForm" method="post">
<td id="s1">
<select style="width: 150px;" class="blue" id="pick" data-style="btn-info" name="pickup">
<option value="ward" id="ward1">Floor 1</option>
<option value="ward1" id="ward2">Floor 2</option>
<option value="ward2" id="ward3">Floor 3</option>
</select>
</td>
<td id="s2">
<select style="width: 150px;" class="blue" id="drop" data-style="btn-success" name="drop_location">
<option value="ward" id="ward1">Floor 1</option>
<option value="ward1" id="ward2">Floor 2</option>
<option value="ward2" id="ward3">Floor 3</option>
</select>
</td>
<td id="s3">
<button class="btn btn-primary" type="submit" name="submit">submit</button>
<select style="width: 150px;" class="blue" id="stat" data-style="btn-warning" name="stat">
<option value="allocate">Allocated</option>
<option value="cancel">Cancelled</option>
</select>
</td>
<td id="s4">
<select style="width: 150px;" class="blue" id="status" data-style="btn-primary" name="status">
<option value="pending">pending</option>
<option value="Allocated">Allocated</option>
<option value="Engaged">Engaged</option>
</select>
</td>
</form>
</tr>
drop.php
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$mysqli = new mysqli("localhost", "root", "", "redeem");
// Check connection
if($mysqli === false){
die("ERROR: Could not connect. " . $mysqli->connect_error);
}
// Escape user inputs for security
$pickup = $mysqli->real_escape_string($_POST['pickup']);
$drop_location = $mysqli->real_escape_string($_POST['drop_location']);
$stat = $mysqli->real_escape_string($_POST['stat']);
$status = $mysqli->real_escape_string($_POST['status']);
// attempt insert query execution
$sql = "UPDATE crm SET pickup='$pickup',drop_location='$drop_location',stat='$stat', status='$status' WHERE id = 'id' ";
if($mysqli->query($sql) === true){
echo "Records inserted successfully.";
} else{
echo "ERROR: Could not able to execute $sql. " . $mysqli->error;
}
// Close connection
$mysqli->close();
?>
Я создал идентификатор для выбора, подобного этому
$(document).ready(function() {
$("#pick, #drop, #stat, #status").on('change', function () {
alert($(this).val());
});
Я не могу понять, где ошибка. Пожалуйста, любезно помогите мне.
Заранее спасибо!!!
Вы уже извлекаете записи из базы данных, так что вам нужно, чтобы внутри вашей формы было скрытое поле, которое будет иметь значение каждого идентификатора записи.
добавьте это в вашу форму:
<input type="hidden" name="id" value="<?=$emp['id']?>">
Затем вы сможете обновить запись с помощью этого идентификатора, я также предлагаю вам использовать подготовленный оператор для предотвращения внедрения sql.
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$mysqli = new mysqli("localhost", "root", "", "redeem");
// Check connection
if ($mysqli === false) {
die("ERROR: Could not connect. " . $mysqli->connect_error);
}
$pickup = isset($_POST['pickup']) ? $_POST['pickup'] : null;
$drop_location = isset($_POST['drop_location']) ? $_POST['drop_location'] : null;
$stat = isset($_POST['stat']) ? $_POST['stat'] : null;
$status = isset($_POST['status']) ? $_POST['status'] : null;
$id = isset($_POST['id']) ? intval($_POST['id']) : null;
// attempt insert query execution
$sql = "UPDATE crm SET pickup = ? ,drop_location= ? ,stat= ? , status= ? WHERE id = ? ";
$stmt = $mysqli->prepare($sql); //prepare statement
$stmt->bind_param("ssssi", $pickup, $drop_location, $stat, $status, $id);
if ($mysqli->execute()) { //execute the query
echo "Records inserted successfully.";
} else {
echo "ERROR: Could not able to execute $sql. " . $mysqli->error;
}
// Close connection
$mysqli->close();
?>
Вы не принимаете, какой идентификатор необходимо обновить. И в запросе вы используете id = 'id'
чтобы заменить id переменной $ id, чтобы обновить значение.
// Escape user inputs for security
$pickup = $mysqli->real_escape_string($_POST['pickup']);
$drop_location = $mysqli->real_escape_string($_POST['drop_location']);
$stat = $mysqli->real_escape_string($_POST['stat']);
$status = $mysqli->real_escape_string($_POST['status']);
$id= $mysqli->real_escape_string($_POST['id']); // Get id from post need to be updated
// attempt insert query execution
$sql = "UPDATE crm SET
pickup='$pickup',drop_location='$drop_location',stat='$stat', status='$status'
WHERE id = $id "; // use $id variable
if($mysqli->query($sql) === true){
echo "Records inserted successfully.";
} else{
echo "ERROR: Could not able to execute $sql. " . $mysqli->error;
}
WHERE id = 'id'
вероятно, неправильный идентификатор для использования.