如何从动态生成的html-table中删除选定的列?

时间:2016-09-30 22:28:31

标签: php html mysql html-table

我有一个SQL数据库,我在其中读出数据,然后在动态生成的html表中显示。这是我的代码可以正常工作:

library(survival)
datalung <- lung
attach(datalung)
fit<- survfit(Surv(time,status) ~ quantile(age)[2:5],type = "kaplan-meier")

现在,我想要删除特定的列(例如那些空的或那些对于发出请求的用户不感兴趣的列)。

我用$sql = "SELECT $selection FROM $tabelle WHERE $masterarray"; $result = mysqli_query($db, $sql) or die("Invalid query"); $numrows = mysqli_num_rows($result); $numcols = mysqli_num_fields($result); $field = mysqli_fetch_fields($result); if ($numrows > 0) { echo "<table>"; echo "<thead>"; echo "<tr>"; echo "<th>" . 'Nr' . "</th>"; for($x=0;$x<$numcols;$x++){ echo "<th>" . $field[$x]->name . "</th>"; } echo "</tr>"; echo "</thead>"; echo "<tbody>"; echo "<tr>"; $nr = 1; while ($row = mysqli_fetch_array($result)) { echo "<td>" . $nr . "</td>"; for ($k=0; $k<$numcols; $k++) { echo "<td>" . $row[$k] . "</td>"; //Prints the data } $nr = $nr + 1; echo "</tr>"; } echo "</tbody>"; echo "</table>"; } } mysqli_close($db); 尝试过,但它没有用。此外,还应删除值(如果有的话)。

4 个答案:

答案 0 :(得分:0)

在打印之前始终格式化阵列。在回显HTML之前尝试从$field数组中删除特定列,然后打印最终表。一旦HTML代码在PHP中回显,您就无法在不使用JavaScript的情况下将其删除。

您可以查看$field[$x]->name变量并使用continue跳过该列。

答案 1 :(得分:0)

可以让mysql为你过滤掉它们, $sql = "SELECT $selection FROM $tabelle WHERE $masterarray AND LENGTH($selection) > 0";

- http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_length

答案 2 :(得分:0)

<?php

//  DataBase Config - http://php.net/manual/pt_BR/pdo.construct.php.
$dsn = 'mysql:host=localhost;dbname=test';
$usr = 'root';
$pwd = '';

try {   //  try to connect in database.

    $pdo = new PDO($dsn, $usr, $pwd);

} catch (PDOException $e) { //  if there is error in the connection.

    die('Connection failed: ' . $e->getMessage());

}

//  Prepare Statement and execute - http://php.net/manual/pt_BR/pdo.prepare.php.
$stm = $pdo->prepare('select id, weight, color, name from product');
$stm->execute();

//  Get ALL rows - Object.
$rows = $stm->fetchAll(PDO::FETCH_OBJ);

//  Print Rows.
//echo '<pre>'.print_r(rows, true).'</pre>';

//  Check $row;
if (count($rows)) {

    //  Order and Display Cols.
    $colsDisplay = [
        'id'        => 'ID Product',
        'name'      => 'Name',
        'weight'    => 'Weigth'
    ];

    //  Table.
    $html = '<table border="1">';
    $html .= "\n    <thead>";
    $html .= "\n        <tr>";
    $html .= "\n            <th  bgcolor='#eee'>Row</th>";
    $html .= "\n            <th>". implode("</th>\n         <th>", $colsDisplay) ."</th>";
    $html .= "\n        </tr>";
    $html .= "\n    </thead>";
    $html .= "\n    <tbody>";

    //  Loop ROWS.
    foreach ($rows as $key => $val) {

        $html .= "\n        <tr>";

        $html .= "\n            <td bgcolor='#eee'>". $key ."</td>";

        //  Loop COLS to display.
        foreach ($colsDisplay as $thKey => $thVal) {

            $html .= "\n            <td>". $val->$thKey ."</td>";

        }

        $html .= "\n        </tr>";

    }

    $html .= "\n".' </tbody>';
    $html .= "\n".'</table>';

    echo $html;

}

答案 3 :(得分:0)

为了知道列是空的,您应该检查整列。有不同的方法可以做到这一点,其中一个可以调查哪些是空的,然后只使用那些非空的。像这样:

router.get('/', auth.isAuthenticated() , controller.index);
export function index(req, res) {
  console.log(req.query); //This is the above log output
return Patient.find(req.query).exec()
   .then(respondWithResult(res))
   .catch(handleError(res));
} 

此代码块将删除包含所有空值的列。如果列中至少有一个单元格具有某个值,您将在结果中看到该列。

代码未经优化 - 这只是一个粗略的想法。但这是一个起点。