PHP domPDF - 显示数组中的行

时间:2017-04-26 11:46:55

标签: php arrays dompdf

我可能真的忽略了一些简单的东西,但这不起作用,我想这只是在尝试拆分数组时我是傻瓜。

基本上下面只获取ID号,然后从DB中选择数据。这工作正常,PDF打印在最后但没有数据。

如果我将 json_decode 更改为 json_encode ,那么它只给出了数组的第一部分(但很明显它没有被解码所以有一些括号和斜线,它不应该)。

但是我无法显示所有行。有人能指出我出错的地方吗?

<?php
//etc etc
$idgg = $_GET['idgg'];
$query = "select * from `all_quotes` where quote_id='1493293451_1'";
if ($result = mysqli_query($link2, $query)) {
while ($row = mysqli_fetch_assoc($result)) {
$data = $row["data"];
$qdata = json_decode($data);
 foreach($qdata as $trow){
    $prods =  explode('|', $trow);
    $rowall = "<tr><td>$prods[0]</td><td>$prods[1]</td><td>$prods[3]</td>
    <td>$prods[2]</td></tr>";
   }
 }
}
require_once '/dompdf/autoload.inc.php';
use Dompdf\Dompdf;
$dompdf = new Dompdf();
$dompdf->loadHtml('<table>'.$rowall.'</table>');
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream("test.pdf");
?>

修改

数组看起来像:

[“ABC |很多描述| 31.12 | ETC”,“DEF |更多...... | 30.57 | ETC”]。

另外,我注意到如果我不使用$_GET(即只是在代码中输入id),那么我得到第一个结果,但不是其余的结果。为什么这会有所不同?!

提前致谢...

更新了代码,添加了不同的mysqli结构。上面给出了数据的第一行(即数组的第一部分)

2 个答案:

答案 0 :(得分:1)

你已经接近正确了。您修复了mysqli_fetch_assoc()问题,但是当您这样做时,您带回了覆盖生成的字符串的早期错误。据我所知,正确的循环应该是:

if ($result = mysqli_query($link2, $query)) {
    $rowall = ""; // Start out with an empty string

    while ($row = mysqli_fetch_assoc($result)) {
        $data  = $row["data"];
        $qdata = json_decode($data);

        foreach($qdata as $trow){
            $prods =  explode('|', $trow);
            // Here you were overwriting the string in each iteration, since you only used "=", not ".="
            $rowall .= "<tr><td>$prods[0]</td><td>$prods[1]</td><td>$prods[3]</td>
<td>$prods[2]</td></tr>";
        }
    }
}

如果仍然只提供一行,则直接在数据库中运行SQL查询,并确保它确实返回多行。

答案 1 :(得分:0)

尝试 首先你应该尝试link并检查你的json对象是否正确

检查json对象是什么,以便你知道你在做什么

通常一个json字符串传递给json_decode时它将返回该对象 至于。考虑

 $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
 var_dump(json_decode($json));
/* output
object(stdClass)#1 (5) {
 ["a"] => int(1)
 ["b"] => int(2)
 ["c"] => int(3)
 ["d"] => int(4)
 ["e"] => int(5)
} */

var_dump(json_decode($json, true));
/* output
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}*/ 

这个可以由你使用的返回关联数组。

否则我怀疑数据可能以序列化格式存储,您可以使用 unserialize功能