php
  • mysql
  • 2016-09-24 11 views 0 likes 
    0

    MySQLデータベースからデータを選択し、これまでのところ動作しているテーブルに表示したいが、日付の形式に問題がある。PHPを使用してMySQLの日付を再フォーマット

    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

    、これは動作するはずです:

    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

    ありがとう、これは動作します!しかし、私は日付を変換できないという問題があります。 $ vを使用すると、出力は常に01.01.1970になります。 – Uwe

    +0

    @私は悪いですが、単に 'd-m-Y' =>' d-m-y'を作るだけです。私も答えを更新しました。 – DanielTheGeek

    +0

    これに遅れて申し訳ありません。あなたの助けにタンクをたくさん! – Uwe

    0

    が$ kが列名で、$ vが値であること、それはありませんか?

    yesの場合、あなたは簡単に日付の列の値を検出し、それらをフォーマットすることができます。念のために$kが値で、列と$vであることの私の仮定が正しいです

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