我有一个问题,我在互联网上找不到任何解决方案。
所以我有大约20列的数据库。我从此数据库仅打印5列以进行如下预览:

<?php
$host    = "localhost";
$user    = "user";
$pass    = "";
$db_name = "db_test";

//create connection
$connection = mysqli_connect($host, $user, $pass, $db_name);

//test if connection failed
if(mysqli_connect_errno()){
    die("connection failed: "
        . mysqli_connect_error()
        . " (" . mysqli_connect_errno()
        . ")");
}

//get results from database
$result = mysqli_query($connection,"SELECT id,first,sec,school,data FROM test");
$all_property = array();  //declare an array for saving property

//showing property
echo '<table class="data-table" border ="1">
        <tr class="data-heading">';  //initialize table tag
while ($property = mysqli_fetch_field($result)) {
    echo '<td>' . $property->name . '</td>';  //get field name for header
    array_push($all_property, $property->name);  //save those to array
}
echo '</tr>'; //end tr tag

//showing all data
while ($row = mysqli_fetch_array($result)) {
    echo "<tr>";
    foreach ($all_property as $item) {
        echo '<td>' . $row[$item] . '</td>'; //get items using property value
    }
    echo '</tr>';
}
echo "</table>";
?>


表格打印后,我想按一下click来创建一个新页面,其中包含来自该特定ID的数据库中的所有记录。我可以在互联网上搜索,但找不到任何解决方案。任何人都可以帮助我吗?

最佳答案

我愿意对代码的结构进行一些更改以使其更简单。

解决方案是在锚点(a)中嵌入某些内容,该锚点具有链接到下一页的查询字符串。这种性质的东西:

details.php?id=…


无论如何,这是一个解决方案:

$thead=array();
$tbody=array();

//  Set Properties
    $all_property = array('id','first','sec','school','data');  //  ***
    //  Note: corrected an error which incorrectly imploded thead:
    $thead=sprintf('<tr>%s</tr>',implode('',$all_property));    //  implode & put into a proper row

//  Get Data
    while ($row = mysqli_fetch_array($result)) {
        $tr=array();
        foreach ($all_property as $item) {
            //  Here is a solution: Make id clickable
                if($item=='id')
                    $tr[]=sprintf('<th><a href="details.php?id=%s">%s</a></th>',$item,$item);
                else $tr[]=sprintf('<td>%s</td>');
        }
        $tbody[]=sprintf('<tr>%s</tr>',implode('',$tr));
    }


并在PHP块之后的HTML中:

<table class="">
    <thead>
        <?php print $thead; ?>
    </thead>
    <tbody>
        <?php print $tbody; ?>
    <tbody>
</table>


请注意以下几点:


您不应该将逻辑放在文档的HTML部分中。在这里,我只是将数据放入一些变量中,以便在时间到时输出。它更清洁,更易于维护。
推入数组的推荐方法是使用$array[]=…表示法。
如果您已经知道SQL查询的内容,则不知道为什么要读取列名称。但是,我已经离开了。
我还提供了适当的th元素和表格部分。


那可能行得通...

关于javascript - 如何从可点击的行表中创建新页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42745374/

10-15 14:46