Как отобразить определенные столбцы из таблицы, используя список HTML и код SQL? - PullRequest
0 голосов
/ 03 сентября 2018

Добрый день, у меня есть следующий запрос: Таблица с 2 столбцами: Страна и Столица. Таблица содержит каждую страну с каждой столицей мира. Есть список, в котором я могу выбрать страну, и в нем будет отображаться только столица этой страны.

Я создал с помощью HTML список, позволяющий выбрать страну:

< select> <br>
< option Country = "Brasil"> Brasil < /option> <br>
< option Country = "... "> .. < /option> <br>
< /select> </br>


Как я могу отобразить заглавную букву, используя страну из этого списка HTML? Я думал создать опцию для каждой столицы, но тогда мне понадобится более 120 , если . (В SQL)

Ответы [ 2 ]

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

Вы можете выбрать страны и их столицы из базы данных, используя следующий код в php

//This is where you put the fetched data
$entries = Array();

//Make new connection
$connection  = new mysqli("127.0.0.1", "username", "password", "databasename");

//Create prepared statement
$statement = $connection->prepare("SELECT `country`, `capital` FROM `table`");
$statement->bind_result($country, $capital);

//Put the fetched data in the result array
while($statement->fetch()) {
  $entry = Array();

  $entry['country'] = $country;
  $entry['capital'] = $capital;

  $entries[] = $entry;
}

//Close the statement and connection
$statement->close();
$connection->close(); 

Далее вы создаете объекты HTML select. Важно, чтобы порядок стран оставался таким же, как порядок столиц.

<!-- Country selection -->
<select id="select-country">
 <?php $i = 0;
       foreach ($entries as $c) { ?>
       <option data-country="<?php echo $i++; ?>"><?php echo $c['country'] ?></option>
   <?php } ?>
</select>

<!-- Capitals select -->
<select id="select-capital">
  <?php $i = 0;
       foreach ($entries as $c) { ?>
        <option data-capital="<?php echo $i++ ?>"><?php echo $c['capital'] ?></option>
   <?php } ?>
</select>

Наконец, вы добавляете прослушиватель событий в select с идентификатором select-country, где вы слушаете событие change. После вызова вы изменяете выбранный индекс второго select на индекс первого. Вот почему важно, чтобы порядок не изменился.

<script>
        document.getElementById('select-country').addEventListener('change', function () {
            document.getElementById('select-capital').getElementsByTagName('option')[this.selectedIndex].selected = true;
        });
</script>
0 голосов
/ 03 сентября 2018

Вы можете создать форму выбора:

<?php 
$req = $pdo->query('SELECT * FROM table');
$rep = $req->fetchAll(); ?>
<select>
foreach($rep as $row) { ?>
  <option value="<?= $row['country'] ?>"><?= $row['country'] ?></option>
<? } ?>
</select>
<?php foreach($rep as $row) { 
  <input style="display:none" id="<?= $row['country'] ?>" value="<?= $row['capital'] ?>" />
<?php } ?>

Таким образом, у вас будет выбор со всей страной и ввод для каждой столицы с указанием их страны в качестве идентификатора, чтобы вы могли отобразить ее с помощью javascript: (пример jQuery)

<script>
$('select').change(function() {
  $('input:visible').toggle(); 
  $('input[id='+$(this).val()+']').toggle();
});
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...