2

選択したIDデータをフォームに表示し、データベースで編集して更新したいと思います。データベースからデータを選択して入力タグに入れましたが、機能しません。助けてください!

<html>
<body>
<?
$db = mysql_connect("localhost", "root","");
mysql_select_db("db_ncs",$db);
$id = $_GET['s_id'];
if($id)
{
    $result=mysql_query("SELECT * FROM tbl_student WHERE s_id=$id");
    $row = mysql_fetch_assoc($result);
}
?>

<form method="post" action="update.php">
    Name:<input type="Text" name="name" value="<?php echo $row['s_name'];?>" /><br>
    Contact:<input type="Text" name="contact" value="<?php echo $row['s_contact'];?>" /><br>
    Address:<input type="Text" name="address" value="<?php echo $row['s_address'];?>" /><br>
    E-mail:<input type="Text" name="email" value="<?php echo $row['s_email'];?>" /><br>
    <input type="submit" name="update" value="Update">
</form>

<?
if(isset($_POST['update']))
    {
    $name = $_POST['s_name'];
    $contact = $_POST['s_contact'];
    $address = $_POST['s_address'];
    $email = $_POST['s_email'];
    $sql = "UPDATE tbl_student
            SET (s_name='$name', s_contact='$contact', s_address='$address', s_email='$email')
            WHERE s_id=$id";
    $res = mysql_query($sql);       
    if($res)
        {
            echo "Upadate Successfull!";
        }
        else
        {
            echo "Sorry!";
        }
    }

?>

</body>
</html>
4

5 に答える 5

2

IDを渡すのを忘れました。

<form>これをタグの間に追加します。

<input type="hidden" name="s_id" value="<?php echo $id;?>" />

また、メソッドの一貫性を保つ必要があります。フォームはを介してデータを送信しますが、を介してデータをmethod="get"要求します$_POST。また、適切な場所で「s_」を追加または削除して、入力名を要求した名前と一致させる必要があります。

于 2012-07-12T10:13:13.673 に答える
0

あなたが持っている形式で、あなたはあなたのPHPコードでmethod="get"使用します。$_POSTフォームを次のように定義してみてください。

<form method="post" action="update.php">

SQLクエリは次のようになります(引用符を追加):

$sql = "UPDATE tbl_student
        SET (s_name='$name', s_contact='$contact', s_address='$address', s_email='$email')
        WHERE s_id=$id";

後にこれを追加してみてくださいmysql_query

 $result = mysql_query($sql) or die(mysql_error());

関数を使用しないでくださいmysql_*。それらは維持されなくなります。MySQLiのPDOを使用してください。

于 2012-07-12T10:16:41.930 に答える
0

実際にはあなたの質問に対する答えではありませんが、私はあなたのコードのいくつかの省略を指摘する必要があります:

  • が設定されている場合$_POST['update']、それは他の変数も設定されているという意味ではありません。ユーザーがフィールドに何も入力しなかった場合は、空にすることができます。またはを使用して、すべての変数$_POSTまたは$_GET変数が設定されているかどうかを確認する必要があります。issetempty

  • あなたのコードはとても安全ではありません!クエリで使用する前に、すべての変数をエスケープする必要があります。そのために使用mysql_real_escape_string()します。strip_tags()また、エスケープと一緒に使用することをお勧めします。

于 2012-07-12T10:21:33.333 に答える
0

結果を得るために彼はを使用する必要はありません$row = mysql_fetch_assoc($result)か?

// Perform Query
$result = mysql_query($query);

// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}

// Use result
// Attempting to print $result won't allow access to information in the resource
// One of the mysql result functions must be used
// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row = mysql_fetch_assoc($result)) {
    echo $row['firstname'];
    echo $row['lastname'];
    echo $row['address'];
    echo $row['age'];
}

http://php.net/manual/en/function.mysql-query.php

上記は単なる例です。


アップデート:

$result=mysql_query("SELECT * FROM tbl_student WHERE s_id=$id");

$row = mysql_fetch_assoc($result); //  I think you have to add this line here, don't you?
?>



<form method="post" action="update.php">
    <input type="hidden" name="s_id" value="<?php echo $id;?>" />
    Name:<input type="Text" name="name" value="<?php echo $row['s_name'];?>" /><br>
    Contact:<input type="Text" name="contact" value="<?php echo $row['s_contact'];?>" /><br>
    Address:<input type="Text" name="address" value="<?php echo $row['s_address'];?>" /><br>
    E-mail:<input type="Text" name="email" value="<?php echo $row['s_email'];?>" /><br>
    <input type="submit" name="update" value="Update">
</form>

アップデート2:

更新しようとしているとき、そこにあるメソッド$id = $_GET['s_id'];はまだ「s_id」というパラメータを探していますが、HTTP GETを介して取得されますが、そうではありません。

簡単な回避策はこれかもしれません、 <form method="post" action="update.php?<?php echo $id;?>">

追加することを忘れないでください、

$id= $_POST['s_id'];$email = $_POST['s_email'];


アップデート3:

うーん、あなたはまだこれが必要で、<input type="hidden" name="s_id" value="<?php echo $id;?>" />追加することを忘れないでください、

$id= $_POST['s_id'];$email = $_POST['s_email'];

于 2012-07-12T10:22:39.983 に答える
0

フォームにはのようなフィールドがname="contact"ありますが、使用する値を取得しようとすると$_POST['s_contact']。これらは一致する必要があります。

フォームに非表示のs_idフィールドが必要な理由は、編集されたのと同じ行を更新するためです。UPDATEステートメントにはが含まれWHERE s_id=$idているため、この方法で元のIDを取得する必要があります。編集時にユーザーがIDを変更できないようにするため、非表示になっています。

于 2012-07-12T12:09:50.587 に答える