PHP-内部变量<;形式动作=“">;属性作为get方法url的一部分


PHP - Variable inside <form action=" "> attribute as part of url for get method

尝试在html表单的action属性中传递php变量,作为根据所选选项通过url传递变量的get方法的一部分。

 <?php 
 ...
 $sql = "SELECT staffID, staffName
 FROM staff";
$results = mysqli_query($conn, $sql)
or die ('Problem with query' . mysqli_error($conn));
?>
    <form action = "task7.php?" method = "get"> 
        <select>
        <?php 
        while($row = mysqli_fetch_array($results))
        {
            $staffID = $row["staffID"]; 
            $staffName = $row["staffName"];
        ?>
        <option value = "<?php echo $staffID ?>"> <?php echo $staffName ?> </option>
        <?php 
        } 
        ?> 
        </select>
        <br> <br> 
        <input type = "submit" value = "Submit"> 
        <input type = "reset" value = "Reset">  
    </form> 

在这种特殊情况下,我试图将staffID变量作为url的一部分进行传递。像这样的tast7.php?staffID=12345

代码中缺少的只是select 上的名称

 <select name="staffID">  <!-- adding the name will append the selected value to the url -->
    <?php 
    while($row = mysqli_fetch_array($results))
    {
        $staffID = $row["staffID"]; 
        $staffName = $row["staffName"];
    ?>
    <option value = "<?php echo $staffID ?>"> <?php echo $staffName ?> </option>
    <?php 
    } 
    ?> 
</select>

在php中,

<form action = "task7.php" method = "get"> 
    <select name="staffID">
    <?php 
    while($row = mysqli_fetch_array($results))
    {
    ?>
    <option value = "<?php echo $row["staffID"]; ?>"> <?php echo $row["staffName"]; ?> </option>
    <?php 
    } 
    ?> 
    </select>
    <br> <br> 
    <input type = "submit" value = "Submit"> 
    <input type = "reset" value = "Reset">  
</form> 

您可以使用jQuery/JS轻松完成。

例如:(使用jQuery)

function formSubmit(element){
  var url = $("#test").attr("action", "");
  url += "?" + element.name + "=" + element.value;
  $("#test").attr("action", url);
  $("#test")[0].submit();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form action="test.php" method="get" id="test">
  <select name="id" onChange="formSubmit(this)">
    <option value="abc">abc</option>
    <option value="xyz">xyz</option>
  </select>
</form>

你的想法太复杂了。试试看:

<form action = "task7.php" method = "get"> 
    <select name="staffID">
    <?php 
    while($row = mysqli_fetch_array($results))
    {
        $staffID = $row["staffID"]; 
        $staffName = $row["staffName"];
    ?>
    <option value = "<?php echo $staffID ?>"> <?php echo $staffName ?> </option>
    <?php 
    } 
    ?> 
    </select>
    <br> <br> 
    <input type = "submit" value = "Submit"> 
    <input type = "reset" value = "Reset">  
</form> 

您要查找的是而不是一个"php变量"。这样的事情在客户端并不存在。相反,您只想将为<select>标记选择的值作为一个简单的"HTTPGET"参数提交。这正是使用方法GET的表单标记所做的。您只需将您的选项命名为select,仅此而已:<select name="staffID">

尝试这个

$id = 1;

//later
<form action = "task7.php?staffID="+<?= $id ?> method = "get">