我有一个表单,允许用户在需要时添加更多字段。当用户执行此操作时,会出现另外两个字段(一个用于链接文本,另一个用于链接地址)。我使用javascript在输入名称上添加数字(例如newLinkTitle1
+ newLinkAddress1
,newLinkTitle2
+ newLinkAddress2
等。)
<input type="text" value="" name="newLinkTitle" size="50" />
<input type="text" value="http://" name="newLinkAddress" size="50" />
我想检查我的POST数组中是否有包含前缀newLinkTitle
的变量,然后获取与之关联的newLinkAdress
,然后将它们添加到我的数据库中。
目前我有这个:
foreach ((strpos($_POST, 'newLinkTitle')) as $currentNewLinkTitle) { // check if newLinkTitle exists
$num = substr($currentNewLinkTitle, 12); // get the number following "newLinkTitle"
$currentLinkAddress = $_POST['newLinkAddress'.$num];
//Update query
}
答案 0 :(得分:1)
正确的方法是将字段命名为数组:newLinkTitle[]
和newLinkAddress[]
:
<input type="text" value="" name="newLinkTitle[]" size="50" />
<input type="text" value="http://" name="newLinkAddress[]" size="50" />
然后使用您的JS代码添加另外几个具有相同名称的字段(newLinkTitle[]
和newLinkAddress[]
)。在PHP中,只需执行以下操作:
foreach($_POST['newLinkTitle'] as $key => $val) {
$currentNewLinkTitle = $val;
$currentNewLinkAddress = $_POST['newLinkAddress'][$key];
// save to DB
}
在保存到数据库之前,不要忘记正确地转义值!
答案 1 :(得分:0)
尝试类似:
foreach ($_POST as $key => $value)
{
if (strpos($key, 'newLinkTitle') !== false) // note triple = is needed because strpos could return 0 which would be false
{
// do stuff with $value
}
}
答案 2 :(得分:0)
// Loop thru all POST fields.
foreach($_POST as $fieldName => $fieldValue)
{
// Check if field is a link title.
if(substr($fieldName, 0, 12) == 'newLinkTitle')
{
// If so, get index and link address.
$num = substr($fieldName,12);
$currentLinkAddress = $_POST['newLinkAddress'.$num];
// Update query
}
}
如果使用UTF-8,请务必使用mb_substr()
函数代替substr()
。
答案 3 :(得分:0)
您只需将循环调整为:
foreach($_POST as $field_name=>$field_value){
#it's the field name you want to match for similarity
if(strpos($field_name, "newLinkTitle") !== false){
#we have a matching field
.....
}
}
注意:$ _POST是字段名的关联数组及其携带的值(只是提醒)
答案 4 :(得分:0)
您需要在表单名称中使用数组。例如:
<input type="text" value="" name="newLinkTitle[0]" size="50" />
<input type="text" value="http://" name="newLinkAddress[0]" size="50" />
<input type="text" value="" name="newLinkTitle[1]" size="50" />
<input type="text" value="http://" name="newLinkAddress[1]" size="50" />
PHP会将表单字段转换为数组。您可以这样使用它们:
foreach ($_POST['newLinkTitle'] as $key => $value) {
echo 'Link title: ' . $value . ', link address: ' . $_POST['newLinkAddress'][$key];
}
不要忘记验证$ _POST数组。