2010-10-02 99 views
0
//Define your database settings. 
define('DB_HOST', ''); 
define('DB_PORT', ''); 
define('DB_USER', ''); 
define('DB_PASS', ''); 
define('DB_NAME', ''); 

$database = new MySQLi(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT); 

// Escape the id, incase it's a malicious input. 
$id = $database->real_escape_string($id); 

$sql = 'SELECT Brand.brand, Model.model, Price.price' 
. ' FROM Model' 
. ' INNER JOIN Brand ON Model.brand_id = Brand.brand_id' 
. ' INNER JOIN Price ON Model.model_id = Price.model_id' 
. ' WHERE Price.price BETWEEN 1 AND 5'; 

$result = $database->query($sql); 

// Begin building some HTML output 

$html = '<table border="0"> 
<tr> 
<th></th> 
</tr>'; 

while ($row = $result->fetch_assoc()) 
{ 
    $html .= '<tr><td>' . $row['brand'] . '</td></tr>'; 
    $html .= '<tr><td>' . $row['model'] . '</td></tr>'; 
    $html .= '<tr><td>' . $row['price'] . '</td></tr>'; 
} 

$html .= '</table>'; 

echo $html; 

示例HTML表輸出到我的網頁上,現在是一列去 一路下跌指定每個主鍵自己的列

----------- 
|ID 1  | 
----------- 
|Audi  | 
----------- 
|A3 | 
----------- 
|$22,000 | 
----------- 
|ID 2  | 
----------- 
|BMW  | 
----------- 
|3Series | 
----------- 
|$24,000 | 
----------- 
| ID3 
--------- 
|Cadillac 
------- 
|....... keeps going down to ID10 

我想什麼來實現的分配各列其自身ID會跨

-------------------------------------- 
|ID 1  |ID2  |ID3  | >>>> so on going across to ID10 
------------------------------------ 
|Audi  |BMW  |Cadillac | 
---------------------------------- 
|A3 |3Series |....  | 
--------------------------------- 
|$22,000 |$24,000 |..  | 
-------------------------------- 

回答

1
<?php 

//Define your database settings. 
define('DB_HOST', ''); 
define('DB_PORT', ''); 
define('DB_USER', ''); 
define('DB_PASS', ''); 
define('DB_NAME', ''); 

$database = new MySQLi(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT); 

// Escape the id, incase it's a malicious input. 
$id = $database->real_escape_string($id); 

$sql = 'SELECT Brand.brand, Model.model, Price.price' 
. ' FROM Model' 
. ' INNER JOIN Brand ON Model.brand_id = Brand.brand_id' 
. ' INNER JOIN Price ON Model.model_id = Price.model_id' 
. ' WHERE Price.price BETWEEN 1 AND 5'; 

$result = $database->query($sql); 

// Begin building some HTML output 


$d = new DOMDocument('1.0', 'UTF-8'); 
$d->loadHTML('<body></body>'); // to make it quick 

$table = $d->createElement('table'); 
$brand_row = $table->appendChild($d->createElement('tr')); 
$model_row = $table->appendChild($d->createElement('tr')); 
$price_row = $table->appendChild($d->createElement('tr')); 

while ($row = $result->fetch_object()) 
{ 
    $brand = $brand_row->appendChild($d->createElement('td')); 
    $model = $model_row->appendChild($d->createElement('td')); 
    $price = $price_row->appendChild($d->createElement('td')); 
    $brand->appendChild($d->createTextNode($row->brand)); 
    $model->appendChild($d->createTextNode($row->model)); 
    $price->appendChild($d->createTextNode($row->price)); 
} 

$body = $d->getElementsByTagName('body')->item(0); 
$body->appendChild($table); 

echo $d->saveHTML(); 

?> 

參考http://php.net/manual/en/class.domdocument.php對DOM文檔的詳細信息。當然,它可以做得更短,但是我想在沒有任何伏都教的情況下保持平靜。總是使用DOM來生成HTML,它看起來很精細,但實際上它是一個很好的節省時間,如果你爲普通任務做一些快捷方式。如果您希望在輸出中具有特定的HTML風格,只需加載一個包含所有標題的模板。您可以將其作爲字符串或使用html文件提供。好的是loadHTML()方法爲你做了一些基本的整理。壞事是使用HTML5或XHTML需要一些黑客。

+0

令人驚歎的感謝一切,它的作品!我一直在研究這一點。我會查看代碼和您提供的用於消化所有這些的鏈接。 – bradpotts 2010-10-02 22:44:06

1
while ($row = $result->fetch_assoc()) { 
    $html .= '<div class="container">'; 
    $html .= '<span class="brand">' . $row['brand'] . '</span>'; 
    $html .= '<span class="model">' . $row['model'] . '</span>'; 
    $html .= '<span class="price">' . $row['price'] . '</span>'; 
    $html .= "</div"; 
} 

,並添加一些CSS的HTML

.container{ 
    display:inline-block; 
    width: xx;//width in px 
    height:xx;//height in px 
} 

.brand{ 
    display:block; 
    //and add your width and height 
} 

.model{ 
    display:block; 
    //and add your width and height 
} 

.price{ 
    display:block; 
    //and add your width and height 
} 
+0

謝謝你的回答完美,我回答了上面的答案,但我希望你能夠得到你的意見和幫助。 – bradpotts 2010-10-02 22:45:16

0

如果您一次不顯示大量數據,則可以先將所有數據加載到數組中,然後按照需要輸出數據。否則From.ME.to.YOU的答案就是要走的路。