1

一括削除ボタンを作成しようとしています。管理者が削除したい行の量を指定できる入力フィールドを用意しようとしています。

これまでのところ、次のコードを使用して、入力フィールドで指定された金額を削除しようとしていますが、何も起こらず、エラー ログにもエラーはありません。

helper.php

function deleteall($all) {
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $query->delete()
    ->from('#__shoutbox');
    $db->setQuery($query, 0, $all);
    $db->query();
}

mod_shoutbox.php

if(isset($post['deleteall'])) {
    $all = $post['all'];
    modShoutboxHelper::deleteall($all);
}

default.php

<form method="post" name="deleteall">
    <input name="all" type="text" value="" />
    <input name="deleteall" type="submit" value="mass delete" />
</form> 

SQL クエリは問題なく、問題はdefault.phpの HTML に関係していると思いますが、 100% 確実ではありません。誰かが私が間違っているところを教えてもらえますか?

アップデート:

$postJoomlaコーディング標準を使用しているため、すでに定義されています。

4

3 に答える 3

1

以下の理由により、あなたがやろうとしていることは達成できないと思います。どの行を削除するかをどのようにデータベースに伝えることができますか? 明らかにフィルターが必要です。例: DELETE FROM table_name WHERE ID BETWEEN 1 AND 2999. ここでは、ID が 1 ~ 2999 の行のみが削除されます。

そうでなければ、あなたが望むのはLIMIT. 例: DELETE FROM table_name WHERE ID BETWEEN 1 AND 2999 LIMIT 1000. LIMIT削除する行を制限できます。

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
    [PARTITION (partition_name,...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

ここでは構文エラーはありません。間違っているのはロジックです。それがすべてを説明することを願っています。何か問題がありましたらお知らせください。

于 2013-01-01T10:28:09.093 に答える
0

投稿ハンドラーが正しくありません。$_POST['deleteall'] にする必要があります

于 2012-12-31T16:46:46.210 に答える
0

問題は、メソッドdeleteallがそのパラメーターを受け取っていないことです$all(何も受け取っていないため、クエリ クラスでは代わりに 0 が使用されます)。

于 2012-12-31T16:58:50.707 に答える