如何使用文本框更新数据库,以便在用户单击';更新';然后实施这些更改


How to update a database using textboxes so when a user clicks 'update' the changes are then implemented

我对PHP&MySQL,现在我有一个网页,里面有几个文本框,可以显示我数据库中的数据。我想知道我将如何通过更改文本框来更新数据,这样当用户单击"更新"时,这些更改就会在数据库中实现。

目前我有以下代码:

<?php
$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("booking", $con);
$result = mysql_query("SELECT * FROM tblcompany");

$compDetails = mysql_fetch_array($result);

?>

下面是一些HTML:

<div class="cp-controls-lrg left">
    <p class="controls-margin">Company Name</p>
    <input type="text" class="input-txt-med" value="<?php echo $compDetails['CompName'] ?>" id="txt-config-fax" value="" size="20">
</div>
<div class="cp-controls-lrg left">
    <p class="controls-margin">Company URL</p>
    <input type="text" class="input-txt-med button-space2" value="<?php echo $compDetails['CompURL'] ?>" id="txt-config-email" value="" size="50">
</div>
<div class="cp-button2 config-but-space right">
    <button name="btn-config-done" id="btn-config-done" class="btn-sml ui-button ui-state-default ui-button-text-only ui-corner-all btn-hover-anim btn-row-wrapper right cp-btn-margin">Done</button>
    <button name="btn-config-update" id="btn-config-update" class="btn-sml ui-button ui-state-default ui-button-text-only ui-corner-all btn-hover-anim btn-row-wrapper right cp-btn-margin">Update</button>
</div>

任何帮助都将不胜感激!

我从标签中假设您希望使用AJAX来实现这一点。

我会首先尝试通过使用POST将表单张贴回来进行更新。将HTML代码放入form标记中,并尝试将数据POST回PHP页面。

这里只有一个关于如何做到这一点的例子(谷歌/必应是你的朋友):

http://www.tizag.com/phpT/forms.php

http://www.freewebmasterhelp.com/tutorials/phpmysql/4

然后按照上面的建议查找Insert和Update语句,并尝试对您的数据执行同样的操作。

AJAX的工作方式类似,服务器端有一个处理器,唯一的区别是表单不是通过POST(页面重载)提交的,而是使用JavaScript提交的。

我还想研究一下jQuery库,为您做AJAX回发。

HTH

jQuery非常适合ajax。您可以在javascript文件whatever.js.中使用类似的内容
$('#btn-config-update').click(function () {
    $.ajax({
        type : 'POST',
        url : 'http://whatever.com/handler.php',
        dataType : 'json',
        data: {
            companyname : $('#companyFieldID').val(),
            url : $('#companyURLID').val(),
        },
        success: function (data) {
            if (data.status == "Success") {
                $('#id_of_div_to_replace_markup').html(data.markup);
            } else if (data.status == "Error"){
                $('#optional_error_markup_container_div').html(data.markup);
            } else {
                  $('#optional_error_markup_container_div').html("<span id=formError>Unexpected Error</span>");
            }
        }
    });
return false;
});

这里需要注意的事项。在输入标记字段中使用id="whateverid"而不是class="whateverclass",这样您就可以使用上面看到的.val()语句从输入字段中获取数据。jQuery中的#references指的是一个唯一的id。

返回false也会阻止页面刷新。现在是PHP方面。

$sql_error_markup = "<h1>An unexpected error has occured.  Please try again later.</h1>";
$success_markup = "<h2><p>Database has been updated!</p></h2>";
$companyname = mysql_real_escape_string($_POST["companyname"]);
$url = mysql_real_escape_string($_POST["url"]);
//use your connection logic to get $con
$sql="INSERT INTO tablename (company_field_name, url_field_name)";
$sql.= " VALUES('$companyname','$lastname','$email')";
if (!mysql_query($sql,$con)) {
    $return['markup'] = $sql_error_markup;
    $return['status'] = "Error";
    echo json_encode($return);
    die('Error: ' . mysql_error());
}
mysql_close($con);
$return['status'] = "Success";
$return['markup'] = $success_markup;
echo json_encode($return);
?>

需要注意的是echo json_encode(数组)将正确响应ajax调用。这个ajax示例可以使用任何带有id的东西的html方法来交换标记(在这个示例中不是类)。mysql_real_sescape_string将有助于防止注入攻击。对于这种形式来说是非常必要的。不要忘记包含jquery.versionwhatever.js来使用上面看到的$references。

祝你好运。