为了账号安全,请及时绑定邮箱和手机立即绑定

PHP/MYSQLI 如何从表单内的 while 循环返回变量以在该表单的操作/方法中的 $_GET

PHP/MYSQLI 如何从表单内的 while 循环返回变量以在该表单的操作/方法中的 $_GET

PHP
倚天杖 2023-04-21 16:48:21
我有一个 html 表单,它使用 PHP while 循环从 MYSQLi 数据库填充选择菜单。下面的代码;$query = "SELECT on_programme, last_name, first_name, middle_name, id FROM constant_client WHERE on_programme=1 ";$result = mysqli_query($conn, $query);echo '<p><label for="current_clients">Select Client by name: </label>        <select id="current_clients" name="current_clients">        <option> -- Select Client -- </option>';        while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {          echo '<option>'.ucwords($row['last_name']).', '.ucwords($row['first_name']).' '.ucwords($row['middle_name']).'</option>';        }echo '</select>'; 以上工作,表格填充了所需的客户记录。但是,然后我希望使用此数据链接到我尝试使用的单个客户端页面echo '&emsp;<a href="selected_client.php?id='.$row['id'].'" onClick="this.form.submit()">Go!</a>';这不起作用,所以我尝试将表单操作设置为action="selected_client.php?id='.$row['id'].'"方法为“GET”,也没有用。正如您在查询中看到的那样,我也从表中选择了“id”,因此稍后我可以调用数组的那部分,我只是不是特别需要或不想回显它。使用表单操作方法时,未设置 $row['id'] 变量,使用 onClick 方法时,出现“尝试访问 null 类型值的数组偏移量”错误。我想象需要在表单操作发生之前设置变量,但我想不出在不移动 while 循环或至少从中返回值的情况下如何做到这一点。是否可以在提交时而不是在表单顶部调用表单方法和操作?那会有什么不同吗?编辑; 根据要求,我尝试对表单使用隐藏方法echo '<input type="submit" name="submit" value="Go!"><input type="hidden" name="id" value="'.$row['id'].'">';其中仍然返回空值类型的错误。编辑 #2 - 所有代码内联。$query = "SELECT on_programme, last_name, first_name, middle_name, id FROM constant_client WHERE on_programme=1 ";$result = mysqli_query($conn, $query);echo  '<form action="selected_client.php" method="get">    <fieldset>';echo '<p><label for="current_clients">Select Client by name: </label>        <select id="current_clients" name="current_clients">        <option> -- Select Client -- </option>';        while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {          echo '<option>'.ucwords($row['last_name']).', '.ucwords($row['first_name']).' '.ucwords($row['middle_name']).'</option>';        }echo '</select>';echo '<input type="submit" name="submit" value="Go!"><input type="hidden" name="id" value="'.$row['id'].'">';echo '</fieldset></form>';
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

添加 onChange 事件并将所选值传递给某个函数,在该函数中使用该所选值设置隐藏字段。现在您可以提交表单并可以接收您选择的值。下面是解决方案。


$query = "SELECT on_programme, last_name, first_name, middle_name, id FROM constant_client WHERE on_programme=1";

$result = mysqli_query($conn, $query);

echo  '<form action="selected_client.php" method="get">

    <fieldset>';


echo '<p><label for="current_clients">Select Client by name: </label>

        <select id="current_clients" name="current_clients" onChange="setId(this.value);">

        <option value=""> -- Select Client -- </option>';


        while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {

          echo '<option value="'.$row['id'].'">'.ucwords($row['last_name']).', '.ucwords($row['first_name']).' '.ucwords($row['middle_name']).'</option>';

        }

echo '</select>';

echo '<input type="submit" name="submit" value="Go!">

<input type="hidden" name="id" id="hidden_field" value="">';


echo '</fieldset></form>';

添加此脚本以在隐藏字段中设置值。


<script>

function setId(rowValue){

   document.getElementById("hidden_field").value=rowValue;

}

</script>


查看完整回答
反对 回复 2023-04-21
  • 1 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信