【问题标题】:php/oracle - Create a table depending upon number of columnsphp/oracle - 根据列数创建表
【发布时间】:2014-12-03 14:10:32
【问题描述】:

我有一个查询(这里没有显示,因为这不是问题)给了我另一个这样的查询:

SELECT NAME, ID FROM TABLE1

SELECT USER, EMAIL, NUMBER FROM TABLE2

这取决于相应表中的列数。

所以我可以将这些列用于 php 变量...这是完美的。

但是:如何根据 php 中的列数创建动态 html 表,因为它可以是 1 列或 X 列。

对于我的例子,它必须是:

...
<td>NAME</td>
<td>ID</td>
...

...
<td>USER</td>
<td>EMAIL</td>
<td>NUMBER</td>
...

目前在php中我的代码是这样的:

...
foreach ($rows as $value) {
        $res .= '
              <tr>
                <td>'.$value["NAME"].'</td>
                <td>'.$value["ID"].'</td>
              </tr>
              ';
        }
...

有什么解决办法吗?

【问题讨论】:

    标签: php html sql oracle


    【解决方案1】:

    PDO 示例

     <?php
        echo "<table style='border: solid 1px black;'>";
        echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th><th>Email</th><th>Reg 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 = "localhost";
        $username = "username";
        $password = "password";
        $dbname = "myDBPDO";
    
        try {
            $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $stmt = $conn->prepare("SELECT * FROM MyGuests");
            $stmt->execute();
    
            // set the resulting array to associative
            $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    
            foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
                echo $v;
            }
            $dsn = null;
            }
        catch(PDOException $e)
            {
            echo "Error: " . $e->getMessage();
            }
        $conn = null;
        echo "</table>";
        ?> 
    

    【讨论】:

    • oracle sql 不是 mysql - 我认为,它不一样或者我可以使用它吗?
    • PDO 应该允许您使用任何类型的数据库,相应地更改新的 PDO 语句(查找),您应该没问题。
    【解决方案2】:

    我找到了这样的解决方案:

    $ first = true;
    Foreach ($row as $rows) {
        $keys = [];
    
        If ($first) {
    Foreach( $row as  $key => $value) // dynamic table header
    {
            Echo ‘<th>’.$key.’</th>’
            $keys[] = $key;
    }
      $first = false;
    }
    …
    For int (i=0;iy$keys.count();i++){ // dynamic table row
    Echo ‘<tr>’.$row[keys[i]].</tr>’;
    …
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 2023-02-14
      相关资源
      最近更新 更多