Есть ли способ установить переменную $ _SESSION из таблицы, которая создается с помощью цикла - PullRequest
0 голосов
/ 21 марта 2020

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

`

  $query="SELECT vraag, vragen_id, v_naam, tv, a_naam
          FROM vragen, personen
          WHERE vak_id = 1
          AND vragen.id=personen.id
          GROUP BY vraag
          ORDER BY vragen_id DESC";
  $result=$conn->query($query);

  echo "<table class = 'w3-table w3-striped w3-bordered w3-hoverable'>";
      echo "<tr>";
        echo "<th>Vraag nummer &nbsp</th>";
        echo "<th>Gestelde vraag &nbsp</th>";
        echo "<th>Gesteld door &nbsp</th>";
      echo "</tr>";

    foreach($result as $row) {
      echo "<tr>";
        echo "<td>" . $row['vragen_id'] . "</td>";
        echo "<td><a href='antwoorden.php'>" . $row['vraag'] . "</a></td>";
        echo "<td>" . $row['v_naam'] . " " . $row['tv'] . " " .  $row['a_naam'] ."</td>";
      echo "</tr>";
    }
  echo "</table>";
?>`

И мне нужно знать, есть ли способ установить для $_SESSION['vraag'] значение $row['vraag'] которая была нажата.

Ответы [ 2 ]

0 голосов
/ 21 марта 2020

Я понимаю, что вы хотите сохранить ответы в базе данных

Поскольку ваши вопросы будут содержать пробелы, другие символы, которые вам понадобятся для создания идентификатора строки, которую вы получите, доставят вам неприятности. Я думаю, что для этого проще использовать почтовый запрос.

вариант - создать форму ответа для каждой строки:

<form action="/antwoorden.php" method="post">
   <label for="antwoord">antwoord:</label>
   <input type="text" name="antwoord">
   <input type="hidden" name="vragen_id" value="{$row['vragen_id']}">
   <input type="submit" value="antwoord">
</form>

и перехватить данные формы, чтобы вставить их в базу данных. И не забудьте сделать ввод безопасным перед вставкой.

if(isset($_POST) and !empty($_POST['vragen_id'])){
$antwoord = $_POST['antwoord'];

// add insert sql action here
insert into vragen (..fields..) values (..values..) where vragen_id = ........

// check results of the executed insert query

// head to the same page again and this you'll load the new answer
header('Location: http://www.example.com/antwoorden.php');

конечно, если вы хотите сохранить его только в сеансе. будь моим гостем и делай так.

0 голосов
/ 21 марта 2020

Вам нужно будет передать значение $row['vraag'], когда пользователь щелкнет по нему.

echo "<td><a href='antwoorden.php?vraag=".$row['vraag']."'>" . $row['vraag'] . "</a></td>";

, а затем прочитать его в коде antwoorden.php и записать его в сеанс

// do not forget to activate session
session_start();

$_SESSION['vraag'] = $_GET['vraag'];
...