2016-09-24 6 views
0

Я хочу выбрать данные из базы данных MySQL и показать их в таблице, которая работает до сих пор, но у меня проблема с форматом даты.Reformat MySQL date with PHP

Я хочу переформатировать дату MySQL в dd/mm/YY, но я не знаю, как это сделать, потому что я специально не выделяю столбец даты. Я просто выбираю все столбцы из таблицы.

Код:

<?php 
echo "<table style='border: solid 1px black;'>"; 
echo "<tr><th>Id</th><th>Name</th><th>Date</th></tr>"; 

class TableRows extends RecursiveIteratorIterator { 
    function __construct($it) { 
     parent::__construct($it, self::LEAVES_ONLY); 
    } 

    function current() { 
     return "<td style='width: 150px; border: 1px solid black;'>" . parent::current(). "</td>"; 
    } 

    function beginChildren() { 
     echo "<tr>"; 
    } 

    function endChildren() { 
     echo "</tr>" . "\n"; 
    } 
} 

$servername = ""; 
$username = ""; 
$password = ""; 
$dbname = ""; 

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username,  $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $conn->prepare("SELECT * FROM users"); 
    $stmt->execute(); 

    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

    foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
     echo $v; 
    } 
} 
catch(PDOException $e) { 
    echo "Error: " . $e->getMessage(); 
} 
$conn = null; 
echo "</table>"; 
?> 
+0

В других языках программирования (например, C# и java) мы можем получить тип столбца. Я думаю, что это также возможно в php. И, зная тип столбца, вы можете решить, как его отображать. –

ответ

0

Только в случае, если мое предположение о $k быть столбец и $v является значение правильно, то это должно работать:

foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
switch ($k) { 
     case '{{column_name}}': 
      // Format {{column_name}} as you like, e.g: 
      $date_time = strtotime($v); 
      print date("d-m-y", $date_time); 
      break; 
     default: 
      echo $v; 
      break; 
} 
} 
+0

Спасибо, это работает! Но у меня есть проблема, что я не могу преобразовать дату. Выход всегда 01.01.1970, если я использую $ v. – Uwe

+0

@ Нужно, я плохо, просто сделаю 'd-m-Y' =>' d-m-y'. Я также обновил ответ. – DanielTheGeek

+0

Прошу прощения за это. Танки много для вашей помощи! – Uwe

0

Это не то, что $ к это имя столбца и $ v это значение?

Если да, то вы можете легко обнаружить значения столбцов даты и форматировать их:

foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
    switch ($k) { 
      case 'date_column': 
       // echo formatted $v 
       break; 
      default: 
       echo $v; 
       break; 
    } 
}