PHP удаление переменной после новой формы - PullRequest
0 голосов
/ 26 февраля 2019

В моем коде у меня есть две формы для выбора пользователями.Первая переменная будет сохранена, но как только пользователь отправит вторую форму, переменная из первой формы больше не будет сохранена.

<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;
}

 ?>

Так что к тому времени, когда я доберусь до своего следующего оператора sql

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

Когда школа выбрана, она сохраняет переменную, но когда курс выбран, $ selected_school снова становится пустым.

У меня уже есть session_start () вверху страницы.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы можете использовать переменную session, это поможет сделать данные доступными на разных страницах.

Таким образом, при отправке формы вы можете сохранить это значение в сеансе и получить его в любое время.ваш php-файл, который вам нужен для начала сессии, т.е. session_start();. Затем в вашем коде

<?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;
}
?> 

То же самое вы можете сделать с вашим $selected_course. Затем вы можете передать значение в свой запрос, как показано ниже:

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

Для получения дополнительной информации см. здесь

0 голосов
/ 26 февраля 2019

Похоже, ваш вариант не имеет значения, которое он передает.Попробуйте это в своей первой форме, пока цикл:

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

Похоже, что у вас могут быть и другие проблемы.Если это не решит вашу проблему, я буду копать глубже.

РЕДАКТИРОВАТЬ: Тогда, да, как и предлагали другие, вы, вероятно, захотите добавить скрытое поле ввода для передачи значения этой переменной и во второй форме отправки.

О чем мы говоримскрытое поле ввода это:

<input type="hidden" name="selected_school" value="<?php if(isset($selected_school) echo $selected_school; ?>">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...