0

私はこれまでにこのコードを持っています:このフォームはクエリループ中に生成されます

 while ($row = mysql_fetch_assoc($result)) {
  echo "<tr>";
  echo "<td>" . $row['name'] . "</td>";
  echo "<td>" . $row['age'] . "</td>";
  echo "<td>" . $row['breed'] . "</td>";
  if($row['neuteredOspayed']=="1"){
  echo "<td>" . "neutered" . "</td>";
  }else
  echo "<td>" . "spayed". "</td>";
  echo "<td>" . $row['priceFee'] . "</td>";
  if($row['housebroken']=="1"){
  echo "<td>" . "yes" . "</td>";
  }else
  echo "<td>" . "no". "</td>";
  if($row['goodwithdogs']=="1"){
  echo "<td>" . "yes" . "</td>";
  }else
  echo "<td>" . "no". "</td>";
  if($row['goodwithcats']=="1"){
  echo "<td>" . "yes" . "</td>";
  }else
  echo "<td>" . "no". "</td>";
  echo "<td>" . $row['status'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

さて、すべての結果の横に「削除」というリンクを配置する方法はありますか?たとえば、ステータスフィールドの横にありますか?外観は次のとおりです。ここに画像の説明を入力してください

これを削除するには、どういうわけかレコードを見つける必要があると思います。私が必要としているのは、動物の名前をとることです。たとえば、テーブルから値「Sparky」を取得して変数に割り当てるにはどうすればよいですか?私が名前を持っている場合、私はチェックを行い、クエリを実行することができます魔女はレコードを削除します。

4

8 に答える 8

2

JavascriptとAJAXを使用する必要があります。

基本的に、セルに1行に1つずつボタンを配置し、クリックされたときに、削除するレコードのIDをAJAX経由でPHPスクリプトに戻し、データベースからレコードを削除します。クリックすると行も非表示になります。

生のXHRはせいぜい苦痛なので、jQueryの.ajax()を使用することをお勧めします。

HTTPはステートレスであるため、PHPだけでこれを行う方法はありません。Webページが読み込まれると、HTMLとPHPの部分が完了し、修正されます。連続したリクエストを行うには、Javascriptを使用する必要があります。

または、bcmcfcが指摘しているように、データベースからレコードを削除するスクリプトへのハイパーリンクを設定することもできます。

于 2012-09-07T11:12:43.203 に答える
2

whileループには次のようなものが必要です。

echo '<td><a href="path/to/delete.php?name='.$row['name'].'">Delete</a></td>';

ただし、テーブルの主キーを使用する方が名前よりも優れています-名前はデータベース内で一意ですか?PKがあり、それが次のように呼ばれていると仮定しますid

echo '<td><a href="path/to/delete.php?id='.$row['id'].'">Delete</a></td>';
于 2012-09-07T11:13:54.243 に答える
2

Phpはページ生成用であり、一度そのテーブルを生成すると、それを変更することはできません。ただし、削除する行名を指定して新しいgetリクエストを作成することはできますが、このパラメーターを考慮してサーバーのphpコードを変更する必要があります。

私によると、最良の方法はjavascriptを使用することです。つまり、各行にtd idを割り当ててから、その行を削除する単純な関数を作成します。

于 2012-09-07T11:15:46.567 に答える
1

フォームを送信して、このアクションを実行する必要があります。

<input type="submit" name="submit" value="Delete" />

送信後、フォームはいくつかのページにリダイレクトされます。そのページでは、投稿されたすべての値を取得しました。その点で、レコードIDを使用してレコードを削除できます。それ以外の場合は、適切なレコードの名前を使用します。

$query = "DELETE FROM table_name WHERE name='$_POST['name']'";

                         (or)

$query = "DELETE FROM table_name WHERE id='$_POST['id']'";

この実行後、URLをそのページにリダイレクトする必要があります。

                          (or)

<a href="delete.php?id='.$row['id'].'">Delete</a>

このファイルでは、このように書く必要があります...

$id = $_REQUEST['id'];
$query = "DELETE FROM table_name WHERE id='$id'";
于 2012-09-07T11:17:36.870 に答える
1
//Add this form before the end of the while loop

    <form action="#" method="post">
    <input type="hidden" name="name" value="<?php echo $row['name']?>">
    <input type="submit" name="delete" value="delete">
    </form>

//Add this at the end of the coding

<?php

    if(isset($_POST['delete']))
    {
    //database connection
    $sql="DELETE FROM `table_name` WHERE `name`='{$_POST['name']}'";
    $queryEXE=mysql_query($sql);
    }

?>
于 2012-09-07T11:37:25.110 に答える
0

「elemID」属性を各に追加し、<tr>各行に個別の新しいクラス(たとえば、elem + the id)を追加します。

<tr elemId="12" class="elem12">...</tr>

次に、[削除]リンクの場合、AJAXを使用して、DBから行を削除するページを呼び出し、elemIDを引数としてこの関数に渡します。

function deleteRow(thisElemID) {
 $.ajax({
  url: yourURL,
  data: {'elemID', thisElemID },
  success: function() {
       $('.elem'+thisElemID).remove();
  }
 });
}

$.ajaxの詳細はこちら

于 2012-09-07T11:15:15.313 に答える
0

テーブルに別のセルを作成し、そのボタンのajaxonclikを呼び出します。ajax呼び出し内で、特定の行を削除します

于 2012-09-07T11:17:20.167 に答える
0

各行に「削除」フォームを使用します。

最善の方法は、行ごとに送信ボタンのあるフォームを追加することです。各フォームには、削除するレコードのID(または必要に応じて名前)を含む非表示のフィールドがあります。フォームのメソッドを「post」に設定します。

理由:

  • 削除リンク(a href)は、簡単にインデックスを作成してブックマークすることができます。Googleが立ち寄ったり、ユーザーがペットの履歴を閲覧したりするたびにペットが削除されることは望ましくありません。
  • method ='get'フォームを使用すると、URLがブックマークされたり、履歴に表示されたりする場合もあります。フォームを使用するメソッドは、Javascriptがまったくなくても機能します。

それとは別に、

  • すべてのソリューション(フォームとリンクの両方)は、ユーザーエクスペリエンスを向上させるために、Ajaxを使用したソリューションに簡単に「アップグレード」できますが、それは常に余分なものであり、コア機能はありません。
  • 必要に応じて、送信ボタンをリンクのようにスタイル設定できます。
  • このソリューションを実装する場合は、 post-redirect-getパターンを使用してください。

つまり、データベースから実際にレコードを削除したいとします。HTMLを変更したいだけの場合は、Javascriptソリューションの方が理にかなっています。

于 2012-09-07T11:22:03.407 に答える