如何以动态形式命名每个项目

时间:2014-07-23 08:45:46

标签: php mysqli

我有一个MySql表:

id   concept
-------------
1    item1
2    item2
3    item3

我尝试动态生成此表:

<form action="extern.php" method="post">
<?php  
$result = mysqli_query($con, 'SELECT * FROM MyTable');
while ($row = mysqli_fetch_array($result)) {
?>

<input type="text" name="<?php echo $row["concept"] ?>"value="<?php echo $row["concept"] ?>"><br>

<?php 
}
?>
<input type="submit">
</form>

这给出了html的来源:

<form action="extern.php" method="post">
    <input type="text" name="item1" value="item1"><br>
    <input type="text" name="item2" value="item2"><br>
    <input type="text" name="item3" value="item3"><br>
    <input type="submit" name="send">
</form>

我的问题是:
- 当我尝试在hmtl中制作动态表单时,&#34; name&#34;我应该用吗?我的意思是我不能使用静态名称,因为它可能是数据库中的很多值。并且它必须是php稍后可以使用的值 - 我怎样才能在php中捕获该值?

$concept = $_POST["something"]; // how should I do this var?

2 个答案:

答案 0 :(得分:0)

您可以在name属性中使用方括号:

<input type="text" name="concepts[<?php echo $row["id"] ?>]"value="<?php echo $row["concept"] ?>">

然后检查特定的ID,例如:

$allConcepts = $_POST["concepts"];

$concept1 = $allConcepts[0];   // Example accessing a specific input

之后您可以遍历 allConcepts 数组来动态处理所有输入。

要召唤:如果使用方括号,例如 name =&#34; myArrayName [x]&#34; PHP将数据很好地映射到数组,您可以通过$访问条目_POST [&#39; myArrayName&#39;] [X]

答案 1 :(得分:0)

你可以试试这个

<form action="extern.php" method="post">
<?php  
    $result = mysqli_query($con, 'SELECT * FROM MyTable');
    $cntConcept=1;
    while ($row = mysqli_fetch_array($result)) {
?>
<input type="text" name="<?php echo $row["concept"].$cntConcept ?>" value="<?php echo $row["concept"] ?>"><br>
<?php 
    $cntConcept=$cntConcept+1;
    }
?>
<input type="submit">
</form>

在检索时

$varname="";
for(int i=0;i<3;i++)
{
    $varname = "something".i+1;
    $concept[i] = $_POST[$varname];
}