2016-05-08 25 views
0

このスクリプトを使用すると、ドロップダウンから表を選択して、選択した表の内容を表示できます。内容を表示する表のドロップダウン

  1. 現在、DB接続が機能しています。
  2. ドロップダウンリストにテーブルの一覧が表示されます。

問題:データベーステーブルの内容は表示されません。 コードをチェックしても問題はないようですが、まだ部分的にしか機能していないようです。

<?php 
//update this to your DB connection details. 
$dbh = "localhost"; 
$dbn = "dbname"; 
$dbu = "dbuser"; 
$dbp = "dbpass"; 

$conn = mysql_connect($dbh,$dbu,$dbp) or die("Unable to connect do database."); 
mysql_select_db($dbn, $conn) or die("Unable to select database."); 

//Some vars for Order by and Limit. 
if (!isset($ordBy)){ 
    $ordBy = 1; 
} 
if (!isset($ps)){ 
    $ps = 0; 
} 
if (!isset($ord)){ 
    $ord = 1; 
} 
if ($ord == 1){ 
    $tOrder = "ASC"; 
} else { 
    $tOrder = "DESC"; 
} 

//Tables drop-down 

$result = mysql_query("SHOW TABLES FROM $dbn") or die("Cannot list table names."); 
echo " 
<form name=\"table_browser\" action=\"".$PHP_SELF."\" method=\"GET\" > 
    <select name=\"t\" onChange=\"javascript:submit();\"> 
     <option>Select a table</option> 
"; 
while ($row = mysql_fetch_row($result)){ 
    echo "  <option value=".$row[0].">".$row[0]."</option>\n"; 
} 
echo " </select> 
</form>\n"; 

if (!isset($t)){ 
    die("Please select a table"); 
} 

//Get number of rows in $t and then select 
$result = mysql_query("SELECT COUNT(*) FROM $t") or die("The requested table doesn't exist."); 
$total = mysql_result($result,0); 
$qry = "SELECT * FROM $t ORDER BY ".$ordBy." ".$tOrder." LIMIT ".($ps*20).",20 "; 

if (isset($qry)) { 
    $result = mysql_query($qry) or die("The requested table doesn't exist."); 
    $i = 0; 
    while ($i < mysql_num_fields($result)) { 
     $meta = mysql_fetch_field($result); 
     if (!$meta) { 
      echo "No information available on the table<br />\n"; 
     } 
     $name[$i] = $meta->name; 
     $i++; 
    } 
    //Display table details 
    echo "Rows ".($ps*20+1)." to ".((($ps+1)*20 < $total) ? (($ps+1)*20) : ($total))." of $total from table: 

<b>$meta->table</b>\n<br /><br />\n"; 

    //Count results 
    if ($ps > 0) { 
     echo "<a href=\"browse.php?t=$t&ps=".($ps-1)."&ordBy=$ordBy&ord=$ord\">20 Previous</a> - "; 
    } else { 
     echo "20 Previous - "; 
    } 
    if ((($ps+1)*20) < $total){ 
     echo "<a href=\"browse.php?t=$t&ps=".($ps+1)."&ordBy=$ordBy&ord=$ord\">Next 20</a>\n"; 
    } else { 
     echo "Next 20\n"; 
    } 

    //Column names 
    echo "<br /><br />\n<table>\n <tr>\n"; 
    for ($j = 0; $j < $i; $j++){ 
     echo "  <td><b><a href=\"browse.php?t=$t&ps=$ps&ordBy=$name[$j]&ord=".(-$ord)."\">$name[$j]</a></b>"; 
     if ($ordBy == $name[$j]) { 

      echo "<img src=\"images/arrow$ord.gif\">"; 
     } 
     echo "</td>\n"; 
    } 
    echo " </tr>\n"; 

    //Data 
    while ($row = mysql_fetch_array($result)){ 
     echo " <tr onmouseover=\"this.style.background='#DDDDDD'\" onmouseout=\"this.style.background=''\">"; 
     for ($j = 0; $j < $i; $j++){ 
      echo "<td>".$row[$name[$j]]."</td>"; 
     } 
     echo "</tr>\n"; 
    } 
    echo "</table>\n"; 
} 
mysql_close(); 
?> 
+0

あなたが求めていることがはっきりしない場合は、詳しく説明する必要があります。 – Rasclatt

+0

問題の説明を更新します。 – gentlebreeze

答えて

0

@gentlebreeze - 私の目はそれを読み取ろうとするから傷つける - しかし、あなたが実際に$ tのという変数に設定されている場合、私は見ることができない - テーブルを決定するために使用されます。あなたが行の前に

$t = $_GET['t']; 

どこかに持っている必要があります。

....if (!isset($t)){.... 

あなたはラインでそれを使用する必要があるため:

....$result = mysql_query("SELECT COUNT(*) FROM $t".... 

、あなたがするmysql_queryを使用すべきではないのいずれか - 古いものと現在は推奨されていません。 PDOとバインドされた変数に切り替える必要があります。

+0

変数$ tをテストおよびその作業に追加します。 – gentlebreeze

+0

素晴らしい - 喜んで助けてください。 :)) – gavgrif

関連する問題