【发布时间】:2012-12-18 15:56:01
【问题描述】:
感谢您抽出宝贵时间查看此问题。
目前,我有一段代码可以创建四个标记为“奢侈品、品牌、零售商”和“B2B”的复选框。我研究了许多 PHP 方法来创建复选框,我觉得 implode() 函数是最简单且适合我的工作的。我查看了许多创建内爆的教程,但是,它们不符合我的标准,因为我希望数据库值反映在前端。目前在我的数据库中,implode() 有效,因此(例如),如果我检查“奢侈品”、“品牌”、“零售商”,然后按“提交”按钮,三个项目“奢侈品、品牌、零售商”将在该指定单元格中。看起来我的代码在后端工作,但这些是我的问题:
- 我不确定(尽管有多个 Google)如何检索存储在单单元格数组中的那些值,并将其选择为“已选择”(这将“选中”前端的框)李>
有人可以看看我下面的代码,让我知道似乎缺少/错误/错误的地方,以便我可以尝试修改吗?任何事情都将不胜感激,谢谢!
<?
if (isset($_POST['formSubmit2'])){
$category = mysql_real_escape_string(implode(',',$_POST['category']));
$accountID = $_POST['accountID'];
mysql_query("UPDATE Spreadsheet SET category='$category' WHERE accountID='$accountID'");
}
$query = mysql_query("SELECT * FROM Spreadsheet LIMIT $firstRow,$rpp");
while($row = mysql_fetch_array($query)){
// Begin Checkboxes
$values = array('Luxury','Brand','Retailer','B2B');
?>
<form name ="category" method ="POST" action ="" >
<?
echo "<input type = 'hidden' name = 'accountID' value = '" . $row['accountID'] . "' >";
for($i = 0; $i < count($values); $i++){
?>
<input type="checkbox" name="category[]" value="<?php echo $values[$i]; ?>" id="rbl_<? echo $i; ?>" <? if($row['category'] == $i) echo "checked=\"checked\""; ?>/>
<? echo $values[$i] ?><br>
<? } ?>
<input type ="Submit" name ="formSubmit2" value ="Submit" />
</form>
<? } ?>
【问题讨论】:
-
您可能希望对您的数据库设计采取更相关的方法,将它们存储为一个长字符串可能会在将来导致问题。
-
我还要指出 mysql_* 函数正在被弃用。试试 PDO 或类似的东西。
-
谢谢汤姆。这只是一个快速而令人讨厌的概念验证代码,但很好看!下次我重新写它时,我会抓住它。我进一步研究了 implode() 函数,看起来我需要用 in_array() 和explode() 转换数组。你能给我指出正确的方向吗?
-
in_array 用于检查一个值是否在数组中。尝试爆炸将您的数据库转换回数组。
标签: php html mysql checkbox implode