Назначение каждому первичному ключу своего собственного столбца - PullRequest
0 голосов
/ 02 октября 2010
//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 1     |ID2      |ID3      | >>>> so on going across to ID10
------------------------------------
|Audi     |BMW      |Cadillac |
----------------------------------
|A3    |3Series  |....     |
---------------------------------
|$22,000  |$24,000  |..       |
--------------------------------

Ответы [ 3 ]

1 голос
/ 02 октября 2010
<?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();

?>

Подробнее о DOMDocument см. http://php.net/manual/en/class.domdocument.php. Конечно, это можно сделать намного короче, но я хотел оставить все как есть без вуду, чтобы показать суть. Всегда используйте DOM для генерации HTML, это кажется сложным, но на самом деле это экономит время, если вы делаете несколько ярлыков для общих задач. Если вы хотите иметь специфический вкус HTML на выходе, просто загрузите шаблон со всеми заголовками. Вы можете предоставить его в виде строки или используя HTML-файл. Хорошая вещь заключается в том, что метод loadHTML () выполняет некоторые основные операции для вас. Плохо то, что использование HTML5 или XHTML требует взлома.

1 голос
/ 02 октября 2010
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 голосов
/ 03 октября 2010

Если вы не отображаете много данных одновременно, вы можете сначала загрузить все данные в массив, а затем вывести их так, как вы хотите. В противном случае ответ From.ME.to.YOU - путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...