Отображение данных поля таблицы MySQL с выбором имени поля из выпадающего списка - PullRequest
0 голосов
/ 05 мая 2018

У меня есть следующий код для заполнения имен полей вместе в раскрывающемся списке. Я хотел бы иметь возможность отображать содержимое выбранного поля в таблице на странице. Будет выбрано только одно имя поля. Так что это будет таблица с одним столбцом на странице. Я не мог найти ничего похожего на это в Интернете. Буду рад, если кто-нибудь сможет мне помочь с этим. спасибо!

<?php 

$host = 'localhost'; 
$port = '3306'; 
$server = $host . ':' . $port; 
$user = 'root'; 
$password = ''; 
$link = count($t_tmp = explode(':', $server)) > 1 ? mysqli_connect($t_tmp[0], $user, $password, '', $t_tmp[1]) : mysqli_connect($server, $user, $password); 
if (!$link) { 
    die('Error: Could not connect: ' . mysqli_error($link)); 
} 
$database = 'mydb'; 
mysqli_select_db($link, $database); 
$query = 'select * from mytable'; 
$result = mysqli_query($link, $query); 
if (!$result) { 
    $message = 'ERROR:' . mysqli_error($link); 
    return $message; 
} else { 
    $i = 0; 
     echo '<select name="mySelect" id="mySelect">'; 
    while ($i < mysqli_field_count($link)) { 
        $meta =  
        mysqli_fetch_field_direct($result, $i); 
        echo '<option>' . $meta->name . '</option>'; 
        $i = $i + 1; 
    } 
echo '</select>';
} 
mysqli_close($link); 
?>

И это выглядит так:

enter image description here

Опции в поле выбора - это все имена полей, а не значения полей. Что мне нужно, это отображать значения полей при нажатии / выборе имени поля.

Ответы [ 3 ]

0 голосов
/ 05 мая 2018

Звучит так, будто вы хотите обработчик событий на ваш выбор.

$('#mySelect').on('change', function() {
  $.post('your-file.php', { 
    action: 'getOptionInfo',
    option: $('#mySelect option:selected').text()
  }, function(optionInfoHTML) {
    $('.table').html(optionInfoHTML);
  }
});

https://jsfiddle.net/mwe55nm9/1/

Кроме того, я рекомендую собирать выбранный вами HTML и отображать его целиком, а не снова и снова для каждого варианта. И только мои предпочтения, я бы использовал цикл for. Кажется, что циклы всегда застревают в бесконечных циклах.

... code to connect to database ...
switch ($_POST['action']) {
  case 'buildSelect':
    $options = '';
    for ($i = 0; $i < mysqli_field_count($link); $i++) { 
      $meta =  mysqli_fetch_field_direct($result, $i); 
      $options += . '<option>' . $meta->name . '</option>';
    } 
    echo '<select name="mySelect" id="mySelect">' . $options . '</select>';
    break;
  case 'getOptionInfo':
    echo "code to get info for $_POST['option']"
    break;
  default: echo 'Invalid action.'
}

https://api.jquery.com/jquery.post/

0 голосов
/ 09 мая 2018

Спасибо за вашу помощь! Я нашел свой ответ здесь: https://forums.phpfreaks.com/topic/307230-php-dropdown-menu-to-fetch-columnar-data/page-2#entry1558339

Вот код:

<table class="tbresult">

<?php 

include ("confige.php");

$query = 'select * from employees'; 
$result = mysqli_query($link, $query); 
if (!$result) { 
    $message = 'ERROR:' . mysqli_error($link); 
    return $message; 
} else { 
    $i = 0; 
    echo '<form name="selectSomething" action="" method="GET">';
     echo '<select name="mySelect" id="mySelect"  onchange="this.form.submit()">'; 
    while ($i < mysqli_field_count($link)) { 
        $meta =  
        mysqli_fetch_field_direct($result, $i); 
        echo '<option>' . $meta->name . '</option>'; 
        $i = $i + 1; 
    } 
echo '</select>';
echo '</form>';
} 

if(isset($_GET['mySelect'])) {
$myselect = $_GET['mySelect'];  // needs to be after the above check

$sql = "SELECT `$myselect` as mySelect FROM employees";  // add column alias
$result = mysqli_query($link, $sql);   

  if ($result->num_rows > 0) {

   // output data of each row
   while($row = $result->fetch_assoc()) 
   {
        echo "<tr><td>" . $row["mySelect"] . "</td></tr>";

   }

      echo "</table>";


}

} else { echo "0 results"; }


mysqli_close($link);

?>
0 голосов
/ 05 мая 2018

попробуйте это:

$country = mysqli_query($con, "SELECT country FROM countrys");
echo mysqli_num_rows($country);//counts the amount of rows in the db

echo '<select name="mySelect" id="mySelect">';

while(mysqli_fetch_array($country)){

while ($i = mysqli_fetch_array($country)) {

echo '<option value="'.$i['country'].'">' . $i['country']. '</option>'
}
echo '</select>';

всегда отлично работает;)

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