duanfu9523 2018-02-05 03:10
浏览 54
已采纳

PHP函数循环SQL结果并生成HTML表

I want to write an php function that will echo sql query results in a specific manner.

Example I have table 1 which is 10.000 rows * 43 columns:

NO NAME Prof Date of birth 1 John Teacher 1987 2 Nick Engineer 1976 3 4 5

And so on. Based on No which is an integer (1-10.000), I want to generate tables such as:

Name: John Prof: Teacher Date of birth: 1987

Name: Nick Prof: Engineer Date of birth: 1976

So far my code:

`

    $hostname = "";     
    $username = "";
    $password = "";
    $dbname = "db1";

    //connection to the database
    $con = mysqli_connect($hostname, $username, $password, $dbname)
        or die("Unable to connect to MySQL");
    mysqli_set_charset($con, 'utf8');
    /*echo "Connected to db1 database <br>";
    else
    echo "Could not connect"; */

    $query1 = "SELECT * FROM `table 1` WHERE CODE_NO = 1";
    $query2 = "SHOW COLUMNS FROM table 1";
    $result1 = mysqli_query($con, $query1);
    $result2 = mysqli_query($con, $query2);

    // Check result
    // Useful for debugging.
     if (!$result1) {
        $message  = 'Invalid query: ' . mysqli_error($con) . "
";
        $message .= 'Whole query: ' . $query1;
        die($message);
    }

    echo "<table>"; // table tag in the HTML
        while($row = mysqli_fetch_array($result1))
        //Creates a loop to loop through results
        {
        echo

        "<tr>
            <th>CODE_NO:</th>
            <td>" . $row['CODE_NO'] . "</td>
        </tr>
        <tr>
            <th>FIRST_NAME:</th>
            <td>" . $row['FIRST_NAME'] . "</td>
        </tr>
        <tr>
            <th>SURNAME:</th>
            <td>" . $row['SURNAME'] . "</td>
        </tr>
        <tr>
            <th>Date of birth:</th>
            <td>" . $row['DOB'] . "</td>
        </tr>
        <tr>
            <th>Date of death:</th>
            <td> " . $row['DOD'] . "</td>
        </tr>";
        }
    echo "</table>"; //Close the table in HTML

    ?>`

Is it possbile to code the process once, without hard-coding anything, so it could be repeated as many times as needed?

Edit:

$x = 1; $query = "SELECT * FROMpersonsWHERE CODE_NO = '$x'"; $result = mysqli_query($con, $query);

展开全部

  • 写回答

2条回答 默认 最新

  • doutao5499 2018-02-05 03:32
    关注

    If I understood you correctly, this would do what you need:

    function generateTableFromResult($result) {
       $html = "<table>";
       while($row = mysqli_fetch_array($result)) {
          foreach($row as $column => $value) {
            $html.="<tr><th>".$column."</th><td>".$value."</td></tr>";
          }
       }
       $html.="</table>";
       return $html;
    }
    
    // usage:
    // ...
    $result1 = mysqli_query($con, $query1);
    echo generateTableFromResult($result1);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部