使用php垂直从mysql以表格格式打印数据

时间:2013-01-31 08:42:08

标签: php mysql

好的,这似乎很难解释,但我现在已经达到极限了。在那里,做到了,但我不能让这个工作。所以这就是;

我有一个名为passengers的表,其中包含以下数据:

enter image description here

我正在尝试以此表格格式选择以下数据:

enter image description here

使用此代码:

<?php
require("aacfs.php");
$ac=mysql_query("select distinct fquo_id as 'fquo_id' from passengers where reservno = '0000188'") or die(mysql_error());
echo "<table><tr>";
while($bd=mysql_fetch_array($ac))
{
    $eg=$bd['fquo_id'];
    $w=mysql_query("select * from passengers where fquo_id = '$eg'") or die(mysql_error());
    $no=1;
    while($x=mysql_fetch_array($w))
    {
        $y=$x['pass_name'];

        echo "<tr><td colspan=2>$no. <input type=text name='pass1_".$no."' value='$y'></td><td>$no. <input type=text name='pass2_".$no."' value='$y'></td></tr>";
        $no++;
    }
}

echo"</tr></table>";

?>

但它看起来像这样:

enter image description here

我知道我做错了什么但是相信我,我已经修改了一段时间但仍然无法按照我想要的方式进行修改。这是我能得到的最接近我想要的输出。如何正确打印表格?我知道像SELECT * FROM tbl \G这样的代码,但它在PHP中不起作用。请帮帮我。感谢。

4 个答案:

答案 0 :(得分:0)

假设我理解了你想要的东西,以下应该有效

<?php
...
    $no=1;
    while($x1 = mysql_fetch_assoc($w))
    {
        $y1 = $x1['pass_name'];
        $y2 = "";
        if($x2 = mysql_fetch_assoc($w))
           $y2 = $x2['pass_name'];            

        echo "<tr><td colspan=2>$no. <input type=text name='pass1_" . $no . "' value='" . $y1 . "'></td><td>$no. <input type=text name='pass2_" . $no . "' value='" . $y2 . "'></td></tr>";
        $no++;
    }
...

?>

答案 1 :(得分:0)

查看此DEMO是否可以为您提供帮助,如果是,则应将您的代码更改为:

<?php
require("aacfs.php");
$ac=mysql_query("select distinct fquo_id as 'fquo_id' from passengers where reservno = '0000188'") or die(mysql_error());
echo "<table>";
while($bd=mysql_fetch_array($ac))
{
    $eg=$bd['fquo_id'];
    $w=mysql_query("select * from passengers where fquo_id = '$eg'") or die(mysql_error());

    $n = 2;
    $i = 0;
    while($x=mysql_fetch_array($w))
    {
       $i++;
       if($n % 2 == 0){
        echo  "<tr>";
       }
       $y=$x['pass_name'];

       echo "<td colspan=2>$no. <input type=text name='pass1_".$no."' value='$y'></td>";
       if($n % 2 == $n){
        echo  "</tr>";
       }
       $n++;
    }
}

echo"</table>";

?>

答案 2 :(得分:0)

$ac=mysql_query("select distinct fquo_id as 'fquo_id' from passengers where reservno ='0000188'") or die(mysql_error());
while($bd=mysql_fetch_array($ac))
{echo "<table>";
    $eg=$bd['fquo_id'];
    $w=mysql_query("select * from passengers where fquo_id = '$eg'") or die(mysql_error());
    $no=1;
    while($x=mysql_fetch_array($w))
    {
        $y=$x['pass_name'];

  echo "<tr><td>$no. <input type=text name='pass1_".$no."' value='$y'></td></tr>";
        $no++;
    }
</table>
}

试试这个......:P

答案 3 :(得分:0)

<?php
require("aacfs.php");
$ac         =   mysql_query("SELECT * FROM passengers WHERE reservno = '0000188' ORDER BY fquo_id, pass_id") or die(mysql_error());
$temp_array = array();
while($row  = mysql_fetch_assoc($ac)){
    $temp_array[$row['fquo_id']][] = $row;
}

$td_count   = count($temp_array);
$tr_count   = 1;
$fquo_id    = array();

foreach($temp_array as $key=>$val){
  if($tr_count < count($val)){$tr_count = count($val);}
  $fquo_id[]= $key;
}
$tr_count   = 8; // if you want to display 8 rows;
echo "<table>";
for($i=0; $i<$tr_count; $i++){
    echo "<tr>";
    $no  = $i+1;
    for($j=0; $j<$td_count; $j++){
        echo "<td>";
        if(array_key_exists($i,$temp_array[$fquo_id[$j]])){
            echo $no.". <input type=text name='pass1_".$no."' value='".$temp_array[$fquo_id[$j]][$i]['pass_name']."'>";
        }
        else{
            echo $no.". <input type=text name='pass1_".$no."' value=''>";
        }
        echo "</td>";
    }
    echo "</tr>";
}
echo "</table>";

?>

enter image description here