使用PHP和MySQL编辑表单:获取ID的最佳方式

时间:2014-01-19 15:39:32

标签: php mysql sql forms

我有一个MYSQL表,每行都有编辑和删除链接。编辑链接转到edit_patient.php,其中包含一个表单(实际上是最初用于将患者插入数据库的表单的副本)。经过几次尝试后,脚本正在运行,虽然我猜它可以改进(实际上,当我提交编辑时,我会注意到“Undefined index:id”。该ID通过GET过程传递给edit_patient.php文件。相关代码如下:

// Check for a valid user ID, through GET or POST:
if ( (isset($_GET['id'])) && (is_numeric($_GET['id'])) ) { // From view_patient.php
$id = $_GET['id'];

} elseif ( (isset($_POST['id'])) && (is_numeric($_POST['id'])) ) { // Form submission.
$id = $_POST['id'];

} else { // No valid ID, kill the script.
echo '<p>Sorry, it is not possible to update patient info at this time</p>';
include ('../elements/layouts/footer.php'); 
exit();
}

并且,经过一些清理并检查提交的值:

if($action['result'] != 'error'){    



        // Make the query:
$q = "UPDATE `demographics` 
              SET lastname='$lastname', firstname='$firstname', clinic='$clinic',     sex='$sex', dob='$dob', age='$age', 
                  disease_1='$disease_1', disease_2='$disease_2', disease_3='$disease_3', address='$address', city='$city', country='$country', 
                  zip='$zip', phone_1='$phone_1', phone_2='$phone_2', phone_3='$phone_3',  email_1='$email_1', email_2='$email_2', 
                  physician='$physician', notes='$notes' 
              WHERE dem_id=$id   
              LIMIT 1";            

        $r = @mysqli_query ($db_connect, $q);

        if (mysqli_affected_rows($db_connect) == 1) { // If it ran OK.
                            // Tell the user we have edited patient data successfully                    
                $action['result'] = 'success';
                array_push($text,'Patient data have been updated on databank');   


    }else{

        $action['result'] = 'error';
        array_push($text,'Patient data could not be changed on databank. Reason: ' . 
                            '<p>' . mysqli_error($db_connect) . '<br /><br />Query: ' . $r . '</p>');


    } // End of if (empty($errors)) IF.
} // End of if (empty rows))  

好的,到目前为止一切顺利。现在,为了显示已插入的数据,我运行另一个查询:

// Retrieve the user's information:
$q = "SELECT lastname, firstname, clinic, sex, dob, age, disease_1, disease_2, disease_3, address, city, country, zip, phone_1, 
         phone_2, phone_3,  email_1, email_2, physician, notes 
  FROM `demographics` 
  WHERE dem_id='".$_GET['id']."'";      
$r = @mysqli_query ($db_connect, $q);

if (mysqli_num_rows($r) == 1) { // Valid user ID, show the form.

// Get the user's information:
$row = mysqli_fetch_assoc ($r);

// Create the form:

这里,我不理解的关键行是WHERE dem_id='".$_GET['id']."'"; - &gt;如果我保持原样,脚本运行几乎没问题,但我得到一个未定义索引ID的通知。

但是,当我在第一个查询中替换WHERE dem_id=$id";时,脚本会出现致命错误undefined variable: id

最后,要提交表单,我使用以下命令:     “/&gt;工作正常,但是当我使用它时它无效:     “/&gt;

任何人都可以帮助我理解为什么以及如何纠正这个问题,我宁愿只能使用$id(我相信是直截了当且简单的)但是由于某种原因不能正常工作正如所料。最后,我希望能够在要编辑的表格中报告使用单选按钮和下拉(选择)菜单插入的数据。任何有关这方面的建议将不胜感激!

1 个答案:

答案 0 :(得分:0)

请确保您的edit_patient.php中的提交按钮后更新了您的特定记录?如果它工作,然后在下一页显示..?它是Display.php(即所有记录显示页面)?请先指定,我真的可以帮助您解决问题。