2016-06-01 2 views
1

Этот бит кода below подключается к БД (с использованием config.php), а затем создает раскрывающееся меню ниже.создание раскрывающегося списка доступных таблиц в БД

include "config.php"; // Database connection using PDO 

//$sql="SELECT name,id FROM student"; 

$sql="SELECT name,id FROM student order by name"; 

/* You can add order by clause to the sql statement if the names are to be displayed in alphabetical order */ 

echo "<select name=student value=''>Student Name</option>"; // list box select command 

foreach ($dbo->query($sql) as $row){//Array or records stored in $row 

echo "<option value=$row[id]>$row[name]</option>"; 

/* Option values are added by looping through the array */ 

} 

echo "</select>";// Closing of list box 

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

<br> 
 
<br> The list box is here 
 
<select name=student value=''>Student Name</option> 
 
    <option value=1>John Deo</option> 
 
    <option value=2>Max Ruin</option> 
 
    <option value=3>Arnold</option> 
 
    <option value=4>Krish Star</option> 
 
    <option value=5>John Mike</option> 
 
    <option value=6>Alex John</option> 
 
    <option value=7>My John Rob</option> 
 
    <option value=8>Asruid</option> 
 
    <option value=9>Tes Qry</option> 
 
    <option value=10>Big John</option> 
 
    <option value=11>Ronald</option> 
 
    <option value=12>Recky</option> 
 
    <option value=13>Kty</option> 
 
    <option value=14>Bigy</option> 
 
    <option value=15>Tade Row</option> 
 
    <option value=16>Gimmy</option> 
 
    <option value=17>Tumyu</option> 
 
    <option value=18>Honny</option> 
 
    <option value=19>Tinny</option> 
 
    <option value=20>Jackly</option> 
 
    <option value=21>Babby John</option> 
 
    <option value=22>Reggid</option> 
 
    <option value=23>Herod</option> 
 
    <option value=24>Tiddy Now</option> 
 
    <option value=25>Giff Tow</option> 
 
    <option value=26>Crelea</option> 
 
    <option value=27>Big Nose</option> 
 
    <option value=28>Rojj Base</option> 
 
    <option value=29>Tess Played</option> 
 
    <option value=30>Reppy Red</option> 
 
    <option value=31>Marry Toeey</option> 
 
    <option value=32>Binn Rott</option> 
 
    <option value=33>Kenn Rein</option> 
 
    <option value=34>Gain Toe</option> 
 
    <option value=35>Rows Noump</option> 
 
</select> 
 
<br> 
 
<br>

, что я хочу сделать, это изменить эту строку $sql="SELECT name,id FROM student order by name"; так, что выпадающий будет содержать все таблицы в БД, например show tables. Учитывая, что я предоставил, это легко сделать? Или использовать другой метод? Было бы хорошо, если бы я мог показывать только определенные таблицы, например. таблицы, начинающиеся с Tab.

как этот

<br> 
 
<br> The list box is here with available tables 
 
<select name=student value=''>TableName</option> 
 
    <option value=1>Table1</option> 
 
    <option value=2>Table2</option> 
 
    <option value=3>Table3</option> 
 
</select> 
 
<br> 
 
<br>

edit1 Эти строки я думаю, мне нужно изменить; но это моя проблема $sql="SHOW tables";

echo "<option value=$row[id]>$row[name]</option>";

+1

Вы пытались использовать «show tables»? –

+0

@KIKO Software Я пробовал показать таблицы, но мой профайл находится в PHP-коде, чтобы извлечь то, что я хочу, и поместить его в html-код. Я должен был указать это в вопросе. – HattrickNZ

+0

Он будет работать точно так же, как и в коде, который у вас есть. Вы получите только имена таблиц. В цикле 'foreach' вы можете использовать' var_dump ($ row); 'вместо того, чтобы вызывать раскрывающийся список, чтобы узнать, каков результат запроса. Таким образом, вы можете узнать, что находится в строке. –

ответ

0

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

select table_name from information_schema.tables where table_schema='yourDBname' 

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

0

Вы можете получить имена таблиц из определенной схемы, используя либо SHOW TABLES, как вы предложили, либо выбрав из INFORMATION_SCHEMA.TABLES, и вы можете фильтровать частичные имена таблиц любым из способов.

$stmt = $dbo->query("SHOW TABLES FROM your_schema LIKE 'Tab%'"); 

или

$stmt = $dbo->query("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES 
        WHERE TABLE_SCHEMA='your_schema' AND TABLE_NAME LIKE 'Tab%'"); 

Любой из них должен дать тот же результат.

$stmt будет PDOStatement объект. Вы можете использовать его метод fetchColumn, чтобы получить имена таблиц в виде одиночных значений для ваших значений <option>. Таким образом, нечетное «имя столбца», сгенерированное SHOW TABLES, не вызовет проблемы, если вы решите использовать этот запрос.

echo '<select name="tables">'; 
while ($table_name = $stmt->fetchColumn()) { 
    echo "<option value=\"$table_name\">$table_name</option>"; 
} 
echo '</select>'; 
Смежные вопросы