我对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
$('#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。
祝你好运。