0

我想要一些关于我的代码的帮助。我已经在这个网站上搜索了已回答的问题,但不幸的是没有找到任何有效的方法。我正在做一个网站,您可以在其中编写、保存、删除和更新笔记。现在我正在尝试修复一个更新按钮,如果您可以使用其唯一 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 并更改注释并单击更新时,它会显示“注释已更新”,但数据库中的注释保持不变。我究竟做错了什么?

4

2 回答 2

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 开始支持)。如果您不确定要使用哪一个,请阅读这篇 SO 文章

于 2012-08-06T13:29:04.467 回答
0
$id = $_POST['id']

应该

$id = $_POST['id_number']

据我所知,您所指的不是任何名称为“id”的输入。

于 2012-08-06T13:22:30.753 回答