使用数组数据填充页面

时间:2012-12-11 10:50:42

标签: php forms

我会尽量简短而简洁。

我有一个PHP表单页面,用数组(杂志名称)填充一个下拉框,然后,如果发布,则将其输出到另一个页面。

但是,我在表单中有第二个数组(包含订阅链接),我还需要发送到输出页面,具体取决于从下拉框中选择的内容。如果这是有道理的。

例如,如果从下拉框中选择$arrayOne[7]的值,我需要自动将$arrayTwo[7]的值post_GET到输出页面。

有人可以帮忙吗?

如default.php

$arrayOne[0] = "magazineA";
$arrayOne[1] = "magazineB";
etc...

$arrayTwo[0] = "subscriptionLinkA";
$arrayTwo[1] = "subscriptionLinkB";
etc...

<form action="index2.php" method="get">
<?php

echo '<select name="publication">';
foreach ($magazine as $publication)
{
    echo '<option name="publication" value="' . $publication . '">' . $publication . '</option>';
}
echo '</select>';

?>
<input type="submit">
</form>

index2.php

<p>
If you have subscribed to <?php echo $_GET["publication"]; ?>,
you will receive your hard-copy in due course. If you are not a current subscriber,
<a href="#">click here</a> to subscribe.
</p>

2 个答案:

答案 0 :(得分:1)

由于$array2的值完全取决于$array1的值,$_GET['a1']可以充当其他值的查找。即你根本不必通过$a2

在index2.php上,你会有这样的事情:

$arr2= array( 'magazineA' => 'subscriptionLinkA',
              'magazineB' => 'subscriptionLinkB');

$pub= $_GET['a1']; //you'd want to sanitize this value of course
$link= $arr2[$pub];

echo  <<< EOT
<p>
If you have subscribed to $pub
you will receive your hard-copy in due course. If you are not a current subscriber,
<a href="$link">click here</a> to subscribe.
</p>
EOT;

答案 1 :(得分:0)

方法1

<input type="hidden"...字段中的下拉选项更改时,您可以使用Javascript填充隐藏的输入字段(<select>),其中包含<select>字段的所选选项。

default.php 的一些代码:

<form action="index2.php" method="get">
<?php

echo '<select id="pubfield" name="publication">';
foreach ($magazine as $publication) {
    echo '<option name="publication" value="'.$publication.'">'.$publication.'</option>';
}
echo '</select>';

?>
    <input type="submit" value="SEND!">
    <input type="hidden" id="hid" name="arr2" value="" />

    <script type="text/javascript">

        // Using jQuery, include the js file with jQuery.
        $('select#pubfield').change(function() {
            var value = $("select#pubfield option:selected").text(); // Get the selected option from the select field.
            $('input#hid').value(value);
        });
        $('select#pubfield').change();

    </script>
</form>

JSFiddle

注意:由于Javascript是客户端,我建议您不要相信HTML表单发送的值。始终对其执行服务器端检查。

更新

方法2

您还可以将索引值设置为<option value="">,并使用表单发送。

$magazines = array(
    "magazineA", // will be index 0
    "magazineB", // will be index 1
    ...
);
...
foreach ($i = 0; $i < count($magazines); $i++) {
    echo '<option value="'.$i. '">'.$magazines[$i].'</option>';
    // The 'value' attribute of the selected option will be posted.
}
...

然后你甚至不需要隐藏的输入字段,但索引被传递给$_POST变量 例如,如果选择“magazineB”,则值1将传递给$_POST['publication']