我正在尝试从表单处理多个数组,但我经常遇到只提交最后一个字段的问题。
表单从简单的xml输出中回显结果(IP地址及其rDNS设置),并以可编辑的形式和表格发布这些结果。
<?php include_once("API.php");
$ips=array('xx.xx.xx.xx','xx.xx.xx.xx','xx.xx.xx.xx');
foreach($ips as $ip){
$API->GetRdns($ip);
$xml = simplexml_load_string($API);
}
foreach ($xml->RdnsDetails as $RdnsDetails) :?>
<tr>
<td><?php echo $ip; ?></td>
<td><input type="text" name="hostname" value="<?php echo $RdnsDetails->hostname; ?>"></td>
<td><input type="text" name="extra" value="<?php echo $RdnsDetails->extra; ?>"></td>
</tr>
<?php endforeach; ?>
单击提交按钮时,必须提交更改。
<button type="submit" name="submit">Submit</button>
<?php if (isset($_POST['submit'])){
foreach ($ips as $ip) {
$API->Sent($ip,$_POST[hostname],$_POST[extra])
}
?>
如何为每个IP($ ip)提交值'hostname'和'extra'?
答案 0 :(得分:0)
您应该将提交按钮绑定到<form>
以获取值
<form>
<?php foreach ($xml->RdnsDetails as $RdnsDetails) :?>
<tr>
<td><?php echo $ip; ?></td>
<td><input type="text" name="hostname" value="<?php echo $RdnsDetails->hostname; ?>"></td>
<td><input type="text" name="extra" value="<?php echo $RdnsDetails->extra; ?>"></td>
</tr>
<?php endforeach; ?>
<button type="submit" name="submit">Opslaan</button>
</form>
另一个问题是你错过了''这里:
$API->Sent($value,$_POST['hostname'],$_POST['extra'])
答案 1 :(得分:0)
默认情况下,表单只会为表单中的每个“名称”实体发送一个值。您可以尝试将括号添加到输入的[name]属性中,以便将值作为数组发送吗? 我想我现在了解了一点,你需要IP和主机名/额外值之间的关联。如果将ip添加为隐藏表单字段
,该怎么办? <?php foreach ($xml->RdnsDetails as $RdnsDetails) :?>
<tr>
<td><?php echo $ip; ?></td>
<td><input type="hidden" name="ips[]" value="<?php echo $ip; ?>"></td>
<td><input type="text" name="hostname[]" value="<?php echo $RdnsDetails->hostname; ?>"></td>
<td><input type="text" name="extra[]" value="<?php echo $RdnsDetails->extra; ?>"></td>
</tr>
<?php endforeach; ?>
然后你可以在后端处理这样的事情:
<?php
$ips = $_POST['ips'];
$hostnames = $_POST['hostname'];
$extras = $_POST['extras'];
for($i=0;$i<count($ips);$i++)
{
echo "IP: " . $ips[i] . ", Hostname: " . $hostnames[i] . ", Extra: " . $extras[$i];
}
答案 2 :(得分:0)
您应该尝试创建数组而不是单个值。试试这个:
<tr>
<td><?php echo $ip; ?></td>
<td><input type="text" name="ip[<?php echo $ip; ?>]['hostname']" value="<?php echo $RdnsDetails->hostname; ?>"></td>
<td><input type="text" name="ip[<?php echo $ip; ?>]['extra']" value="<?php echo $RdnsDetails->extra; ?>"></td>
</tr>
您可以通过以下方式获取此信息:
<?php if (isset($_POST['submit'])){
foreach ($_POST['ip'] as $ip => $info) {
$API->Sent($value,$info['hostname'],$info['extra']);
}
?>