2014-11-17 76 views
2

我想選擇並打印出所有我有的表(我得到了這個),然後用``限制它,然後按表名排序,每頁10個結果。排序/限制表列表MySQL和PHP

我該怎麼做呢?我知道如何從表中獲取數據,但我不知道如何使用表來完成數據。

我有這個至今:

function list_tables($type){ 

$sql = "SHOW TABLES FROM example"; 
$result = mysql_query($sql); 
while($row = mysql_fetch_row($result)){ 
    $table_name = $row[0]; 
    echo $table_name; //edited out a lot to keep it simple 
    //I'm just printing out a lot of data based on table name anyway 
} 
mysql_free_result($result); 
} 

到目前爲止,只打印出所有的表名(+額外的信息我打印的表名)都在同一個頁面,它得到了點哪裏需要永遠滾動。我想將其限制爲每頁10-20個帖子,而不是一頁上的幾百個帖子。

在先進的感謝,如果任何人都可以幫助我。非常感激。

+0

試試這個:http://stackoverflow.com/questions/11635769/how-to-limit-show-tables-query –

+0

你想做分頁嗎?如果是的話[結帳本教程](http://www.freezecoders.com/2014/01/simple-pagination-using-php-mysql.html) –

+0

我喜歡那個教程,但是我有類似於已經表格中的數據,我只需要能夠使用表格自己做。如同樣,列出數據庫中的所有表格。我在這裏坐了幾個小時試圖找出它,我似乎無法做到這一點。 – Axiom

回答

0

我這樣做:

function list_tables(){ 
$amtperpage = 15; 
$sql = "SELECT COUNT(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA = 'my_dbname'"; 
$result = mysql_query($sql); 
$row = mysql_fetch_row($result); 
$total_rows = $row[0]; 

//pagination stuff here 
if(isset($_GET['p'])) $curpage = intval($_GET['p']); else $curpage=1; 
$start = abs(($curpage-1)*amtperpage); 
$sql = "SELECT TABLE_NAME FROM information_schema.tables ORDER BY TABLE_NAME ASC LIMIT $start,$per_page"; 
$res = mysql_query($sql); 
while($row=mysql_fetch_array($res)) $DATA[++$start]=$row; 
$uri = strtok($_SERVER['REQUEST_URI'],"?")."?"; 
$tmpget = $_GET; 
unset($tmpget['p']); 
if($tempget){ 
    $uri .= http_build_query($tmpget)."&"; 
} 
$num_pages=ceil($total_rows/$amtperpage); 
for($i=1;$i<=$num_pages;$i++) $PAGES[$i]=$uri.'p='.$i; 
?><div id="container">Pages: 
foreach ($PAGES as $i => $link){ 
if($i == $curpage){ 
=$i 
} else { 
?><a href="<?=$link?>"><?=$i?></a> 
} 
} ?> 
foreach($DATA as $i => $row){ 
$table_name = $row[0]; 
//use my functions to get data for each table name and list it and such 
} 
} 

這是非常屠殺,因爲我有很多的東西,會在該點的方式已經得到但這應該工作。感謝幫助過我的人。 :)

0

根據頁面數量來計算補償和限制,並嘗試下面的查詢:

function list_tables($type, $offset, $limit){ 

$sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'example' ORDER BY TABLE_NAME LIMIT $offset, $limit"; 
$result = mysql_query($sql); 
while($row = mysql_fetch_row($result)){ 
    $table_name = $row[0]; 
    echo $table_name; //edited out a lot to keep it simple 
    //I'm just printing out a lot of data based on table name anyway 
} 
mysql_free_result($result); 
} 
0

下面給出的查詢中使用,它支持限制,使你可以用你的表名進行分頁。

select * from information_schema.tables LIMIT 5