1

クエリ結果を列に表示し、レコードを次の行に移動させる方法はありますか?

これが私のSQLテーブルです:

------------SQL TABLE -----------

    id   |    product_name    | product_type
    0    |    Lorem           | Table   
    1    |    Ipsum           | Chair
    2    |    Dolor           | Lamp
    3    |    Sit             | Chair

これが私が欲しいものです。

        Lorem    |  Ipsum      |    Dolor   |   Sit       |
------------------------------------------------------------
id    | 0        |  1          |    2       |   3         |
type  | Table    |    Chair    |    Lamp    |    Chair    |

必要な出力:

    <table>
  <tr>
    <td>&nbsp;</td>
    <td>Lorem</td>
    <td>Ipsum</td>
    <td>Dolor</td>
    <td>Sit</td>
  </tr>

  <tr>
    <td>id</td>
    <td>0</td>
    <td>1</td>
    <td>2</td>
    <td>3</td>
  </tr>

    <tr>
    <td>type</td>
    <td>Table</td>
    <td>Chair</td>
    <td>Lamp</td>
    <td>Chair</td>
  </tr>

</table>

これは私のコードですが、これはひどく間違っていることを私は知っています。whileループとforループを使用して意味がある場合は、フィールドの新しい行を作成する方法に固執しています。

    echo '<table><tr>';

        $i=1;

        while($rows = mysql_fetch_array($result)){
            echo '<td><table><tr><th>'.$rows['product_name'].
            '</th></tr><tr><td>'.$rows['product_id'].
            '</td><td>'.$rows['product_type'].'</tr></table></td>';
                if($i %2 == 0) { 
        echo '</tr>
                <tr>'; }
                }    
        echo'
        </tr>
        </table>';
4

2 に答える 2

0

これを試して

      echo '<table>';


    while($rows = mysql_fetch_array($result)){
        echo '<tr><th>'.$rows['product_name'].
        '</th></tr><tr><td>'.$rows['id'].
        '</td></tr><tr><td>'.$rows['product_type'].
        '</td></tr>';

            }    
    echo' </table>';
于 2012-11-26T19:03:51.917 に答える
0

データをローテーションする必要があります。次のようなものを使用できます(テストされていません):

// build query
$query = "SELECT id, product_name, product_type FROM whatevertableyouhave";

// query the database
$result = mysql_query($query);

// cols we are interested in (from the SQL query)
$cols = array(
  'id',
  'product_name',
  'product_type';
);

// initialize rotated result using cols
$rotated = array();
foreach($cols as $col) {
  $rotated[$col] = array();
}

// fill rotated array
while(($row = mysql_fetch_assoc($result)) !== false) {
  foreach($cols as $col) {
    $rotated[$col][] = $row[$col];
  }
}

// echo html
echo "<table>";
echo "<tr>";
foreach($cols as $col) {
  echo "<th>{$col}</th>";
}
echo "</tr>";
foreach($rotated as $col => $values) {
  echo "<tr>";
  foreach($values as $value) {
    echo "<td>" . htmlentities($value) . "</td>";
  }
  echo "</tr>";
}
echo "</table>";
于 2012-11-26T20:28:23.917 に答える