簡體   English   中英

更新功能不能正常工作

[英]Update function does not work properly

在我的 php 代碼中,我面臨兩個問題。 代碼如下:

文件名:editevent.php

<?php 

    $server_name    = 'localhost';
    $username       ='root';
    $password       ='';
    $db_name        ='reminder';

    $connect_error  = 'Sorry, we\'re experiencing connection problems.';
    $con = mysql_connect($server_name, $username, $password);
    if(!$con){
        die($connect_error);
    } 
    mysql_select_db($db_name) or die($connect_error);
 ?>

<?php

    if (isset($_POST['update_event'])) {
        $update_query = "UPDATE calendar_event SET send_date = '$_POST[date]', send_time = '$_POST[time]', event_name = '$_POST[event_name]', message = '$_POST[message]', email = '$_POST[email]', phone_no = '$_POST[phone_no]' WHERE id= '$_POST[id]'";
        mysql_query($update_query, $con);
     } 

    $sql = "SELECT * FROM calendar_event";
    $mydata = mysql_query($sql, $con);
    while($record = mysql_fetch_array($mydata)){
?>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Add Event</title>
    <link rel="stylesheet" href="css/index.css">
    <link rel="stylesheet" href="css/addevent.css">
    <link rel="stylesheet" href="css/editevent.css">
</head>
<body>
    <form action="editevent.php" method="post">
        <ul>
            <div class="time_date">
                <li class="date">
                    Date: <br>
                    <input type="date" name="date" value="<?php echo $record['send_date']; ?>"/>
                </li>
                <li class="time">
                    Time: <br>
                    <input type="time" name="time" value="<?php echo $record['send_time']; ?>"/>
                </li>
            </div>

            <li>
                Event Name: <br>
                <input type="text" name="event_name" style="width: 285px;" value="<?php echo $record['event_name']; ?>"/>
            </li>
            <li>
                Your Message: <br>
                <textarea name="message" style="width: 285px; height: 100px;"><?php echo $record['message']; ?></textarea>
            </li>
            <div class="email_phoneno">
                <li class="email">
                    Email: <br>
                    <input type="email" name="email" style="width: 150px;" placeholder="example@email.com" maxlength="30"  value="<?php echo $record['email']; ?>">
                </li>
                <li class="phoneno">
                    Phone No: <br>
                    <input type="tel" style="width: 100px;" name="phone_no" value="<?php echo $record['phone_no']; ?>"/>
                </li>
            </div>
            <div class="update_delete_button">
                <li class="save_button">
                    <input type="submit" value="Save event" name="update_event">
                </li>
            </div>

        </ul>
    </form>
                    <li><a href="index.php">home</a></li>

</body>
</html>
<?php
break 1;
    }
    mysql_close($con);
 ?>

當我運行此代碼時,它顯示

***Notice: Undefined index: `id` in `C:\xampp\htdocs\window\editevent.php`
on line 19***

當我避免WHERE子句時,已更新完整的數據庫表。 我該如何解決?

注意: id 是我表中的一個自動遞增列。

在表單 TAG 中添加此代碼

<input type="id" type="hidden" style="width: 100px;" name="id" value="<?php echo $record['id']; ?>"/>

在從 $_POST 中提取值之前,您應該檢查它們是否存在。 您可以為此功能使用isset函數isset

一旦檢查 $_POST 是否正確設置。

使用以下 mysql 查詢字符串作為您的解決方案。

$update_query = "UPDATE calendar_event SET send_date = '" . $_POST['date'] . "', send_time = '" . $_POST['time'] . "', event_name = '" . $_POST['event_name'] . "', message ='" . $_POST['message'] . "', email = '" . $_POST['email'] . "', phone_no = '" . $_POST['phone_no'] . "' WHERE id= '" . $_POST['id'] . "'";

如果對此有任何疑問,請告訴我。

您看到此通知是因為 $_POST 中不存在索引“id”。 作為一個經驗法則,永遠記住:

  1. 始終檢查 $_REQUEST (POST/GET) 中是否存在該變量,即使用 array_key_exists 函數進行檢查。

    if(array_key_exists("id",$_POST){ // 代碼在這里}

  2. 始終檢查該變量是否具有值。 isset 函數用於此目的。

    if(isset($_POST['id']){ // 代碼在這里}

在您的場景中,您的更新表單沒有您在更新查詢中使用的引用“id”。

您必須在表單關閉之前添加以下 html:

<input type="id" type="hidden" style="width: 100px;" name="id" value="<?php echo $record['id']; ?>"/>

注意:在開發環境中打開所有錯誤和通知總是一個好習慣。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM