PHP форма результатов на той же странице - PullRequest
0 голосов
/ 04 сентября 2011

У меня очень простая форма, я хочу, чтобы пользователь выбирал, сортировать ли по возрастанию или по убыванию.В форме выбора я буду использовать ответ, чтобы привести результаты поиска в нужном порядке.Моя проблема в том, что форма не дает результата на странице, и оба утверждения «если» выполнены.Я полностью в тупике.Может ли кто-нибудь пролить свет?Спасибо

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<label for="sort">Sort by:</label>
<select name="thesort">
<option value="Lowest">Lowest first</option>
<option value="Highest">Highest first</option>
</select>
</form> 


<?php
if(isset($_POST["thesort"])){
echo "selection has been made";
}
?>

<?php if($_POST["thesort"]=="Highest"){ echo 'selected="selected"';} 
{

    echo "<p> choice is DESC </p>";


}
?>


<?php if($_POST["thesort"]=="Lowest"){ echo 'selected="selected"';} 
{
    echo "<p> choice is ASC </p>";


 ?>

Ответы [ 3 ]

2 голосов
/ 04 сентября 2011

Почему двойные фигурные скобки?PHP выполнит второй в любом случае.

if($_POST["thesort"]=="Highest")
{ echo 'selected="selected"';} 
{echo "<p> choice is DESC </p>";}

Ваш код изменен:

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<label for="sort">Sort by:</label>
<select name="thesort">
<option value="Lowest">Lowest first</option>
<option value="Highest">Highest first</option>
</select>
</form> 

<?php
if(isset($_POST["thesort"])){
echo "selection has been made";
}

if($_POST["thesort"]=="Highest"){
echo 'selected="selected"';
echo "<p> choice is DESC </p>";
}

if($_POST["thesort"]=="Lowest"){
echo 'selected="selected"';
echo "<p> choice is ASC </p>";
}
?>
0 голосов
/ 04 сентября 2011
<?php
$sort = 'Lowest'; // define the default
if (isset($_POST['thesort']) && $_POST['thesort'] == 'Highest') {
    $sort = 'Highest';
}
?>

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
  <label for="sort">Sort by:</label>
  <select name="thesort">
    <option value="Lowest"<?php if ($sort == 'Lowest') print(' selected="selected"'); ?>>Lowest first</option>
    <option value="Highest"<?php if ($sort == 'Highest') print(' selected="selected"'); ?>>Highest first</option>
  </select>
</form> 
0 голосов
/ 04 сентября 2011

Это проблема:

<?php if($_POST["thesort"]=="Highest"){ echo 'selected="selected"';} 
{
    echo "<p> choice is DESC </p>";
}
?>

а) Эти скобки не делают то, что, я думаю, вы думаете, они делают.В частности, второй набор не имеет значения;этот код будет всегда исполняться

б) Почему вы повторяете 'selected = ..' здесь?Это не в контексте открытого тега <option.Например, вы, вероятно, хотите что-то вроде:

echo '<option value="Highest';

if ($_POST["thesort"]=="Highest")
{
    echo ' selected="selected"';
}

echo '">Highest first</option>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...