我想帮助我的代码。我已经在这个网站上搜索了已回答的问题,但遗憾的是没有找到任何有用的东西。我正在建立一个网站,您可以在其中编写,保存,删除和更新笔记。现在我正在尝试修复更新按钮,您可以使用其唯一ID更改已发布的注释。更新按钮位于与备注不同的页面上,您可以使用显示数据库表中现有ID的下拉菜单选择已发布备注的ID。您选择它,写一个新笔记,然后单击更新。
这是我目前的代码:
<li id="id_number"><label>ID number: <select name="id_number">
<option value =" ">Select number</option>
<?php $query = "SELECT * FROM notes";
$result2 = mysql_query($query);
while ($row = mysql_fetch_array($result2)) {
$id = $row ['id'];
$select = "";
if ($id == $idID2) {
$select = "selected" ;
}
?><option <?php print $select ?> value="<?php print $id; ?>"><?php print "$id";
?></option><?php
}
?>
</select>
</label></li>
<li id="note">New note:</li>
<li id="note"> <textarea rows="10" cols="30" name="note" value="<?php print $note;?>"/></textarea></li>
<li id="send"><input type="submit" name="submit" value="Update!"/></li>
</ul>
</form>
<?php
$id= $_POST ['id'];
$subject= $_POST ['subject'];
$note= $_POST ['note'];
?>
<?php
if (isset($_POST['submit'])) { //validates the data
$error="0";
if ( $note == "" ) {
$error++;
$wrong .= "<p> You forgot to write a new note.</p>";
}
if ($error > 0) {
print "<p><strong>You have made these errors:</strong></p>";
?>
<?php print $wrong; ?>
<?php
}
//if no errors
else {
$note = mysql_real_escape_string($note);
$note = htmlspecialchars($note);
$id = mysql_real_escape_string($id);
$id = htmlspecialchars($id);
$date = date("j/n, Y, H:i");
$query = ("UPDATE notes SET note='$note' WHERE id='$id'");
$result = mysql_query($query) or die (mysql_error());
if ($result) {
print "<p>Note updated!</p>";
}
}
}
?>
选择现有ID并更改注释并单击更新时,会显示“注释已更新”,但数据库中的注释保持不变。 我做错了什么?
答案 0 :(得分:0)
$id = $_POST['id']
应该是
$id = $_POST['id_number']
据我所知,你并不是指任何名为“id”的输入。
答案 1 :(得分:0)
而不是回答“我做错了什么?”我要回答“我怎么能这样做?”
您的界面设置方式不直观。下拉列表应包含有关注释的信息(此处ID足够),当用户从下拉列表中选择注释时,您的文本输入应填充已存在的注释。如果从下拉列表中未选择任何笔记ID,并且用户单击“更新”,则系统应插入新的笔记记录(如果文本区域包含内容)。
那么,我们该怎么做呢?首先让我们设置我们的表单:
<form action="" method="post">
<select id="noteIds" name="noteId">
<option value=''>Select a Note</option>
<option value='1'>1</option>
<option value='2'>2</option>
.
.
.
</select> <br />
<textarea name="noteContents" id="noteContents"></textarea><br />
<input type="submit" value="Update" />
</form>
现在我们已经设置了表单,我们可以使用jQuery控制元素的行为:
<script language="javascript" type="text/javascript">
$("#noteIds").on('change', function() {
$.post("getNoteInfo.php", {
noteId: $(this).val()
}, function(data) {
$("#noteContents").html(data);
}
);
});
</script>
上面的代码会将 geNoteInfo.php 的输出设置为textarea的内容。
接下来让我们使用 getNoteInfo.php (伪代码)。
<?php
$noteId = $_POST['noteId'];
$noteText = // retrieve note text from database where note ID = $noteId
echo $noteText;
现在,当用户点击Update
时,请检查是否已选择ID。如果选择了ID,请更新该行。如果未选择ID,则在textarea中有文本时插入新行。
注意:您应该停止使用mysql_*
功能。他们被弃用了。而是使用PDO(从PHP 5.1开始支持)或mysqli(从PHP 4.1开始支持)。如果您不确定使用哪一个,read this SO article。