PHP表输出MSSQL数据库的部分输出

时间:2014-03-24 19:16:24

标签: php arrays sql-server html-table

这是针对学校项目而我无法弄清楚原因,但它只返回两列。我要查询的数据库图片是:

http://imgur.com/MDxgwzQ

由于屏幕截图我将NULL字段更改为1,认为它不会打印NULL。

此项目的网页位于my project

在构建表的步骤之前,我做了测试以查看数组返回的内容,这正是我所期望的。前一个数据库中的NULL值存在空白。我想它可能是数字阻止它返回其余的数组,但我正在使用的命令,IIRC(如果我重新调用),只返回数组的字符串。我可能不对,但这是我的理解。

请记住:链接的数据库图像中的NULL现在为1(int类型)。

我没有使用过框架,我正在进行所有内联编码(用于体验)。这是第一次使用PHP。我已经看了很多其他的例子,但我似乎无法使他们的解决方案适应我自己的问题。任何帮助将不胜感激!

编辑:我忘了打印测试中的数组输出。它是(几乎与上面相同的url,只需删除main.php并添加test.php),我忘了提到varchar数据类型的NULL字段被替换为NA而不是1&#39 ; s我编辑了图像以反映这一点。

    <?php
    require_once(file is there...) // removed from example for security reasons.
    // Test message
    echo '<p>Connect please...</p>';

    try {
        //  Connection from PHP to MSSQL via PDO
        // DataBase Host
        $dbh = new PDO($dsn, $user, $password);

        //Sent/Send To Host and preparing the query to send.
        $sth = $dbh->prepare("SELECT * FROM Backbar");

        //Send that query!
        $result = $sth->execute();

        // Fetch all of the remaining rows in the result set 
        $row = $sth->fetchAll();

        // Used to move through array.
        $subarraypos = 0;

        // Start the table format extravaganza!
        print('<table border="1px">');
        print('<tr><th>ProductCompany</th>
               <th>ProductName</th>
               <th>Barcode#</th>
               <th>Color</th>
               <th>Perms</th>
               <th>Cost</th>
               <th>Volume</th>
               <th>Size</th>
               <th>Shelf Location</th>
               <th>Shelf Cap</th>
               <th>Quantity On Hand</th>
               <th>Storage Location</th>
               <th>Quantity In Storage</th>
               <th>Vendor</th>
               <th>Vendor Region</th>
               <th>Vendor Mileage</th>');
    foreach($row as $value) {
        if($subarraypos === 0) {    
            print('<tr><td>'.$value[$subarraypos].'</td>');
            $subarraypos++;
        }

        //  16 will reset the number of columns from the
        //  database so each entry is correctly shown.
        //  Else of first if(...) (Elif)

        if($subarraypos <=15) {
            print('<td>'.$value[$subarraypos].'</td>');
            $subarraypos++;
        }
        //  Else of second if(...)  (Else)
        $subarraypos = 0;
        print('</tr>');
    }
    print('</table>');
    print('<p>'.$row.'</p>');
    print('<p>'.$value.'</p>');
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
echo "<p>You should see a table, unless I broke it.</p>";
unset($dbh);
?>

2 个答案:

答案 0 :(得分:0)

看起来你忘记了遍历子阵列。它将调用subarraypos = 0和subarraypos = 1,然后移动到表的下一行。

foreach ($row as $value) {
    print('<tr>')
    for ($subarraypos = 0; $subarraypos < 16; $subarraypos++) {
        print('<td>' . $value[$subarraypos] . '</td>')
    }
    print('</tr>')
}

答案 1 :(得分:0)

我最终在另一个for循环中使用for循环(for(for())),到目前为止,这打印了两个表中的所有内容。我实际上在PHP print(...)中更改了它而不是foreach(for())。现在它只是我做的一个功能,它100%工作。

我现在唯一的问题是输出应该是通过jQueryUI / jQuery在选项卡式窗格中。两者都已链接.js和.css已被链接,当然是一次。如果您知道我应该做什么,那么URL与上面的相同。(main.php)