Форма PHP, которая показывает дополнительный контент, основанный на ответе пользователя (часть 2) - PullRequest
1 голос
/ 27 июля 2011

Когда пользователь заполняет эту простую форму переключателя, ему нужно показывать ссылку внизу, только если он щелкнет «да» для каждого вопроса.Я получаю некоторые синтаксические ошибки при запуске этого.Нуб на PHP!

<form name="myform" action="" method="POST">
<div><br>
<p>Question 1?</p>
<input type="radio" name="group1" value="Yes"> Yes<br>
<input type="radio" name="group1" value="No"> No<br>
<hr>
<p>Question 2?</p>
<input type="radio" name="group2" value="Yes"> Yes<br>
<input type="radio" name="group2" value="No"> No<br>
<hr>
<p>Question 3?</p>
<input type="radio" name="group3" value="Yes"> Yes<br>
<input type="radio" name="group3" value="No"> No<br>
<hr>
<p>Question 4?</p>
<input type="radio" name="group4" value="Yes"> Yes<br>
<input type="radio" name="group4" value="No"> No<br>
<input type="submit"/>
</div>
</form>

<?php
if (isset($_POST['group1']) && isset($_POST['group2']) && isset($_POST['group3']) && isset($_POST['group4'])) {
    if ($_POST['group1']=='Yes' && $_POST['group2']=='Yes') && ($_POST['group3']=='Yes' && ($_POST['group4']=='Yes' print '<div><a href="http://www.mydomain.com/somefile.pdf">grab the file here</a></div>';
}
?>

Ответы [ 4 ]

2 голосов
/ 27 июля 2011

Вы пропускаете закрывающий ) во втором операторе if.

if (isset($_POST['group1']) && isset($_POST['group2']) && isset($_POST['group3']) && isset($_POST['group4'])) {
    if ($_POST['group1']=='Yes' && $_POST['group2']=='Yes') && ($_POST['group3']=='Yes' && ($_POST['group4']=='Yes' ) print '<div><a href="http://www.mydomain.com/somefile.pdf">grab the file here</a></div>';
}
1 голос
/ 27 июля 2011

Вы не закрыли свою вторую, если правильно:

if ($_POST['group1']=='Yes' 
   && $_POST['group2']=='Yes') 
   && ($_POST['group3']=='Yes' 
   && ($_POST['group4']=='Yes' 
    print '<div><a href="http://www.mydomain.com/somefile.pdf">grab the file here</a></div>';

try:

if ($_POST['group1']=='Yes' 
   && $_POST['group2']=='Yes'
   && $_POST['group3']=='Yes' 
   && $_POST['group4']=='Yes') 
    print '<div><a href="http://www.mydomain.com/somefile.pdf">grab the file here</a></div>';

Обратите внимание, что ваша ссылка будет показана после отправки формы-> на следующемстр.Чтобы показать его на той же странице, вам потребуется задействовать javaScript.

Также в качестве подсказки: попробуйте вводить разрывы строк в длинных операторах if, чтобы повысить удобочитаемость, что предотвратит потерю обзора.Для некоторых хороших методов смотрите здесь http://pear.php.net/manual/en/standards.php.

0 голосов
/ 27 июля 2011

JS / jQuery решение http://jsfiddle.net/nH8Xq/

HTML:

<form name="myform" action="" method="POST">
<div><br>
<p>Question 1?</p>
<input type="radio" name="group1" value="Yes"> Yes<br>
<input type="radio" name="group1" value="No"> No<br>
<hr>
<p>Question 2?</p>
<input type="radio" name="group2" value="Yes"> Yes<br>
<input type="radio" name="group2" value="No"> No<br>
<hr>
<p>Question 3?</p>
<input type="radio" name="group3" value="Yes"> Yes<br>
<input type="radio" name="group3" value="No"> No<br>
<hr>
<p>Question 4?</p>
<input type="radio" name="group4" value="Yes"> Yes<br>
<input type="radio" name="group4" value="No"> No<br>
<input type="submit"/>
</div>
</form>
<div id="link">
</div>

JS:

$('input:radio').change(function(){
    if(
        ($('input:radio[name=group1]:checked').val() == 'Yes') &&
        ($('input:radio[name=group2]:checked').val() == 'Yes') &&
        ($('input:radio[name=group3]:checked').val() == 'Yes') &&
        ($('input:radio[name=group4]:checked').val() == 'Yes')
    ){
        document.getElementById('link').innerHTML = '<div><a href="http://www.mydomain.com/somefile.pdf">grab the file here</a></div>';
    }
    else {
        document.getElementById('link').innerHTML = '';
    }

});
0 голосов
/ 27 июля 2011

это выглядит немного наоборот - php (как правило) интерпретируется на сервере перед отправкой страницы в браузер.Ваша веб-форма находится в браузере, но не будет иметь никакого php-кода.если вы хотите отобразить что-либо на основе пользовательского ввода, вам лучше использовать JavaScript (или аналогичный).

...