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 = $_POST['id']

する必要があります

$id = $_POST['id_number']

私の知る限り、「id」という名前の入力を参照しているわけではありません。

于 2012-08-06T13:22:30.753 に答える
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の出力をテキストエリアのコンテンツに設定します。

次に、 getNoteInfo.php(擬似コード)で作業しましょう。

<?php
    $noteId = $_POST['noteId'];

    $noteText = // retrieve note text from database where note ID = $noteId

    echo $noteText;

ここで、ユーザーがをクリックしたときにUpdate、IDが選択されていることを確認します。IDが選択されている場合は、その行を更新します。IDが選択されていない場合、テキストエリアにテキストがある場合は新しい行を挿入します。

注:関数の使用を停止する必要がありmysql_*ます。それらは非推奨になっています。代わりに、PDO(PHP 5.1以降でサポート)またはmysqli(PHP 4.1以降でサポート)を使用してください。どちらを使用するかわからない場合は、このSOの記事をお読みください

于 2012-08-06T13:29:04.467 に答える