2017-10-17 71 views
0

目前篩選的MySQLi,我有一個顯示某些帖子的網頁。新聞帖子,博客帖子等。我想實現的是有複選框,以便用戶可以檢查,無論他想看什麼類型的帖子。與複選框

我應該例如能夠檢查關'news'和'talking points'只看到帖子與這些類別,而不是看帖與類別'blog'的實例。

我當前的查詢看起來像這樣(得到的所有帖子,無論類別)。我相信一些jQuery應該參與,但我不確定。如何將複選框與查詢連接起來?

任何人都可以幫助我嗎?

$sql = "SELECT * FROM articles ORDER BY id DESC"; 

編輯

我已經試過了,但每當我使用複選框,上什麼都沒有,但我沒有得到一個錯誤?

我的代碼:

<?php 
 
if(isset($_POST['submit'])){//to run PHP script on submit 
 
if(!empty($_POST['check_list'])){ 
 
$categories = $_POST['check_list']; 
 
// Loop to store and display values of individual checked checkbox. 
 
foreach($categories as $selected){ 
 
echo $selected."</br>"; 
 
} 
 
} 
 
} 
 
?> 
 
<br /><br /> 
 
<?php 
 

 
if(!empty($_POST['check_list'])){ 
 
\t $sql = "SELECT * FROM articles ORDER BY id DESC WHERE `category` IN (".implode(',',$categories).")"; 
 
} else { 
 
\t $sql = "SELECT * FROM articles ORDER BY id DESC"; 
 
}

回答

0

每個複選框應該有一個值。當你提交你的表單(可能是$ _POST)時,你會在後端看到選中的複選框。您可以從本教程啓發:https://www.formget.com/php-checkbox/

重要 - 你應該在你的SQL查詢中使用它之前篩選表單數據。你可以從這裏啓發:http://php.net/manual/en/function.filter-input.php

你應該在SQL查詢中使用它之前準備的變量:

$unsafe_variable = $_POST["user-input"]; 
$safe_variable = mysql_real_escape_string($unsafe_variable); 

現在你知道哪些複選框被選中,您需要更改SQL查詢,以便由他們過濾。

,所以我想複選框值是數字(代表的ID)。所以,你將有一個名爲$ IDS一個數組將包含所有選中的複選框。您的mysql查詢將變成類似於:

$sql = "SELECT * FROM articles WHERE `id_category` IN (".implode(',',$ids).") ORDER BY id DESC"; 
+1

您應該避免發佈允許直接SQL注入的不安全代碼。 –

+0

感謝您的觀察。我想他會在使用它們之前過濾$ _POST變量。我沒有發佈任何例子,我正確使用$ _POST ['var'] ..所以你的評論是毫無意義的。 – Pascut

+0

也感謝downvote .. – Pascut