Форматирование вывода данных MySQL - PullRequest
2 голосов
/ 20 августа 2011

Я преобразую таблицу MySQL в таблицу HTML, используя этот фрагмент PHP, и он выглядит примерно так [html]:

/----------------------------------------\
| Name | Subscribed           | Duration | <- Column names
|----------------------------------------|
| Bob  | 2011-08-20 04:07:01  | 60       |
|----------------------------------------| 
| Ben  | 2011-08-20 04:07:01  | 260      |
\----------------------------------------/
  1. Как вывести таблицу без имен столбцов? (Имя, Подписка, Длительность) Так что начинается с Боба.
  2. Возможно ли преобразовать эту дату во что-то вроде этого: 20 августа 2011 г. 4: 07: 01?
  3. Длительность указана в секундах, как я могу преобразовать ее в минуты (Длительность (с) / 60) в PHP, чтобы она показала 1 вместо 60 секунд?

Ответы [ 4 ]

2 голосов
/ 20 августа 2011

Вот код, с учетом ваших требований:

// sending query
$result = mysql_query("SELECT * FROM {$table}");
if (!$result) {
    die("Query to show fields from table failed");
}

$fields_num = mysql_num_fields($result);

echo "<h1>Table: {$table}</h1>";
echo "<table border='1'>";
// printing table rows
while($row = mysql_fetch_assoc($result))
{
    echo "<tr>";

    // $row is array... foreach( .. ) puts every element
    // of $row to $cell variable
    foreach($row as $key => $cell){
        if($key == 'Subscribed'){
            $cell = date('F j, Y H:i:s', strtotime($cell)); // format date August 20, 2011 4:07:01
        } elseif($key == 'Duration'){
            $cell = $cell/60; // format time in minutes
        }
        echo "<td>$cell</td>";
    }


    echo "</tr>\n";
}
echo '</table>';
0 голосов
/ 20 августа 2011

О дате, попробуйте что-то вроде этого:

echo strftime("%F %d, %Y %g:%i:%S", strtotime($v["datum"]));

0 голосов
/ 20 августа 2011

Вы можете использовать этот код для удаления имен столбцов. Это те же фрагменты ссылки, которую вы разместили, но с некоторыми удаленными строками. Это также напечатает продолжительность в минутах.

<html><head><title>MySQL Table Viewer</title></head><body>
<?php
$db_host = 'localhost';
$db_user = 'root';
$db_pwd = 'lptm42b';

$database = 'sphinx';
$table = 'spheres';

if (!mysql_connect($db_host, $db_user, $db_pwd))
    die("Can't connect to database");

if (!mysql_select_db($database))
    die("Can't select database");

// sending query
$result = mysql_query("SELECT * FROM {$table}");
if (!$result) {
    die("Query to show fields from table failed");
}


echo "<h1>Table: {$table}</h1>";
echo "<table border='1'>";
// printing table rows
while($row = mysql_fetch_assoc($result))
{
    echo "<tr>";

    // $row is array... foreach( .. ) puts every element
    // of $row to $cell variable
    foreach($row as $field => $value)
    {
        if ($field === 'Duration')
        {
            $value = $value / 60;
        }
        echo "<td>$value</td>";
    }
    echo "</tr>\n";
}
mysql_free_result($result);
?>
</body></html>
0 голосов
/ 20 августа 2011

1.) Удалить цикл for после // printing table headers.

2.) Использовать date () и strtotime () для столбца «Подписка»(второй, если вы используете mysql_fetch_row () )

3.) Разделите третий столбец на 60.

Но я бы предложил использовать mysqli_fetch_array () вместо mysqli_fetch_row () .

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