我有一个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);
尝试过,但它没有用。此外,还应删除值(如果有的话)。
答案 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));
}
此代码块将删除包含所有空值的列。如果列中至少有一个单元格具有某个值,您将在结果中看到该列。
代码未经优化 - 这只是一个粗略的想法。但这是一个起点。