Я хочу создавать кнопки динамически и получать доступ к любому конкретному - PullRequest
0 голосов
/ 21 июня 2020

Я хочу отображать кнопки в зависимости от значений из таблицы. После этого мне нужно получить доступ к любой кнопке и действовать в соответствии с меткой кнопок. Чтобы быть более конкретным c, у меня есть таблица, содержащая названия предметов, я хочу показать кнопки, каждая из которых имеет ярлык предмета. когда пользователь нажимает кнопку (например: Physics), на экране должен отображаться тест (MCQ) только по физике и так далее:

Ниже мой код:

<button id="subj" onclick="showSubjects()">Start Test </button>
<div id="subjects" style="display: none;">
<form method='POST'>
<?php include_once('connect.php'); 
$query = "select distinct subject from subjects order by subject 
desc ";
$result = mysqli_query($conn,$query);
while($row=mysqli_fetch_array($result)){
        $subjectname = $row['subject'];?>
        <input type="submit" id = "sub" name="sub" 
            value='<?php echo $subjectname; ?>'> 
     <?php } ?>
</form>
</div>
<?php
if(isset($_POST['sub'])){echo $subjectname; } else {echo 
"Nothing";}
?>
</body>
<script type="text/javascript">
function showSubjects(){
document.getElementById("subjects").style.display = "block";}
function showTest(){
document.getElementById("tests").style.display = "block";
} </script>

Это показывает 3 кнопки: ФИЗИКА ХИМИЯ БИОЛОГИЯ

когда пользователь нажимает любую из этих кнопок, он принимает это как последнее значение кнопки, то есть БИОЛОГИЯ.

Как я могу изменить его, чтобы при нажатии пользователем кнопки ХИМИЯ отображалось " Нажата кнопка химии "и тд

1 Ответ

0 голосов
/ 21 июня 2020

Единственное, что изменится в зависимости от отправленной формы, - это массив $ _POST. Другие переменные, такие как $ subject, будут такими же, что бы ни делал пользователь; PHP не собирается угадывать, какими вы хотите, чтобы они были.

У вас уже есть logi c проверка, нажал ли пользователь любую кнопку:

if(isset($_POST['sub'])){ ... }

Определить , какую кнопку они нажали, достаточно просто посмотреть на ту же самую переменную:

echo $_POST['sub'];

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

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

...