Когда я выбираю опцию из выбора, эта опция должна быть скрыта в другом выборе

1

Я выполняю упражнения в HTML и PHP, которые вычисляют расстояния от городов. Профессор попросил реализовать выбор таким образом, что, когда вы выбираете City A в одном выпадающем списке, вы не сможете выбрать City A в другом выпадающем списке. Как я могу это достичь?

Код HTML:

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <title>Distance</title>
</head>
<body>
    <form method="GET" action="Distancia.php">
        <select name="op1">
            <option value="SP">São Paulo</option>
            <option value="RJ">Rio de Janeiro</option>
        </select>

        <select name="op2">
            <option value="SP">São Paulo</option>
            <option value="RJ">Rio de Janeiro</option>
        </select>
        <input type="submit" value="Enviar"/>
</form>

</body>
</html>

PHP-код:

<?php
    $opcao1 = isset($_GET['op1']) ? $_GET['op1'] : false;
    $opcao2 = isset($_GET['op2']) ? $_GET['op2'] : false;
    echo "The distance between $opcao1 e $opcao2 is";
?>

Может ли кто-нибудь помочь мне решить эту проблему?

  • 0
    используйте jquery, событие .change () может сделать это за вас, проверьте эту ссылку api.jquery.com/change
  • 0
    Я не могу использовать Jquery .. Просто PHP
Показать ещё 3 комментария
Теги:

2 ответа

1
Лучший ответ

Я думаю, что это решит то, что вы хотите, но обратите внимание, что вам нужно сделать только один файл (Distancia.php)

<?php
$cities = array('SP' =>"São Paulo"  ,'RJ' =>"Rio de Janeiro");
$cities2 = $cities;
$city1 = $_GET['op1'];


if (isset($city1)){
    unset($cities2[trim($city1)]);
} 


if (isset($_GET['op1']) && isset($_GET['op2']) && $_GET['op2'] != '0' && $_GET['op1'] != $_GET['op2'] ) {
$cities2 = $cities;
$city1 = 0;
$opcao1 = isset($_GET['op1']) ? $_GET['op1'] : false;
$opcao2 = isset($_GET['op2']) ? $_GET['op2'] : false;
echo "The distance between $opcao1 e $opcao2 is";
}
?>

<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>Distance</title>
</head>
<body>
<form method="GET" action="Distancia.php">
    <select name="op1" onchange="this.form.submit()">
    <option value="0">choose</option>
    <?php foreach($cities as $key => $value) {?>
            <option value="<?php echo $key ?>" <?php if($key== $city1) echo "selected"?>><?php echo $value ?></option>
    <?php } ?>
    </select>

    <select name="op2">
    <option value="0">choose</option>
    <?php foreach($cities2 as $key2 => $value2) {?>
            <option value="<?php echo $key2 ?>"><?php echo $value2 ?></option>
    <?php } ?>
    </select>
    <input type="submit" value="Enviar"/>

  • 0
    Хороший odai .. Это именно то, что я хочу. Можете ли вы объяснить мне несколько вещей? Что делает отделка? И foreach тоже.
  • 0
    рад, что это помогло :), отделка удалит лишние пробелы в переменной $ city1, потому что в конце я взял один лишний пробел, foreach, потому что у вас более одного города, поэтому он будет повторяться для каждого города в массив и добавить их все в избранное,
Показать ещё 6 комментариев
0

вы можете попробовать ввести код здесь, если ($ opcao1 && ($ opcao1 == $ opcao2)) {echo $ opcao1.'избирается, plase выбирает другой город; } }

  • 0
    Но для этого я должен представить выбор с теми же параметрами. Профессор хочет, чтобы, когда я выбираю Город A, он исчезал из другого выбора, прежде чем я представлю

Ещё вопросы

Сообщество Overcoder
Наверх
Меню