我想要实现的是拥有一个未定义数量的输入字段(用户可以在网站上添加带加号按钮的其他输入字段)。每个输入字段的id / name都附加一个递增的数字。 这已经很好了。
示例:
<input type="text" name="field1" id="field1">
<input type="text" name="field2" id="field2">
<input type="text" name="field3" id="field3">
<button id="addanotherinputfield">+ Add new</button>
因此理论上,可能有超过200个输入字段,最后一个是:
<input type="text" name="field200" id="field200">
我目前将此推送为$ _POST(代码简化):
<?php
$db = new PDO("mysql:host=localhost;dbname=$dbname", $dbtable, $dbpass);
$sdh = $db->prepare('INSERT INTO yeehaw (name,value) VALUES (:name,:value)');
if($_POST['field1'] !='') {
$name = 'field1';
$value = $_POST['field1'];
$sdh->bindParam(':name', $name);
$sdh->bindParam(':value', $value);
$sdh->execute();
}
if($_POST['field2'] !='') {
$name = 'field2';
$value = $_POST['field2'];
$sdh->bindParam(':name', $name);
$sdh->bindParam(':value', $value);
$sdh->execute();
}
if($_POST['field3'] !='') {
$name = 'field3';
$value = $_POST['field3'];
$sdh->bindParam(':name', $name);
$sdh->bindParam(':value', $value);
$sdh->execute();
}
$db = null;
?>
目前这也有效。
但是由于显而易见的原因,这不是一个好方法,因为它不可扩展(我必须将每个案例添加到代码中,我喜欢清除不必要的代码)。我现在搜索了一下戒烟,似乎无法找到两个基本问题的答案(也许我正在寻找错误的术语/术语?):
任何指针/助手都非常感激。
答案 0 :(得分:3)
将HTML输入的name
属性设置为PHP的数组:
<input type="text" name="field[]" />
这样,字段将作为数组发布,您可以轻松地在PHP中的每个字段上循环。
foreach($_POST['field'] as field){
// handle input
}
答案 1 :(得分:0)
为了使您的代码更具可扩展性,更少冗余或可重复,我建议使用PDO动态和自动数据绑定,例如Github上列出的数据绑定,它在绑定多次使用数据时很有用。它为您完成所有绑定,这里是GitHub上的链接https://github.com/JstMagic/dynamicPDO将它与Tiles Answer结合使用
<input type="text" name="field[]" />
foreach($_POST['field'] as field){ // handle input }