如何将MySQL数据绑定到动态创建的表单元素

时间:2013-07-31 16:57:50

标签: php

我有一些动态创建的表单元素集,我在页面创建时使用它们。

<?php for ($i=0;$i<6;$i++){ ?>
<div id="hold">
    <input type="text" name="slinks<?php echo $i; ?>" value="<?php echo $slinks[$i]; ?>" placeholder="Input Link Name" />
    <select name="cat<?php echo $i; ?>">
        <option value="" selected="selected">Select Category</option>
        <option value="1">Item 1</option>
        <option value="2">Item 2</option>
        <option value="3">Item 3</option>
    </select>
    <div class="clear"></div>
</div>
<?php } ?>

我可以将值插入MySQL数据库。我想在页面编辑中将值填充到这些字段中。 我的问题是如何将值绑定到表单元素,假设我的数据库将样本值提取为:

<?php
    $query = $dhb->prepare("SELECT * FROM table2 WHERE $col = ?");
    $query->execute(array($id));
    $amt = $query->rowCount();
    $rows = $query->setFetchMode(PDO::FETCH_NUM);
    while($z = $query->fetch()){
        print_r($z);
    }
?>

print_r()的输出

Array
(
    [0] => 3
    [1] => Item3
)
Array
(
    [1] => 1
    [2] => Item1
)
Array
(
    [0] => 2
    [1] => Item2
)

1 个答案:

答案 0 :(得分:1)

假设$ edit = true,表示它处于编辑模式。那么你的PHP代码将是.. 假设你曾经设置过不同的

<?php
$query = $dhb->prepare("SELECT * FROM table2 WHERE $col = ?");
$query->execute(array($id));
$index = array();
$value = array();
$amt = $query->rowCount();
$rows = $query->setFetchMode(PDO::FETCH_NUM);
while($z = $query->fetch()){
    print_r($z);
$index[] = $z[0];
$value[$z[0]] = $z[1];

}
?>

你的html代码将是......

<?php  if($edit && is_array($index) && is_array($value)){
           $flagForNewField = false;
           for ($i=0;$i<6;$i++){ 
               if(in_array($i,$index){ ?>    
                <div id="hold">
                <input type="text" name="slinks<?php echo $i; ?>" value="<?php echo $slinks[$i]; ?>" placeholder="Input Link Name" />
                <select name="cat<?php echo $i; ?>">
                    <option value="" selected="selected">Select Category</option>
                    <option value="1" selected="<?php if($i==1){echo "selected";}else{} ?>">Item 1</option>
                    <option value="<?php if($i==2){echo "selected";}else{} ?>">Item 2</option>
                    <option value="<?php if($i==3){echo "selected";}else{} ?>">Item 3</option>
                </select>
                <div class="clear"></div>
                </div>
            <?php
            }else{
                $flagForNewField = true;
                // ccase if input in not in fetched result
                }
            } 
        }else{
            for ($i=0;$i<6;$i++){ ?>

            <div id="hold">
            <input type="text" name="slinks<?php echo $i; ?>" value="<?php echo $slinks[$i]; ?>" placeholder="Input Link Name" />
            <select name="cat<?php echo $i; ?>">
                <option value="" selected="selected">Select Category</option>
                <option value="1">Item 1</option>
                <option value="2">Item 2</option>
                <option value="3">Item 3</option>
            </select>
            <div class="clear"></div>
            </div>
    <?php }
    }?>