首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个查询数据到单个html表(PHP,Mysql)数组中的打印位置不正确?

问多个查询数据到单个html表(PHP,Mysql)数组中的打印位置不正确?
EN

Stack Overflow用户
提问于 2011-06-18 14:10:16
回答 1查看 1.8K关注 0票数 0

我从这个站点获得了代码片段,如下所示

代码语言:javascript
复制
    $data = array();

while($row = mysql_fetch_assoc($num1)) {$data['row'][] = $row;}
while($row = mysql_fetch_assoc($num2))  {$data['row2'][] = $row;}


$count = count($data['row']);
echo "<table>" ;
echo "<tr>";
echo "<td width='300' bgcolor='#99CCF5' align='Left' style='padding-left:30px'><b>Country</b></td>" ;
echo "<td width='150' bgcolor='#99CCF5' align='center'><b>Mid Estimate 1</b></td>";
echo "<td width='150' bgcolor='#99CCF5' align='center'><b>Mid Estimate 2</b></td>";
echo "</tr>";
for($i=0;$i<=$count;$i++)
{

        if(($i % 2) == 1)
        {
            echo "<tr>" ;
            echo "<td align='center'>" . $data['row'][$i]['Country']."</td>";
            echo "<td align='center'>" . $data['row'][$i]['MidEstimate']."</td>";
            echo "<td align='center'>" . $data['row2'][$i]['MidEstimate']."</td>";
            echo "</tr>" ;
        }else
        {
            echo "<tr>" ;
            echo "<td align='center'>" . $data['row'][$i]['Country'] ."</td>";
            echo "<td align='center'>" . $data['row'][$i]['MidEstimate']."</td>";
            echo "<td align='center'>" . $data['row2'][$i]['MidEstimate']."</td>";
            echo "</tr>" ;
        }

}

echo "</table>" ;

其结果如下所示

image1 http://img4.pixa.us/8ba/19338641.jpg

其中正确的结果应该如下所示

image2 http://img4.pixa.us/c1d/19338642.jpg

也就是说,如果列中的任何值为空,则下一个adjucent值将获得该位置。我怎样才能纠正这个错误呢?也就是说,如果有任何值为空,则该列必须为空。

请提前给予帮助和感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-18 14:36:13

你必须收集每个国家的数据。您在问题中的方法会弄乱列表,因为数组的键不同步。让我们通过‘Country’来同步您的行:

代码语言:javascript
复制
$data = array();
while($row = mysql_fetch_assoc($num1))
{
    $c = $row['Country'];
    if (!isset($data[$c]))
    {
        $data[$c] = array('Country' => $c);
    }
    $data[$c]['MidEstimate1'] = $row['MidEstimate'];
}
while($row = mysql_fetch_assoc($num2))
{
    $c = $row['Country'];
    if (!isset($data[$c]))
    {
        $data[$c] = array('Country' => $c);
    }
    $data[$c]['MidEstimate2'] = $row['MidEstimate'];
}

现在,您的数组中有一个针对每个国家/地区的行,其中包含来自每个查询的数据。

代码语言:javascript
复制
$i = 0;
foreach ($data as $row)
{
    echo ($i % 2) ? "<tr class='odd'>" : "<tr class='even'>" ;
    echo "<td align='center'>" . $row['Country']."</td>";
    echo "<td align='center'>" . $row['MidEstimate1']."</td>";
    echo "<td align='center'>" . $row['MidEstimate2']."</td>";
    echo "</tr>" ;
}

注意:这只适用于'Country‘字段在两个SQL查询中都存在。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6394240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档