0

これが私が何を望んでいるのか明確でない場合は申し訳ありませんが、最善を尽くします。

私は現在 IT 実習生で、苦情データベースの作成を依頼されました。受け取った苦情の簡単な要約を作成するためだけに、テーブルを作成し、データをテーブルにエコーすることにしました。

<table border='1'>
<tr>
<th>CAN No</th>
<th>Contract No</th>
<th>Customer</th>
<th>Supplier</th>
<th>Date filed</th>
<th>Raised by</th>
<th>Details</th>
<th></th>
<th></th>
<th></th>
</tr>

<?php while ($db_field = mysql_fetch_assoc($result)) { ?>
<tr>
<td><? print $db_field['can_no'] ?></td>
<td><? print $db_field['contract_no'] ?></td>
<td><? print $db_field['customer'] ?></td>
<td><? print $db_field['supplier'] ?></td>
<td><? print $db_field['datemade'] ?></td>
<td><? print $db_field['raised_by'] ?></td>
<td><? print $db_field['details'] ?></td>
<td> View » </td>
<td> Edit » </td>
<td> Delete [x] </td>
</tr>

したがって、これは受け取った苦情の簡単な要約を作成するだけです。(いつか検索機能を追加します)。ここで追加したいのは、苦情全体を表ではなく、好きな形式で表示する方法です。たとえば、そのうちの 1 つの [View] で [view] をクリックすると、www.website.com/complaints?id=1 が表示され、完全な苦情が別のページに表示されます。

また、編集ボタンを使用して、データが既に入力されている同じページを表示して、すばやく編集できるようにするにはどうすればよいですか?

うまく説明できなくてすみません(;_;)

編集:私は自分がやりたいことをする方法を見つけ、それを完全に機能させました。私は、complaints.php を作成し、$_GET['id'] を使用してから、SELECT * FROM 苦情の WHERE id = '$id' を使用しました。

助けてくれたみんなに感謝します。

4

2 に答える 2

0

警告:

mysql_*関数を使用して新しいコードを記述しないでください。それらはもはや維持されておらず、コミュニティは非推奨プロセスを開始しています。赤いボックスが表示されますか?

代わりに、プリペアドステートメントについて学び、 PDOまたはMySQLiのいずれかを使用する必要があります。この記事では、使用するAPIの決定について詳しく説明します。PDOの場合、ここに優れたチュートリアルがあります。

これは非常に安全でない方法であるため、最初にSQLインジェクションについて詳しく読む必要があります。

表示部分では、テキストをに変更して、個々の苦情を表示する別のページを設定できます<a href="view_complaint.php?id= <?php print $db_field['id']; ?>">View</a>id(ここでは、データベースの設定にフィールドが含まれていると想定しています。

$result = mysql_query("SELECT * FROM complaints WHERE complaint_id = $id");
$row = mysql_fetch_assoc($result);

$rowこれで、希望するHTML形式で出力できるのと同じフィールドを持つ配列ができました。while行が1つしかないため、構成は必要ありません。

www.website.com/complaints?id=1これは実際には適切なURLではないため、少し危険です。設定に適切なURLを使用するかwebsite.com/complaints/1、WebサイトのルートでPHPファイルを使用しますwebsite.com/complaints.php?id=1

エディションと削除の場合、エディションのページをリロードしたくない場合は、AJAXが必要になります。これは、コンテンツを変更するためにブラウザがページをリロードする必要がないアプローチを設定するのに役立ちます。このためにはJavaScriptを知っている必要があります。その前に、より深いPHPにも精通し、既存のコードを保護してください

非非同期部分の場合。?id=1リクエストで同じパラメータを渡すことで、エディションを処理するページを作成できます。このサイト<input>には、データベースにあるフィールドと同じ数のフィールドがフォームに含まれている必要があります。すべて<input>のフィールドは、value="foobar"デフォルト値を設定する属性を取ります。今すぐテーブルにコンテンツを印刷する方法と同じように、ページロードでフォームにコンテンツを配置して、必要に応じて編集することができます。フォームが送信されると、UPDATE table SET field1=value1, field2=value2 WHERE id = $idクエリを使用してデータベースを更新します。

最初に、別のページとクライアントからの追加の要求を呼び出す必要がある場合でも、システムで編集と削除を処理できるようにしてから、非同期アプローチに進むことをお勧めします。

于 2012-08-08T11:47:56.893 に答える
0

これをグーグルで調べて

  • IDを渡し、クエリ文字列を介して取得する方法
  • データベースからデータを事前入力する方法

あの二人が助けてくれるはず

あなたの見解は echo('<a href="www.website.com/complaints?id=' . $db_field['details'] . '">View</a>');

ヘルプ: $_GET、$_POST

$id = (int)$_GET['complaint_id'];  // Where id MUST be an integer
$sql = "SELECT * FROM Complaint WHERE complaint_id = $id";
execute your query

それはおそらく悪いコードですが、説明するだけです。

SQL インジェクションについてもお読みください

于 2012-08-08T10:56:46.860 に答える