dongqiang1894
dongqiang1894
2019-02-26 18:23

PHP在新表单后删除变量

已采纳

In my code, I have two forms for users to select options. The first variable will save but as soon as the user submits the second form, the variable from the first form is no longer saved.

<div class = "school">
<h3>Please select the university you previously attended</h3>
<form action = "" method = "post" name = "school_form">
<select name="school" size ="10">

<?php
//shows options for $selected_school
$sql = "SELECT DISTINCT school FROM data;";
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);
if ($resultCheck > 0){
while($row = mysqli_fetch_assoc($result)){
  // inserts all data as array
  echo "<option>". $row['school'] ."</option>";
      }
 }
?>

</select>
<br>
<input type ="submit" name = "submit_school" value = "Enter">
</form>
<?php
//saves selected option as $selected_school
if(isset($_POST['submit_school'])){
$selected_school = mysqli_real_escape_string($conn, $_POST['school']);
echo "You have selected: " .$selected_school;
}
?>

</div>
<div class ="courses">
<h3>Please select the courses you took</h3>
<form action = "" method ="post" name ="course_form">

<?php
//user shown options for courses
$sql2 = "SELECT transfer_course, transfer_title FROM data WHERE school = ? ORDER BY transfer_course ASC";
$stmt = mysqli_stmt_init($conn);
if(!mysqli_stmt_prepare($stmt, $sql2)) {
echo "SQL statement failed";
} else {
mysqli_stmt_bind_param($stmt, "s", $selected_school);
mysqli_stmt_execute($stmt);
$result2 = mysqli_stmt_get_result($stmt);

while($row2 = mysqli_fetch_assoc($result2)){
echo "<input type='checkbox' name ='boxes[]' value = '" . $row2['transfer_course'] . "' >" . $row2['transfer_course'] . "<br>";
      }
 }
?>
<br>
<input type ="submit" name = "submit_courses" value = "Enter">
</form>
<br>
<?php
//saved selected option(s) as $selected_course
if(isset($_POST['submit_courses'])){//to run PHP script on submit
   if(!empty($_POST['boxes'])){
      foreach($_POST['boxes'] as $selected_course){
         echo "You have selected: " . $selected_course . "</br>";
      }
   }
 }
 ?>
 </div>
<div class = "output">
<h3>Course Equivalency</h3>
<?php
$sql3 = "SELECT arcadia_course, arcadia_title FROM data WHERE school = " . $selected_school . " AND transfer_course = " . $selected_course . "";
$result3 = mysqli_query($conn, $sql3);
if($result3)
{
  while($row3 = mysqli_fetch_assoc($result3)){
    echo $row3['arcadia_course'] . " " . $row3['arcadia_title'] . "<br>";
 }
 } else {
    echo "failed";
    echo $sql3;
}

 ?>

So by the time I get to my next sql statement

$sql3 = "SELECT arcadia_course, arcadia_title FROM data WHERE school = " . $selected_school . " AND transfer_course = " . $selected_course . "";

When the school is selected, it saves the variable, but when the course is selected, $selected_school becomes blank again.

I already have session_start() at the top of the page.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • dongping1012 dongping1012 2年前

    You can used session variable ,it will help to make data accessible across the various pages .

    So,whenever form get submitted you can save that value in session and retrieve it anytime.In top of your php file you need to start session i.e session_start(); .Then in your code

    <?php
    //saves selected option as $selected_school
    if(isset($_POST['submit_school'])){
     $_SESSION['selected_school ']=$selected_school;// here you are storing value to session 
    $selected_school = mysqli_real_escape_string($conn, $_POST['school']);
    echo "You have selected: " .$selected_school;
    }
    ?> 
    

    Same you can do with your $selected_course also .Then you can passed value to your query like below :

    $sql3 = "SELECT arcadia_course, arcadia_title FROM data WHERE school = " .$_SESSION['selected_school ']. " AND transfer_course = " .$_SESSION['selected_course']. "";
    

    For more information refer here

    点赞 评论 复制链接分享
  • dongtingrun4973 dongtingrun4973 2年前

    It looks like your option doesn't have a value it is passing. Try this in your first form while loop:

    echo '<option value="' . $row['school'] . '">' . $row['school'] . '</option>';
    

    It looks like there may be some more issues you are having as well. If this doesn't fix your issue, I'll dig deeper.

    EDIT: Then, yes, as others have suggested, you probably want to add a hidden input field to pass that variable value on the second form submit as well.

    What we are saying about the hidden input field is this:

    <input type="hidden" name="selected_school" value="<?php if(isset($selected_school) echo $selected_school; ?>">
    
    点赞 评论 复制链接分享

相关推荐