php - 在MySQL資料庫中,存儲多個複選框數據

  显示原文与译文双语对照的内容
80 3

我希望將多個複選框值存儲到資料庫中的一個欄位中。 ( 例如 1,24,56,100 ) 。 如果我想在查詢中調用變數,那麼我想知道我如何才能做到這一點,PHP如何從資料庫中讀取這些值?

基本上我創建一個博客應用程序( 為了娛樂體驗),我希望用戶能夠通過複選框改變每個博客帖子的可見性。 我知道你可以能在考慮為什麼我只是在每個博客上都有一個可以見性欄位。 我理解為什麼不推薦這樣做,但我不能想到它的他方法。 要進一步解釋: 我想將這個應用程序附加到一個已經建立的CMS,基本上我有一個博客文章。 如果用戶想在 3個不同頁面上使用相同的博客,但是只希望某些帖子在每個頁面上顯示。 所以這就是我現在困惑的原因。

时间: 原作者:

88 1

雖然我不喜歡保存數據,但這是你能做的,如果你真的想這樣做的話。 我建議你有一個不正常的table 並存儲你的vals

在HTML中,你可以使用類似於這樣的複選框( 考慮到你正在存儲某種類型的id )


<input type="checkbox" name="ids[]" value"1"/>


<input type="checkbox" name="ids[]" value"24"/>


<input type="checkbox" name="ids[]" value"56"/>


<input type="checkbox" name="ids[]" value"100"/>



你可以使用php一邊使用函數分解成字元串,如 below ( 考慮你正在做文章)


$ids = implode(",",$_POST["ids"]);



從資料庫讀取的地方,可以將值從資料庫轉換為 array,如下所示


$ids_array = explode(",",$row->ids);



我希望這有助於

原作者:
136 4

首先創建資料庫:


create table employee(id int(10) not null, name varchar(20), hobbie varchar(20),


 worked varchar(20), primary key(id));



創建一個類似這樣的html頁面:


 <!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


 <html xmlns="http://www.w3.org/1999/xhtml">


 <head>


 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>


 <title>Untitled Document</title>


 </head>



 <body>


 <body background="blue">


 <form action="check.php" method="post">


 Name: <input name="Name" type="text" id="Name"/><br/>


<br/>


 <br/>


 Which you do you want to likes?<br/>


 <input type="checkbox" name="Hobbies[]" value="Books"/>Books<br/>


 <input type="checkbox" name="Hobbies[]" value="Movies"/>Movies<br/>


 <input type="checkbox" name="Hobbies[]" value="Sports"/>Sports<br/>


 <input type="checkbox" name="Hobbies[]" value="Games"/>Games<br/>


 <input type="checkbox" name="Hobbies[]" value="Travelling"/>Travelling<br/> 



 worked: <input name="Worked" type="text" id="Worked"/><br/>


 <br/>



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


<input type="reset" name="reset" value="reset"/>



 </form>


 </body>


 </html>



然後我們做了 mysql connect.php


 <?php


 $server="localhost";


 $user="root";


 $password="";


 $database="empcheckbox";



 $link=mysql_connect($server,$user,$password) or die("the connection is terminated please check me!".mysql_error());


mysql_select_db($database,$link);


?>



之後,我們必須創建一個像這樣的check.php


<?php



if(isset($_POST['submit']))


{


 $name=mysql_real_escape_string($_POST['Name']);


$worked=mysql_real_escape_string($_POST['Worked']);


$hobb= $_POST['Hobbies'];


if(empty($hobb)) 


 {


 echo("<p>You didn't select any any hobby.</p>n");


 } 


 else 


 {


 $N = count($hobb);


 echo("<p>You selected $N Hobbies(s):");


 for($i=0; $i <$N; $i++)


 {


 $var1=$hobb[$i];


 include ('connect.php');


 $table ="INSERT INTO employee (name, hobbies, worked)".


"VALUES ('$name', '$var1', '$worked')";


 mysql_query($table) or die(mysql_error());


 $inserted_fid = mysql_insert_id();


 mysql_close(); 


 }



 echo"successfully uploaded!..";


 }


}


else


 {


echo"error please check ur code";


}



原作者:
97 1

完美的解決方案是將標準化表創建為 @OMG 和 @Michael. 註釋的標準化表

但這是你剛問的答案


$ids = implode(",", $_POST['ids']);



將這個存儲在MySQL表中。 你可以使用類似命令查詢表並使用分解來返回 array 中的id 。


$query ="SELECT * FROM <table> WHERE ids LIKE '%,2, %'";//get posts having id 2



$id = explode(",", $result->ids);



原作者:
...