我有一个表单,用户可以动态生成多个表单元素(重复选择框)。与我的问题相关的表单代码如下。
for ($i=0; $i < $number; $i++) {
<label for="is_business"> Is A Business?</label>
<select class="target form-control look2" id="is_business" name="is_business//note the array on name
<option value="" selected disabled="disabled">select option</option>
<option value="1">Yes</option>
<option value="0">No</option>
</select>
}
我使用此表单发布一个数组$ _POST [is_business],然后我将其序列化(用于数据库输入)。无论用户生成的选择框的数量如何,所有都能很好地工作。
现在我要做的是在动态表单中设置每个选择框,并从数据库中选择以前发布的值并进行反序列化。我检查了从数据库中选择的数据,它看起来也很好,未按序列化的字符串(即数组)按预期打印...
//unserialized array values selected from database. Count was set to three. Answers were all 'yes'
[is_business_db] => Array(
[0] => 1 //yes
[1] => 1 //yes
[2] => 1 //yes
)
问题:我想使用is_business_db数组值,以便每个动态生成的选择框.... name = is_business [] ...在用户返回页面时显示正确的选定值。我已经尝试将以下javascript插入我的php循环(显然关闭/打开php标签),这对于生成的第一个选择框工作正常。
<script>
$('#is_business').val('<?php echo $is_business_status?>');
</script>
我也试过(并不是真的期待成功)在我脚本末尾的单独循环中插入相同的js ...同样的问题......只更新了第一个选择框。
<?php
for ($i=0; $i < $number; $i++) //php loop
{
$is_business_status=$is_business_db[$i];
?>
<script>
$('#is_business').val('<?php echo $is_business_status?>');
</script>
<?php
}
?>
显然我无法正确执行循环。任何帮助,将不胜感激。
答案 0 :(得分:0)
如果有人对这个问题感兴趣,经过几个小时的搔痒,我意识到我做了一件明显错误的事情,现在已经解决了这个问题。它并不是特别优雅,但它适用于任何在动态创建的选择框中挣扎的人在刷新或页面vists上返回选定的值。
回显的html ....
//$is_business_db=serialize($is_business) create array from database string
//$number=count($is_business_db)
for ($i=0; $i < $number; $i++) //number is a count of the array values
<div class="input_field_remove">
<div class="form-group">
<label for="is_business"> Is A Business?</label>
<select class="target form-control look2" id="is_business'.$i.'" name="is_business[]">
<option value="" selected disabled="disabled">select option</option>
<option value="1">Yes</option>
<option value="0">No</option>
</select>
</div>
</div>
然后是javacript ...... notes ...使用json编码来捕获javascript中的php数据( - 作为未序列化的数据库字符串,即php数组)。
<?php $index_max=count($is_business_db) ?>
<script>
var index_max='<?php echo $index_max;?>';
var value = <?php echo json_encode($is_business_db) ?><!---this is the critical bit---->
//var data = JSON.parse(value);//this is recommended -NOT USED- to ensure good js code-but not crucial in all situations
//now loop the javascript array and push the current selected values to the user-generated select boxes
for (index=0; index < index_max; index++)
{
$("#is_business"+ index).val(value[index]);
}
</script>
我希望将来可以帮助某人。