【发布时间】:2020-08-26 20:55:41
【问题描述】:
我对 PHP 还很陌生,所以很抱歉没有完全了解代码结构。
在一个 PHP 文件中,我有一个表单,其中包含从数据库查询中填充的下拉菜单中的选项(锦标赛的轮数取决于参赛者的数量)。一旦用户选择了一轮夹具的选项,他们希望查看该选项作为变量传递,以确定提交表单时显示的内容。在表单上提交页面的其余部分更改以显示数据库中与用户从下拉列表中选择的回合相关的夹具。
我的挑战是,从下拉菜单中选择轮数后,我必须单击提交按钮两次 - 一次分配变量,然后第二次按下提交才能将变量用作从数据库中显示灯具信息的过程。
我知道可以使用 JS 存储一个变量,然后可以在表单提交时使用,但我不确定如何将它与表单 / 的编写方式集成。
查看网络上的一些地方(如 W3Schools)后,我有一些基本的 JS 并尝试过,但我认为用户选择和存储准备在提交时使用的变量之间仍然存在脱节点击。
//Basic JS
<script>
function getFormIndex() {
document.getElementById($_POST['roundselect']).innerHTML =
document.getElementById("roundselect").selectedIndex;
}
</script>
//PHP Elements
if(isset($_POST['submit'])){
$roundnum = $_POST['roundselect']; }
<?php
function setround(){
$roundnum = $_POST['roundselect'];
echo $roundnum;
}
?>
//Form
<div class="h2_select">
<? if($fnum) {
$select_opt = (isset($_GET['round'])) ? $_GET['round'] : 1;
?>
<form method="post" action="/tournaments/<?=$lid; ?>/fixtures/<?= $roundnum; ?>" name="rf">
<!--<input type="hidden" name="id" value="/<?=$lid; ?>" />
<input type="hidden" name="page" value="/fixtures" /> -->
<span class="minput">Select Round
<select size=1 class="mselect" name="roundselect" onChange=getFormIndex();>
<? for($i=1; $i <= $total_rounds; $i++) { ?>
<option value="<?= $i ?>" <?php if($i == $select_opt){ echo 'selected'; } ?> > <?= $i?> </option>
<? }
?>
</select>
<input type="submit" name="submit" value="<?= $lang[185] ?>" class="minput"/>
</form>
<? } ?>
</div>
为了确认,表单可以正常工作并显示正确的信息。问题是我目前需要点击“提交”两次。
谢谢
【问题讨论】:
-
谢谢@Teemu - 我很感激这些信息!我会确保在代码的其他地方更新所有这些内容。
-
@Teemu 虽然有理由不使用短开放标签,但它们并没有被弃用。有一个建议要弃用它们,最初被接受,但后来指出该方法存在严重问题,结果被逆转。 (我不会将这些讨论联系起来,因为它们被捆绑在一大堆政治和个人差异中,但据我了解,这是关键结果。)
-
@IMSoP 好的,感谢您提供的信息。貌似这个也更新到手册里了。
标签: javascript php