我需要从postgre数据库获取值并使用fopen打开其记录中的链接以打开真正的xml文件。
<?php
echo "<form id=read2 method=post action=read2.php>";
//other html and table codes
while ($row = pg_fetch_row($result)) {
echo "<tr><td>$row[1]</td><td><input type=hidden name=data value=$row[3] /><a href=javascript:; onclick=document.getElementById('read2').submit();>$row[2]</a></td><td>$row[4]</td><td>$row[5]</td></tr>";
}
read2.php:
<?php
$data=$_POST['data'];
$explode = explode("/inbox/", $data);
$final = "";
$final.="data/";
$final.=$explode[1];
echo "Result of data before explode is: $data <br />";
echo "Result of data after explode is: $explode[1] <br /><br />";
$myfile = fopen("$final", "r") or die("<h1>Unable to open file!</h1>");
$xml = htmlspecialchars(fread($myfile,filesize("$final")));
?>
<pre>
<?php echo $xml; ?>
</pre>
<?php fclose($myfile); ?>
我的问题在这里:<input type=hidden name=data value=$row[3] />
我能够传递给read2.php正确的值并使用爆炸来调整我真正需要的东西,但我无法选择哪个值得到name=data
,这对于所有和read2都是一样的.php只获取列表中的最后一个。
我在里面尝试了一个计数器:name=data[count]; count++
但在这种情况下,我不知道如何获得&#34; name&#34;来自$ _POST
我用来发送表单的javascript代码也可能不适合这种情况。你能帮我解决一下吗?
答案 0 :(得分:1)
我想我明白问题是什么,但请原谅我,如果我的目标是以下内容。如果你稍微接近这一点,那应该相对容易。
将一个表单与包含记录集数据和链接的表分开 - 表单只需要使用javscript定位一个隐藏元素并动态设置值。
以下未经过测试,因此可能无法“开箱即用”,但我认为这个想法很合理。
<!doctype html>
<html>
<head>
<title>Table data - form submission</title>
<script type='text/javascript'>
function submitdata(event){
var el=typeof( event.target )!='undefined' ? event.target : event.srcElement;
var data=document.getElementById('data');
data.value=el.dataset.value;
data.parentNode.submit();
}
</script>
</head>
<body>
<?php
echo "
<!--
this is the form that actually sends data.
Programatically set the value of the hidden element
and submit the form
-->
<form name='senddata' method='post' action='read2.php'>
<input type='hidden' id='data' name='data'/>
</form>
<table>";
while( $row = pg_fetch_row( $result ) ) {
echo "
<tr>
<td>{$row[1]}</td>
<td>
<a href='#' data-value='{$row[3]}' onclick='submitdata(event)'>{$row[2]}</a>
</td>
<td>{$row[4]}</td>
<td>{$row[5]}</td>
</tr>";
}
echo "
</table>";
?>
</body>
</html>
答案 1 :(得分:0)
您应该将隐藏参数从多个移动到单个,并使用jquery或javascript设置隐藏参数值并提交表单。请尝试以下方法:
<?php
echo "<form id='read2' method='post' action='read2.php'>";
echo "<input type='hidden' name='data' id='data'/>";
echo '<table>';
while ($row = pg_fetch_row($result)) {
echo "<tr><td>$row[1]</td><td><a dataval=$row[2] href='#' onclick='callfunc(this)'>$row[2]</a></td><td>$row[4]</td><td>$row[5]</td></tr>";
}
echo '</table>';
echo '</form>';
?>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
function callfunc(obj)
{
var dataval = $(obj).attr('dataval');
$('#data').val(dataval);
$('#read2').submit();
}
</script>
以上代码经过测试并正常运作。