PHP & sqlsrv:将格式化的查询行回显到 table
PHP & sqlsrv: Echo formatted query rows to table
我正在尝试使用 PHP 和 MS SQL 将查询中的数据写入 HTML table。我可以成功地将文本、整数和浮点字段的数据写入table。但是,当我尝试格式化日期列时,整个过程似乎中断了。
<?php
echo "<table id='stakeholderTable' class='display nowrap'>
<thead>
<tr>";
foreach ($array as $colmn) {
echo '<th><strong>' . $colmn . '</strong></th>';
}
echo "</tr>
</thead>";
echo '<tbody>';
$sel_result = sqlsrv_query($con,$query);
while($sel_row = sqlsrv_fetch_array($sel_result)) {
echo '<tr>';
foreach ($array as $colmn) {
$colmn2 = str_replace("'", "", $colmn);
$joe = str_replace("tbl_actor.", "", $colmn2);
$joe = str_replace("tbl_commitment.", "", $joe);
if($joe == 'com_date' || $joe == 'com_due') {
echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
}else{
echo '<td>' . $sel_row[$joe] . '</td>';
}
}
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
?>
只要值不是日期(com_date 或 com_due),上面的代码就可以工作。如果值为日期,table 的第一行将以正确的格式打印,但不会打印后续行并且页面的 Javascript 停止工作。
问题似乎出在以下行:
echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
但我不知道它有什么问题。
如有任何帮助,我们将不胜感激
干杯,
日期可能已经是 php 中的字符串对象,因此您必须创建日期对象,然后对其进行格式化。 PS 我会把它留作评论,但我没有足够的声誉。
好的。弄清楚了。我在空单元格上调用一个方法。我必须在 运行 代码之前检查空值。
变化:
foreach ($array as $colmn) {
$colmn2 = str_replace("'", "", $colmn);
$joe = str_replace("tbl_actor.", "", $colmn2);
$joe = str_replace("tbl_commitment.", "", $joe);
if($joe == 'com_date' || $joe == 'com_due') {
echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
}else{
echo '<td>' . $sel_row[$joe] . '</td>';
}
}
收件人:
foreach ($array as $colmn) {
$colmn2 = str_replace("'", "", $colmn);
$joe = str_replace("tbl_actor.", "", $colmn2);
$joe = str_replace("tbl_commitment.", "", $joe);
if($joe == 'com_date' || $joe == 'com_due') {
if(!empty($sel_row[$joe])){
echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
}else{
echo '<td>' . $sel_row[$joe] . '</td>';
}
}else{
echo '<td>' . $sel_row[$joe] . '</td>';
}
}
我正在尝试使用 PHP 和 MS SQL 将查询中的数据写入 HTML table。我可以成功地将文本、整数和浮点字段的数据写入table。但是,当我尝试格式化日期列时,整个过程似乎中断了。
<?php
echo "<table id='stakeholderTable' class='display nowrap'>
<thead>
<tr>";
foreach ($array as $colmn) {
echo '<th><strong>' . $colmn . '</strong></th>';
}
echo "</tr>
</thead>";
echo '<tbody>';
$sel_result = sqlsrv_query($con,$query);
while($sel_row = sqlsrv_fetch_array($sel_result)) {
echo '<tr>';
foreach ($array as $colmn) {
$colmn2 = str_replace("'", "", $colmn);
$joe = str_replace("tbl_actor.", "", $colmn2);
$joe = str_replace("tbl_commitment.", "", $joe);
if($joe == 'com_date' || $joe == 'com_due') {
echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
}else{
echo '<td>' . $sel_row[$joe] . '</td>';
}
}
echo '</tr>';
}
echo '</tbody>';
echo '</table>';
?>
只要值不是日期(com_date 或 com_due),上面的代码就可以工作。如果值为日期,table 的第一行将以正确的格式打印,但不会打印后续行并且页面的 Javascript 停止工作。
问题似乎出在以下行:
echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
但我不知道它有什么问题。
如有任何帮助,我们将不胜感激
干杯,
日期可能已经是 php 中的字符串对象,因此您必须创建日期对象,然后对其进行格式化。 PS 我会把它留作评论,但我没有足够的声誉。
好的。弄清楚了。我在空单元格上调用一个方法。我必须在 运行 代码之前检查空值。
变化:
foreach ($array as $colmn) {
$colmn2 = str_replace("'", "", $colmn);
$joe = str_replace("tbl_actor.", "", $colmn2);
$joe = str_replace("tbl_commitment.", "", $joe);
if($joe == 'com_date' || $joe == 'com_due') {
echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
}else{
echo '<td>' . $sel_row[$joe] . '</td>';
}
}
收件人:
foreach ($array as $colmn) {
$colmn2 = str_replace("'", "", $colmn);
$joe = str_replace("tbl_actor.", "", $colmn2);
$joe = str_replace("tbl_commitment.", "", $joe);
if($joe == 'com_date' || $joe == 'com_due') {
if(!empty($sel_row[$joe])){
echo '<td>' . $sel_row[$joe]->format('Y-m-d') . '</td>';
}else{
echo '<td>' . $sel_row[$joe] . '</td>';
}
}else{
echo '<td>' . $sel_row[$joe] . '</td>';
}
}