我会尽量简短而简洁。
我有一个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>
答案 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)
在<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>
注意:由于Javascript是客户端,我建议您不要相信HTML表单发送的值。始终对其执行服务器端检查。
您还可以将索引值设置为<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']
。