1

我有一个表单,允许用户在需要时添加更多字段。当用户这样做时,会出现另外两个字段(一个用于链接文本,另一个用于链接地址)。我正在使用 javascript 在输入名称上附加一个数字(例如newLinkTitle1+ newLinkAddress1newLinkTitle2+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 

}
4

5 回答 5

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
}

不要忘记在保存到数据库之前正确地转义这些值!

于 2013-06-21T14:00:38.550 回答
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 
  }
}
于 2013-06-21T13:57:20.650 回答
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()function 而不是。substr()

于 2013-06-21T13:58:38.443 回答
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 是字段名及其携带的值的关联数组(只是提醒)

于 2013-06-21T13:58:45.653 回答
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 数组。

于 2013-06-21T13:59:52.437 回答