【问题标题】:How to retrieve imploded array from a cell in an MySQL database through PHP如何通过 PHP 从 MySQL 数据库中的单元格中检索内爆数组
【发布时间】:2012-12-18 15:56:01
【问题描述】:

感谢您抽出宝贵时间查看此问题。

目前,我有一段代码可以创建四个标记为“奢侈品、品牌、零售商”和“B2B”的复选框。我研究了许多 PHP 方法来创建复选框,我觉得 implode() 函数是最简单且适合我的工作的。我查看了许多创建内爆的教程,但是,它们不符合我的标准,因为我希望数据库值反映在前端。目前在我的数据库中,implode() 有效,因此(例如),如果我检查“奢侈品”、“品牌”、“零售商”,然后按“提交”按钮,三个项目“奢侈品、品牌、零售商”将在该指定单元格中。看起来我的代码在后端工作,但这些是我的问题:

  1. 我不确定(尽管有多个 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


【解决方案1】:

鉴于您所拥有的,我可以推荐的最佳方法是,将值从数据库中分解出来,为您提供所有选择字段的新数组。然后使用 in_array 将您拥有的列表与循环中的这个新列表进行比较。然后根据需要标记复选框。

【讨论】:

  • 感谢in_array 的推荐,爆炸!我让它工作了。最后一个问题 - 如果我的选择是空的并且我按下“提交”,我会收到一个名为“无效索引”和“无效内爆”的小错误。它不会破坏任何东西,但我想知道是否有什么可以做的。
  • 尝试使用 isset() 或 empty() 来检查值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 2015-12-03
相关资源
最近更新 更多