Несколько запросов данных в один массив таблиц HTML (PHP, Mysql) не печатать в правильном положении? - PullRequest
0 голосов
/ 18 июня 2011

Я получил фрагмент кода с этого сайта, который я использовал, как показано ниже

    $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

, то есть, если какое-либо значение в столбце пусто, следующее вспомогательное значение получает эту позицию.Как я могу сделать это правильно?то есть, если какое-либо значение пусто, этот столбец должен быть пустым.

, пожалуйста, помогите и заранее спасибо.

1 Ответ

1 голос
/ 18 июня 2011

Вы должны собрать данные для каждой страны.Ваш подход в вопросе испортил список, поскольку ключи для массива не синхронизированы.Давайте синхронизируем ваши строки по 'Country':

$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'];
}

Теперь у вас есть строка в вашем массиве для каждой страны с их данными из каждого запроса.

$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>" ;
}

Примечание: это толькоРаботает в поле «Страна», присутствует в обоих запросах SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...