2011-08-05 19 views
1

私は自分のニュース投稿システムを終了しました。私はニュース削除システムを作るために助けが必要です。データベースレコードをチェックボックスで削除しますか?

今、私はこのコードを使って、各投稿IDとタイトルをテーブルの横にあるチェックボックスと同様に読み込みます。

<?php 

$news = mysql_query('SELECT `id`,`title` FROM news'); 
if (!$news) 
{ 
    exit('<p>Error retrieving news from database!<br />'. 
     'Error: '.mysql_error().'</p>'); 
} 

while ($new = mysql_fetch_array($news)) 
{ 
    $id = $new['id']; 
    $title = $new['title']; 

    echo "<tr style='background: #3D3D3d; width: 400px; font-family: Century Gothic; font-size: 15px;'>"; 
    echo "<td style='padding-left: 5px'><input type='checkbox' name='id' value='$id' /></td>&nbsp;&nbsp;&nbsp;<td style='padding-left: 15px'>$id</td>&nbsp;&nbsp;&nbsp;<td style='padding-left: 15px'>$title</td>"; 
    echo "</tr>"; 

} 
?> 

チェックボックスを使用してIDごとに各データベースレコードを削除する方法を知りたいと思います。

+0

ロジックとHTMLを分離してください。そのループでは、チェックボックスの値をチェックすることができます。チェックボックスがオフの場合は、このIDのレコードを削除します。入力するには、フォーム要素が必要です。本とマニュアルを読んで、あなたのPHPの知識はこの時点で0に近いです。 –

答えて

-1

今のところ、テーブルの行のみを作成しているようですが、テーブルの要素内にあると仮定します。このテーブルがフォーム要素内にある場合は、送信時にチェックボックスをオンにしてすべてのレコードを削除することもできます。

フォームのアクションリファレンスでPHPのisset関数を使用して、チェックボックスが設定されているかどうかを確認し、foreachループを実行する必要があります。このような何か:

<?php 
    foreach($_POST as $key =>$value){ 
     if(isset($_POST[$key])){ 
       $value = mysql_real_escape_string($value); 
       mysql_query("DELETE FROM table WHERE id = $value"); 
     } 
    } 
?> 
+0

-1は、例のコードで尊重しています。 –

+0

これは、単にisset関数を使用する方法と、ポスト変数の間を反復する方法を説明するだけで、質問者が自分のやり方で使うことになりました。 – Joey

+1

誰かが 'id = 0; DROP TABLEは非常に重要なテーブルです。 – gnud

2

まず私は、データがあなたが関係なく、エントリが持っているかほとんど重要、それを呼び出していないしなければならない何らかの理由で保存されているだけのように、削除の上にアーカイブシステムをお勧めします。その(CSSファイルやCSSスクリプトにすべてのスタイル

  • とり、スタイルを設定するには、クラスと IDを使用します。

    アイデアは、それが読みすることが容易になりますようにコードを分割することですあなたのコードを読みにくくビット)

  • しているSQLプロシージャは、あなたがこれまでに私のアイデアを追加する

する必要がある場合は何か他のものにPHPから変更することがあなたのコード ができるようにするためにSQLデータを管理するために呼び出しますコード

<?php //deletenews.php 
//.... 
$result = $mysql_query("Call Delete_news_Entry($id)"); 
if (!$result) 
{ 
    die("Error deleting record from news" . mysql_error); 
} 

//.... end of php 
?> 

SQLプロシージャ

DELIMITER $$ 

DROP PROCEDURE IF EXISTS $$ 
CREATE PROCEDURE DB.Delete_news_entry(in_ID INTEGER) 
BEGIN 
    DELETE FROM news WHERE id=in_ID; 
END $$ 
DELIMITER ; 

(あなたはそれになりたい場合は、ライブの上にボタンを提出) JavaScriptの

<Script type='text/javascript'> 
//depends on jquery 
function deletenews(id) 
{ 
    var spanid = "#span"+id; 
    $.get("deletenews.php", 
      null, 
      function(){ 
       Alert("Complete") //this is more or less for you to put your required code here 
       $(spanid).hide(); 
      }, 
      "html") 
      .error(function(){ 
       Alert("error") // for your own code to go here 
      }); 
} 
</script> 

申し訳ありませんが、ちょうどあなたのコード

//での変更あなたのPHPコード、イベント、onclickまたはonchangeを試して削除をトリガーする

echo "<span id='span$id'><td class='left'><input type='checkbox' name='id' value='$id' onclick='deletenews($id)' /></td><td class='left'>$id</td>&nbsp;&nbsp;&nbsp;<td class='left'>$title</td></span>"; 

すべてを1部にすると読みやすくなります。

私はずっと長い間自分のコードを壊してしまいました。さらに、PHPコード1000行以上ではなく、すべてのファイルがどのように関連しているかのマップを描いています。

+0

真夜中。 – thebtm

関連する問題