0

我在创建数组和存储信息时遇到问题,我有一个表,其中的数据可能是无限的,然后用户将选择一些选项来确定他们可以选择哪些值(这又是一个无限的数字),然后将这些选择显示在我使用此代码的复选框中

<?php foreach ( $results['detailsline'] as $detailsline )
 {
$invoice_details = $detailsline->details_line;

echo $invoice_details;
echo '<input type="checkbox" name="invoice_details" value="'.$invoice_details.'"/>';  
  }             
 ?> 

所以这应该搜索他们之前选择的选项,并将它们排序成一个数组,然后进入复选框,但是当我存储信息只是保存最后一个选中的框时,我无法更改每个输入 EG 的值

echo '<input type="checkbox" name="invoice_details[value1]" 
echo '<input type="checkbox" name="invoice_details[value2]" 

因为我不知道会有多少个值/复选框。我也试过这个

    <?php foreach ( $results['detailsline'] as $detailsline )
 {
$invoice_details[] = $detailsline->details_line;

echo $invoice_details[];
echo '<input type="checkbox" name="invoice_details[]" value="'.$invoice_details.'"/>';  
  }             
 ?> 

改变

    $invoice_details

$invoice_details[]

但这只会在我的数据库中存储一个值“数组”,而不是实际值。

请问有人可以帮我吗?

伊恩

4

5 回答 5

0

试试这个

<?php foreach ( $results['detailsline'] as $detailsline )
 {
$invoice_details = $detailsline->details_line;

echo $invoice_details;
echo '<input type="checkbox" name="invoice_details[]" value="'.$invoice_details.'"/>';  
  }             
 ?> 
于 2013-03-21T10:20:13.677 回答
0

采用<input type="checkbox" name="invoice_details[]">

在您的代码中,您可以serialize($invoice_details)用于保存到 DB 和使用 - 时unserialize($field_from_db)

第一个函数返回字符串,因此您可以将其保存为字符串字段,第二个函数获取字符串并返回整个数组,以便您可以使用它。

于 2013-03-21T10:21:24.860 回答
0

但这只会在我的数据库中存储一个值“数组”,而不是实际值。

认为您尝试将 Array 存储为字符串所以得到了该值所以可能需要使用 implode/serialize/json_encode (Array) 来存储数据?

于 2013-03-21T10:21:52.427 回答
0

从字面上看,代码$invoice_details[] = $detailsline->details_line;意味着获取对象$detailsline的属性details_line并将其值作为新元素插入到数组$invoice_details中。你确定这是你想要的吗?)另外我认为$detailsline是一个数组,而不是对象(你试图将它作为一个对象来操作)

于 2013-03-21T10:23:48.453 回答
0

好吧,我认为你应该试试这个:

<?php 
$i=0;
foreach ( $results['detailsline'] as $detailsline )
{
$invoice_details = $detailsline->details_line;
echo $invoice_details;
echo '<input type="checkbox" name="invoice_details[$i]" value="'.$invoice_details.'"/>';  
$i++;
}             
?>
于 2013-03-21T11:02:20.010 回答