Заполните второй блок выбора содержимым из SQL в зависимости от выбора в первом (PHP) - PullRequest
0 голосов
/ 04 ноября 2018

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

Вот что у меня есть: MySQL-DB на веб-сервере, который запущен и работает. Эта БД содержит таблицу с именем worldcities, в которой хранятся страны, города и их значения широт / долгот.

У меня есть PHP-файл на моем сервере, который успешно устанавливает соединение, считывает все страны и заполняет первое поле выбора. Мой второй блок выбора должен содержать все города на основе выбора страны в первом блоке. В настоящее время мой код содержит заполнитель SQL-запроса.

Я понимаю, что PHP - это серверная технология, которая нуждается в помощи для взаимодействия с пользовательским вводом на стороне клиента. Я просто не понимаю, как решить мою проблему здесь.

Может ли кто-нибудь быть таким любезным, чтобы помочь / направить меня в решении моей проблемы? Это будет означать мир для меня. Заранее большое спасибо.

Код:

<?php
$dbhost     = "xxx";
$dbname     = "xxx";
$dbtable    = "xxx";
$dbuser     = "xxx";
$dbpass     = "xxx";

try{
    $pdo = new PDO( "mysql:host=$dbhost;dbname=$dbname;charset=UTF8", "$dbuser", "$dbpass" );
    $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch( PDOException $e ){
    echo $e->getMessage();
    die();
}
$query_country_start = $pdo->query( "SELECT Country FROM $dbtable GROUP BY Country" );
$query_city_start = $pdo->query( "SELECT City FROM $dbtable ORDER BY City" );
?>

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Select Country and City</title>
</head>

<body>
<h1>Select Country and City</h1>
<div id="cities">

<p>Start Country</p>
<?php
    echo '<select name="country_start">';
    while ($row = $query_country_start->fetch(PDO::FETCH_ASSOC)) {
        echo '<option value="'.$row['Country'].'">'.$row['Country'].'</option>';
        }
    echo '</select><br><br>';
?>

<p>Start City</p>
<?php
    echo '<select name="city_start">';
    while ($row = $query_city_start->fetch(PDO::FETCH_ASSOC)) {
    echo '<option value="'.$row['City'].'">'.$row['City'].'</option>';
        }
    echo '</select>';
?>
</div>

<script>
</script>

</body>
</html>

1 Ответ

0 голосов
/ 04 ноября 2018

Заполнение второго поля намного сложнее. Это потому, что теперь вы хотите заполнить поле на основе выбора пользователя.

Вот основные компоненты -

  1. Используйте обработчик событий Javascript для запуска при обновлении первого поля выбора.
  2. Запустить обратный вызов AJAX на веб-сервере для вызова метода PHP.
  3. Метод запросит базу данных, чтобы получить список городов, отфильтрованных по выбранной стране. Результаты отражаются обратно на передний конец.
  4. Javascript считывает результаты и обновляет окно выбора городов.

Здесь есть множество концепций, которые можно обернуть вокруг, но есть также много уроков, которые вы можете использовать и черпать вдохновение. https://www.youtube.com/watch?v=tMmXzjJWlnU

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...