2010-10-02 97 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的答案就是要走的路。