Запись не обновляется при успешной вставке

0

У меня есть строка, как показано ниже.

Образ

Я извлекаю 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());
});

Я не могу понять, где ошибка. Пожалуйста, любезно помогите мне.

Заранее спасибо!!!

  • 1
    WHERE id = 'id' вероятно, неправильный идентификатор для использования.
  • 0
    Какую ошибку вы получаете прямо сейчас?
Показать ещё 4 комментария
Теги:
mysqli

2 ответа

0
Лучший ответ

Вы уже извлекаете записи из базы данных, так что вам нужно, чтобы внутри вашей формы было скрытое поле, которое будет иметь значение каждого идентификатора записи.

добавьте это в вашу форму:

<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();
?>
  • 1
    Спасибо, братан, который мне очень помог. Спасибо за вашу помощь.
0

Вы не принимаете, какой идентификатор необходимо обновить. И в запросе вы используете 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;
    }
  • 0
    как я могу это принять
  • 0
    когда вы создаете вышеуказанную форму, вам нужно поместить первичный ключ этой записи в скрытое поле, и во время публикации вы можете получить ее и обновить запись.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню