2016-06-01 11 views
1

Dieses Bit des Codes below verbindet sich mit einem DB (unter Verwendung config.php) und erstellt dann die folgende Dropdown-Liste.Erstellen eines Dropdown-Menüs mit verfügbaren Tabellen in einem DB

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 

Dies ist der Dropdown-Code, der erstellt wird, und Sie können es ausführen, um es in Aktion zu sehen.

<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>

, was ich will ist tun, um diese Linie $sql="SELECT name,id FROM student order by name"; so ändern, dass die Drop-Down-show tables alle Tabellen in einem DB zum Beispiel enthalten wird. Angesichts dessen, was ich zur Verfügung gestellt habe, kann das leicht gemacht werden? Oder sollte ich eine andere Methode verwenden? Es wäre auch gut, wenn ich nur bestimmte Tabellen z. Tabellen, die mit Tab beginnen.

wie diese

<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 Dies sind die Linien Ich glaube, ich ändern müssen; aber das ist mein Problem $sql="SHOW tables";

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

+1

Haben Sie versucht, 'Show-Tabellen' zu verwenden? –

+0

@KIKO Software Ich habe versucht, Tabellen zu zeigen, aber meine Prolem ist in der PHP-Code, um herauszuziehen, was ich will und es in den HTML-Code. Ich hätte das in der Frage spezifizieren sollen. – HattrickNZ

+0

Es funktioniert genauso wie in dem Code, den Sie haben. Sie erhalten nur Tabellennamen. In der 'foreach'-Schleife können Sie 'var_dump ($ row);' anstelle des Dropdown-Menüs verwenden, um zu sehen, was das Ergebnis der Abfrage ist. Auf diese Weise können Sie herausfinden, was in der Reihe ist. –

Antwort

0

Getestet habe ich diese und es funktionierte mein Server. Das table_schema = 'yourDBname' ist der Schlüssel, weil Sie sonst Dutzende von zufälligen Tabellen erhalten können.

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

Sie sollten in der Lage sein, Ihre Abfrage durch diese zu ersetzen und die gleiche Art von Drop-Down zu tun. Sind Sie sicher, dass Sie die Namen Ihrer Tabellen aus Sicherheitsgründen kennen sollten?

0

Sie können die Tabellennamen aus einem bestimmten Schema abrufen, entweder SHOW TABLES, wie Sie vorgeschlagen haben, oder indem Sie INFORMATION_SCHEMA.TABLES auswählen, und Sie können nach partieller Tabellenname mit einer der beiden Methoden filtern.

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

oder

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

Beides sollten Sie das gleiche Ergebnis.

$stmt wird ein PDOStatement Objekt sein. Sie können die Methode fetchColumn verwenden, um die Tabellennamen als einzelne Werte für Ihre <option> Werte abzurufen. Auf diese Weise verursacht der ungerade "Spaltenname", der von SHOW TABLES generiert wird, kein Problem, wenn Sie sich entscheiden, diese Abfrage zu verwenden.

echo '<select name="tables">'; 
while ($table_name = $stmt->fetchColumn()) { 
    echo "<option value=\"$table_name\">$table_name</option>"; 
} 
echo '</select>'; 
Verwandte Themen