对不起。简单的复制/粘贴错误。没有编程问题。
我的表单中的操作指向PHP file
正在执行SQL UPDATE
。
由于我的表单有一些read only
输入字段 - (不得更改)。
我的问题是表单有一些字段 - 这是POST而PHP不是预期的那些,基本上它们从未被使用过。
当我提交所有字段时,我的SQL查询失败(没有更新)。为什么呢?
如何告诉表单不要POST一些字段。只有读/写字段(那些没有readonly =“readonly”)?
如何告诉PHP不包含从表单中收到的所有值?
我是否应该在更新只读字段中包含(由于这些字段没有更改,因此不会进行更新。)
任何建议都非常感谢。
请注意:
更新
我的表单PHP(HTML结果更低):
<form action="update-news.php?updateID='.$id.'" class="form note-form" style="display: block;" method="post">
<label>ID</label>
<input name="id" type="text" value="'.$id.'" readonly="readonly" />
<br class="clr">
<label>Create by</label>
<input name="id" type="text" value="'.$usr.'" readonly="readonly" />
<br class="clr">
<label>Updated by</label>
<input name="id" type="text" value="'.$never_update_user.'" readonly="readonly" />
<br class="clr">
<label>Created</label>
<input name="id" type="text" value="'.$created.'" readonly="readonly" />
<br class="clr">
<label>Last Update</label>
<input name="id" type="text" value="'.$never_update.'" readonly="readonly" />
<br class="clr">
<br /><br />
<label>Live</label>
<input name="live" type="checkbox" ',($live ? 'checked="checked"':''),'/>
<br class="clr">
<label>Title</label>
<input name="title" type="text" value="'.$title.'" />
<br class="clr">
<label>Content</label>
<textarea id="content" name="content" type="text" rows="5" cols="75">'.$content.'</textarea>
<br class="clr">
<input type="submit" class="button" value="Update" id="submit" />
</form>
表单HTML:
<form method="post" style="display: block;" class="form note-form" action="update-news.php?updateID=6">
<label>ID</label>
<input type="text" readonly="readonly" value="6" name="id">
<br class="clr">
<label>Create by</label>
<input type="text" readonly="readonly" value="user@gmail.com" name="id">
<br class="clr">
<label>Updated by</label>
<input type="text" readonly="readonly" value="user@gmail.com" name="id">
<br class="clr">
<label>Created</label>
<input type="text" readonly="readonly" value="August 15, 2011, 2:24 pm" name="id">
<br class="clr">
<label>Last Update</label>
<input type="text" readonly="readonly" value="August 15, 2011, 2:25 pm" name="id">
<br class="clr">
<br><br>
<label>Live</label>
<input type="checkbox" checked="checked" name="live">
<br class="clr">
<label>Title</label>
<input type="text" value="How to compare two dates in php and echo newer one?" name="title">
<br class="clr">
<label>Content</label>
<textarea cols="75" rows="5" type="text" name="content" id="content">123</textarea>
<input type="submit" id="submit" value="Update" class="button">
</form>
UPDATE-NEWS.php
:
<?php
session_name('users');
session_set_cookie_params(2*7*24*60*60);
session_start();
define('INCLUDE_CHECK',true);
require 'connect.php';
require 'functions.php';
if(!$_SESSION['id']) {
header ("Location: index.php");
}
//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
//Sanitize the POST values
$id = clean($_POST['id']);
$usr2 = $_SESSION['usr'];
$live = (isset($_POST['live']))?1:0;
$updated = date("F j, Y, g:i a",time()+60*60);
$title= clean($_POST['title']);
$content = clean($_POST['content']);
//Create INSERT query
$qry = "UPDATE news SET usr2 = '$usr2', live = '$live', updated = '$updated', title = '$title', content = '$content' WHERE id='".mysql_real_escape_string($_POST['id']). "' ";
$result = mysql_query($qry);
echo mysql_error();
//Check whether the query was successful or not
if($result) {
header("location: notes.php");
exit();
}else {
die("Query failed");
}
?>
答案 0 :(得分:2)
当然 问题是您有多个name="id"
字段。只有最后一个将作为$_POST['id']
发布到服务器,这很可能是一个问题。
答案 1 :(得分:0)
是的,您只需设置您不想提交的该字段的disabled="disabled"
属性即可。