作業系統 - PHP如何運用核取方塊進行動態篩選 - 電腦

前往內容


PHP如何運用核取方塊進行動態篩選

資料表設計為

ID-----流水編號
NAME---名稱
S1-----分類1
S2-----分類2
S3-----分類3
S4-----分類4
S5-----分類5


在某個搜尋頁面用核取方塊利用勾選的方式進行分類的搜尋

EX

我要搜尋名稱的分類為分類1、分類3的項目

此時把分類1&3的核選方塊勾選,然後送出進行搜尋

請問在ACTION的頁面

用POST 取得到五種分類的值之後

有什麼好方法進行有效的搜尋呢?!

$a=$s1;
$b=$s2;
$c=$s3;
$d=$s4;
$e=$s5;

如果只有S1 S2 S3有被勾選

那該如何寫這段動態的SQL

讓查詢的內容顯示為

select * from table where s1=$a and s2=$b and s3=$c......?!

不知道有沒有先進們願意指導一下

感恩

************************************************************************

有點類似像


○ 商店 ○ 全新品
○ 有相片 ○ 二手品
○ 新刊登 ○ 一元起
○ 無底價 ○ 免運費
○ 直購價 ○ 固定價
○ 輕鬆付 ○ 輕鬆付刷卡


假設每個CHECKBOX都是一個資料欄位的話
像YAHOO拍賣那樣透過CHECKBOX的值去進行篩選查詢
用PHP的話該如何去進行篩選查詢呢?!
檢查瀏覽器有沒有送出那個核取方塊~
如果有~會有這個變數~
假設核取方塊的名稱分別為~
分類一
分類二
分類三
如果三個都有打勾送出~
在SERVER端會有這三個變數~
$_POST['分類一']
$_POST['分類二']
$_POST['分類三']
你只要檢查變數是否有被指定~
EX.

$sql = "Select * From db Where ";

$i = 0;

if (isset($_POST['分類一'])){
 $sql .= "分類一 = ".$_POST['分類一'];
 $i++;
}
if (isset($_POST['分類二])){
 if ($i > 0){
  $sql .=" and " ;
 }
 $sql .= "分類二 = ".$_POST['分類二'];
 $i++;
}
if (isset($_POST['分類三'])){
 if ($i > 0){
  $sql .=" and " ;
 }
 $sql .= "分類三 = ".$_POST['分類三'];
 $i++;
}
如果採用enum的型態欄位
用一個欄位來記錄

假設enum 欄位(商品,有相片,心刊登.......)

商品=1
有相片=2
心刊登=4
...=8
...=16


以此類推

如果你要查'商品' and '有相片'

1+2=3

可以用 select * from table where 欄位=3

這樣會比較好嗎?!?!


可是這樣要把checkbox的值存入資料欄位中



********************************
<form name="form1" method="POST" action="check1.php">
<input name="id" type="hidden" id="id">


姓名
<input name="name" type="text" id="name">


1
<input name="a[]" type="checkbox" id="a" value="1">
登山

2
<input name="a[]" type="checkbox" id="a" value="2">
電影

3
<input name="a[]" type="checkbox" id="a" value="4">
玩水

4
<input name="a[]" type="checkbox" id="a" value="8">
睡覺

<input type="submit" name="Submit" value="送出">
</form>



**********************************

該怎麼把取得的變數陣列加總儲存到enum的欄位中?!?!?!?!?!?!!?!?!
是用好像是該用foreach函數
可是不知道該怎麼去運用

有高手願意指點一下嗎!?!

感激不盡
你有這樣的想法很棒~
既然你已經有想法了~
怎麼不是測試看看了~
你就會知道你這樣是不可行的~

以你的例子來說~
如果全部打勾~
你在PHP上面拿$_POST['a[]']的值會是8~
以就是說~
瀏覽器只會送出最後一個值~
研究了好久還是研究不出來

就如同您說的

*********
以你的例子來說~
如果全部打勾~
你在PHP上面拿$_POST['a[]']的值會是8~
以就是說~
瀏覽器只會送出最後一個值~
**********


不知道怎樣才能把$_POST['a[]']的值加總儲存至資料表內

能否請高手們指點^^||

感恩
用$_POST['a'] 而不是 $_POST['a[]']

$_POST['a'] 返回的值是Array, 把Array內的值相加就是了...
****************
$a=array_sum($_POST['a']);
echo $a;
$name = $_POST['name'];
******************

後來透過array_sum終於將各選項的值加總

那麼存入資料表的時候

id int(10) 否 auto_increment
name text utf8_general_ci 是 NULL
a enum('1','2','4','8') utf8_general_ci 是 NULL



資料表這樣設計是對的嗎?!

感覺好像怪怪的

假設勾選1 AND 4
加總起來為1+4=5

但欄位好像只限制1,2,4,8這四個值 所以無法將數值存進資料表




想請問如果想用使用ENUM來進行多條件篩選的話

資料表的結構該如何設計呢?!

1頁 (共1頁) » 分享到

前往



廣告
廣告