Создание таблицы HTML из таблицы sql
У меня есть таблица в базе данных SQL со следующими полями: ID, Name, Email, University, Languages и Experience. Я хочу создать таблицу html, которая извлекает данные из SQL и выводит последние 10 результатов? Как мне это сделать?
извините, если это очень простой вопрос, у меня очень мало знаний в PHP и SQL.
вот код, который у меня есть прямо сейчас, который просто отображает имя, а не в таблице:
<html>
<head>
<title>Last 5 Results</title>
</head>
<body>
<?php
$connect = mysql_connect("localhost","root", "root");
if (!$connect) {
die(mysql_error());
}
mysql_select_db("apploymentdevs");
$results = mysql_query("SELECT * FROM demo");
while($row = mysql_fetch_array($results)) {
echo $row['Name'] . "</br>";
?>
</body>
</html>
7 ответов
вот что должно помочь вам создать таблицу и получить больше знаний о php и в MySQL.
также вы должны переместить логику соединения и запрос в начало вашего процесса, таким образом, избегая ошибок при загрузке страницы и показывая более точную ошибку, чем просто mysql_error.
Edit: если ваши идентификаторы увеличиваются, вы можете добавить предложение ORDER BY,
изменения: SELECT * FROM demo LIMIT 10
к: SELECT * FROM demo LIMIT 10 ORDER BY id
<html>
<head>
<title>Last 10 Results</title>
</head>
<body>
<table>
<thead>
<tr>
<td>Id</td>
<td>Name</td>
</tr>
</thead>
<tbody>
<?php
$connect = mysql_connect("localhost","root", "root");
if (!$connect) {
die(mysql_error());
}
mysql_select_db("apploymentdevs");
$results = mysql_query("SELECT * FROM demo LIMIT 10");
while($row = mysql_fetch_array($results)) {
?>
<tr>
<td><?php echo $row['Id']?></td>
<td><?php echo $row['Name']?></td>
</tr>
<?php
}
?>
</tbody>
</table>
</body>
</html>
опция, требующая кодирования данных в базе данных в JSON:http://www.jeasyui.com/documentation/datagrid.php
но это выглядит намного более многообещающим:http://phpgrid.com/
вызов table( $result );
в результатах запроса будет создана таблица на основе html независимо от размера массива sql, который вы его передаете. Надеюсь, это поможет :)
<?php
function table( $result ) {
$result->fetch_array( MYSQLI_ASSOC );
echo '<table>';
tableHead( $result );
tableBody( $result );
echo '</table>';
}
function tableHead( $result ) {
echo '<thead>';
foreach ( $result as $x ) {
echo '<tr>';
foreach ( $x as $k => $y ) {
echo '<th>' . ucfirst( $k ) . '</th>';
}
echo '</tr>';
break;
}
echo '</thead>';
}
function tableBody( $result ) {
echo '<tbody>';
foreach ( $result as $x ) {
echo '<tr>';
foreach ( $x as $y ) {
echo '<td>' . $y . '</td>';
}
echo '</tr>';
}
echo '</tbody>';
}
Я очень раздражался, вставляя один и тот же код снова и снова, чтобы строить HTML-таблицы из SQL-запросов.
Итак, здесь мы идем с функция, которая принимает mysqli
результаты и вставляет их вместе в простую простую таблицу HTML который имеет имена столбцов в соответствии с теми, в базе данных:
function sql_to_html_table($sqlresult, $delim="\n") {
// starting table
$htmltable = "<table>" . $delim ;
$counter = 0 ;
// putting in lines
while( $row = $sqlresult->fetch_assoc() ){
if ( $counter===0 ) {
// table header
$htmltable .= "<tr>" . $delim;
foreach ($row as $key => $value ) {
$htmltable .= "<th>" . $key . "</th>" . $delim ;
}
$htmltable .= "</tr>" . $delim ;
$counter = 22;
}
// table body
$htmltable .= "<tr>" . $delim ;
foreach ($row as $key => $value ) {
$htmltable .= "<td>" . $value . "</td>" . $delim ;
}
$htmltable .= "</tr>" . $delim ;
}
// closing table
$htmltable .= "</table>" . $delim ;
// return
return( $htmltable ) ;
}
Пример Использования:
$DB = new mysqli("host", "username", "password", "database");
$sqlresult = $DB->query( "SELECT * FROM testtable LIMIT 1 ;" ) ;
echo sql_to_html_table( $sqlresult, $delim="\n" ) ;
вы можете быть заинтересованы в получении с mysql_fetch_assoc()
(чтобы получить данные в ассоциативном массиве: keys=>value). В ключах указаны имена столбцов ; поэтому для каждой строки вы можете выполнить цикл через каждый столбец (с array_keys()
) и выведите его значение.
$results = mysql_query("SELECT * FROM demo");
while($row = mysql_fetch_assoc($results)) {
foreach (array_keys($row) as $column) {
echo $row[$key] . "</br>";
}
}
(после этого вы можете кэшировать array_keys($row) в переменной, которая устанавливается только один раз, потому что ее значение не изменится во время выполнения результатов.)
хотя прошло некоторое время, я собираюсь положить свои 2 цента: использовать функции (даже лучше - классы). Создание таблиц из результатов mysql-очень распространенная задача.
<!DOCTYPE html>
<html>
<head><title>Create Tables from MySQL using functions</title></head>
<body>
<?php
db_connect();
// assuming you have an auto increment id as the first column
$result = mysql_query("SELECT * FROM demo ORDER BY 1 DESC LIMIT 10");
print createTable(array_result($result));
?>
</body>
</html>
<?php
/**
* Quick mysql result function
*
* @param $result
* @return array
*/
function array_result($result)
{
$args = array();
while ($row = mysql_fetch_assoc($result)) {
$args[] = $row;
}
return $args;
}
/**
* Connect to db
*
* @param string $db_host
* @param string $db
*/
function db_connect($db_host = "localhost", $db = "apploymentdevs")
{
$connect = mysql_connect($db_host,"root", "root");
if (!$connect) {
die(mysql_error());
}
mysql_select_db($db);
}
/**
* Create a table from a result set
*
* @param array $results
* @return string
*/
function createTable(array $results = array())
{
if (empty($results)) {
return '<table><tr><td>Empty Result Set</td></tr></table>';
}
// dynamically create the header information from the keys
// of the result array from mysql
$table = '<table>';
$keys = array_keys(reset($results));
$table.='<thead><tr>';
foreach ($keys as $key) {
$table.='<th>'.$key.'</th>';
}
$table.='</tr></thead>';
// populate the main table body
$table.='<tbody>';
foreach ($results as $result) {
$table.='<tr>';
foreach ($result as $val) {
$table.='<td>'.$val.'</td>';
}
$table.='</tr>';
}
$table.='</tbody></table>';
return $table;
}
надеюсь, вы знаете, как сделать таблицу в HTML, с <table>, <tr> and <td>.
исправьте таблицу с помощью while-loop и используйте "SELECT * FROM demo LIMIT 10"
как SQL-запрос.