#php
Вопрос:
Я написал код «Ножницы-камень», который сначала получает ввод игрока 1, он должен его сохранить, а затем запрашивает ввод игрока 2, сохраняет его и выводит входные данные обоих игроков. Но сейчас он выводит только ввод игрока 2, но если вы введете первый ввод, он все равно сохранит его, но после ввода второго он просто больше не сохранит его. Может кто-нибудь, пожалуйста, помочь мне это исправить?
<?php
if (!isset($keuze1)) {
echo "
<form method='GET'>
<input type='submit' name='knop' value='Begin met spelen'></button>
</form>
";
}
$knop = '';
if (isset($_GET['knop'])) {
echo "
<h2>Speler 1</h2>
<form method='GET'>
<select name='speler1'>
<option value='steen'>Steen</option>
<option value='papier'>Papier</option>
<option value='schaar'>Schaar</option>
</select>
<input type='submit' name='keuze1' value='kiezen'>
</form>;
";
}
$keuze1 = '';
$keuze2 = '';
if (isset($_GET['keuze1'])) {
$keuze1 = $_GET['speler1'];
echo "
<h2>Speler 2</h2>
<form method='GET'>
<select name='speler2'>
<option value='steen'>Steen</option>
<option value='papier'>Papier</option>
<option value='schaar'>Schaar</option>
</select>
<input type='submit' name='keuze2' value='kiezen'>
</form>
";
}
if (isset($_GET['keuze2'])) {
$keuze2 = $_GET['speler2'];
echo "
Speler 1 koos $keuze1 en Speler 2 koos $keuze2
";
}
echo $keuze1;
?>
Комментарии:
1. Не могли бы вы, пожалуйста, объяснить, что именно вы считаете «экономией» здесь? Потому что я не вижу, чтобы ты где- нибудь здесь делал что-то, что заслуживало бы этого термина.
2. Первый вариант — $_GET[‘speler1’], поэтому я даю переменную keuze1 первому выбранному варианту
3. Мне кажется, что вы, вероятно, еще не знаете, что каждый запрос независим от предыдущего? Если вы хотите «сохранить» значения в запросах — тогда вам либо нужно убедиться, что они будут отправлены снова, независимо от того, что вызывает следующий запрос (например. поместите их в скрытое поле в той новой форме, которую вы отправляете) — или вам придется сохранить их в сеансе .
4. в вашем коде нет постоянства. Когда первый игрок представит свой выбор, будет установлен $_GET[‘speler1’] и $keuze1 будет иметь значение. Когда второй пользователь отправит сообщение, будет установлен $_GET[‘speler2’], но $keuze1 больше не будет иметь значения, потому что страница была перезагружена
5. Примечание: PHP можно использовать в качестве движка шаблонов. Чтобы распечатать блок статического HTML, вы можете просто закрыть теги PHP (
?>
), сбросить исходный HTML-код и снова открыть теги PHP (<?php
), если вам нужно добавить дополнительный код PHP.
Ответ №1:
Каждый раз, когда вы отправляете форму, сценарий запускается заново, и ничто не «сохраняется» от одной итерации к следующей. Поэтому, когда вы нажимаете <input type='submit' name='keuze2' value='kiezen'>
кнопку, все сбрасывается, и у вас есть только те переменные, которые представлены в форме.
Поэтому, если вы хотите взять $keuze1
с собой, самый простой способ сделать это-передать его в скрытое поле формы, например так:
if (isset($_GET['keuze1'])) {
echo "
<h2>Speler 2</h2>
<form method='GET'>
<input type='hidden' name='speler1' value=" . htmlspecialchars($_GET['speler1']) . " />
<select name='speler2'>
<option value='steen'>Steen</option>
<option value='papier'>Papier</option>
<option value='schaar'>Schaar</option>
</select>
<input type='submit' name='keuze2' value='kiezen'>
</form>
";
}
… а затем перейдите $keuze1
$_GET['speler1']
в свой последний if
блок, прежде чем выводить его.