php表单名称变量

时间:2015-12-30 11:02:24

标签: php forms variables

我需要从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代码也可能不适合这种情况。你能帮我解决一下吗?

2 个答案:

答案 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>

以上代码经过测试并正常运作。