Tengo el siguiente código para completar los nombres de campo en una lista desplegable. Me gustaría poder mostrar el contenido del campo seleccionado en una tabla de la página. Solo se seleccionará un nombre de campo. Por lo tanto, será una tabla de una sola columna en la página. No pude encontrar nada similar a esto en la web. Me alegraría si alguien me puede ayudar con esto. ¡Gracias!

<?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); 
?>

Y se ve así:

enter image description here

Las opciones en el cuadro de selección son todos los nombres de campo, no los valores de campo. Lo que necesito es mostrar los valores de campo cuando se hace clic / se selecciona el nombre del campo.

0
Max 5 may. 2018 a las 15:17

3 respuestas

La mejor respuesta

¡Gracias por tu ayuda! Encontré mi respuesta aquí: https://forums.phpfreaks.com/topic/307230-php-dropdown-menu-to-fetch-columnar-data/page-2#entry1558339

Aquí está el código:

<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
Max 9 may. 2018 a las 14:40

Intente esto:

$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>';

Siempre funciona bien;)

0
Th3_N3w_D3v3l0p3r 5 may. 2018 a las 14:40

Parece que quiere un controlador de eventos en su selección.

$('#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/

Además, recomiendo construir su html seleccionado y repetirlo como un todo, en lugar de una y otra vez para cada opción. Y solo mi preferencia, usaría un bucle for. Mientras que los bucles siempre parecen atascarse en bucles infinitos.

... 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
PoorlyWrittenCode 6 may. 2018 a las 14:00