0

私はPHPにかなり慣れていないので、この質問がわいせつに初心者である場合はご容赦ください...

データベースからの150近くのレコードをリストするページがあります。ユーザーが一度に1つのレコードのみを削除できるようにしたい(チェックボックスなし)。各名前の横に削除ボタンを配置したいのですが、ユーザーがそれをクリックすると、ページが更新され、上記の更新されたリストと「%Name%が正常に削除されました」という成功メッセージが表示されます。(ここで、%Name%は削除した実際の名前です)

私の質問は:フォームでこれを行うことはできますか?もしそうなら、どのフォーム要素に名前と削除ボタンを割り当てますか?

または、削除ボタンをアンカー要素として設定し、URLを削除要求を処理できるページに設定してから、ユーザーをリダイレクトする必要がありますか(「成功」メッセージを送信できる唯一の方法があります)戻って、私が知っているのはSession変数を介したものです、それは大丈夫ですか?)

または、私が知らない完全に他の方法はありますか?

フィードバックをいただければ幸いです。ありがとう

4

5 に答える 5

1

なぜそれはa/oneフォームでなければならないのですか?送信ボタンの代わりに、リンクを使用してhref = "#?job = delete&name = nameのような単一のエントリを削除できます。別の解決策は、エントリごとにフォームを作成することです。

于 2012-04-20T15:19:47.850 に答える
1

PHPセッションは、ユーザーに保持され、Cookieを介して追跡されるサーバー側のデータです。特に送信しない限り、データはユーザーに送信されません。

http://www.php.net/manual/en/session.examples.basic.php

ページ上のレコードごとに個別のフォームを作成することも、JavaScriptを使用してレコードの1つをクリックして送信することで入力されるフォームを作成することもできます。ページをリロードしてユーザーに成功したかどうかを伝えるか、ajax経由で送信してページの一部を更新することができます。

http://www.w3schools.com/ajax/ajax_intro.asp

ストレートJavaScriptや、jqueryやmooツールなどのjs上で開発されたものを使用して、作業を簡単にすることができます。jqueryのajax関数に関するデータを次に示します。

http://api.jquery.com/jQuery.ajax/

名前と削除まで。削除は、入力、ボタン、画像など、何でもかまいません。名前は、名前を送り返す削除済みレコードのユーザーIDにするか、フォームの一部から取得して、削除されたレコードをユーザーに表示します。

これを行うにはいくつかの方法があります。

于 2012-04-20T15:25:33.820 に答える
1

両方の方法で実行できます...ここで重要な概念は、データベースにidのような一意のフィールドがあることです。たとえば、データベーステーブルにid、name、username、passwordフィールドがあるので、以下の両方の方法を見てください。

1.ハイパーリンクを使用する

<?php
mysql_connect("fostname","username","password");
mysql_select_db("database_name");
$q = mysql_query("SELECT * FROM tbl_name");
if(mysql_num_rows($q)>0)
{
echo"<table>";
echo "<tr><td>name</td><td>action</td></tr>";
while($name = mysql_fetch_assoc($q))
{
?>

<tr><td><?php echo $name['name'];?></td><td><a href="delete.php?id=<?php echo $name['id'];?>">Delete</a></td></tr>
<?php
}

echo "</table>";
}
?>

これは、リストページで行うことです。ハイパーリンクで定義されているパス上にある必要があるdelete.phpを見てください。

delete.php

<?php
mysql_connect("fostname","username","password");
mysql_select_db("database_name");
$id = $_GET['id'];
$q = mysql_query("delete from tbl_name where id = '$id'");
header("Location: list.php");
?>

2.フォームの使用

<?php
    mysql_connect("fostname","username","password");
    mysql_select_db("database_name");
    $q = mysql_query("SELECT * FROM tbl_name");
    if(mysql_num_rows($q)>0)
    {
    echo"<table>";
    echo "<tr><td>name</td><td>action</td></tr>";
    while($name = mysql_fetch_assoc($q))
    {
    ?>

    <tr><td><?php echo $name['name'];?></td><td><form action='delete.php' method='post'> <input type='hidden' value='<?php echo $name["id"];?>'></form></td></tr>
    <?php
    }

    echo "</table>";
    }
    ?>

delete.php

<?php
    mysql_connect("fostname","username","password");
    mysql_select_db("database_name");
    $id = $_POSTs['id'];
    $q = mysql_query("delete from tbl_name where id = '$id'");
    header("Location: list.php");
    ?>

(note: list.php is the page where you list all the info)

于 2012-04-20T15:26:17.547 に答える
0

データを含むページ(たとえばA)を使用できます。

あなたがそれを持っているとき、あなたは各要素のボタンにリンクを「アンカー」することができます(それを識別するためのコスタムIDを割り当てます)。ボタンをクリックしたら、組み込みの配列$_GETに、消去したレコードのIDを追加します(明らかに、消去する必要があります)。これで、同じページにリダイレクトできます(A)。

このページ(初期データがあるページと同じページ)で、$_GET追加したフィールドを確認します。その場合は、削除後にそこに来て、メッセージを表示できることを意味します。それ以外の場合は、ここに入るのは初めてなので、何も表示する必要はありません。

于 2012-04-20T15:19:06.633 に答える
0

ここを参照してください:http ://www.javascript-coder.com/javascript-form/javascript-form-submit.phtml

非表示のフィールドがあり、送信ボタンがないフォームを1つ作成すると、フォームが送信されると、指定された値の行が削除されます。次に、すべての行をエコーするときに、それぞれの横にある送信ボタンを「submitForm(x)」のオンリックでエコーアウトします。ここで、「X」は、データベースで削除する行を決定できる値です。

于 2012-04-20T15:20:16.547 に答える