2016-05-07 8 views
0

MySQLテーブルの複数のカラムのデータをHTMLテーブルの単一のカラムに結合することは可能ですか?各レコードはHTMLの新しいローになります表?PHPを使用して複数のSQLカラムをHTMLテーブルの1つのカラムにまとめる

この例では、MySQLのテーブルには2つの列(Col1、Col2)があります。 Col1からのデータは、HTMLテーブルの最初の列に表示されます。 MySQLのCol2からのデータは、HTMLテーブルの2番目の列に表示されます。つまり、HTMLテーブルはMySQLテーブルのレイアウトと一致します。

<?php 
$con = new mysqli('domain', 'username', 'password', 'database'); 
$sql = "select * from table1"; 
$sql_query = mysqli_query($con, $sql); 

while ($row = mysqli_fetch_array($sql_query)) { 
    $col1 = $row['col1']; 
    $col2 = $row['col2']; 

    echo "<table>"; 
    echo "<tr>"; 
    echo "<td> $col1 </td>"; 
    echo "<td> $col2 </td>"; 
    echo "</tr>"; 
    echo "</table>"; 
} 
?> 

MySQLの表:

| - - - - | - - - - - - - | 
| Col1 | Col2  | 
| - - - - | - - - - - - - | 
| Blue | Car  | 
| Green | Truck  | 
| Yellow | Van  | 
| - - - - | - - - - - - - | 

HTML表:

| - - - - | - - - - - - - | 
| Column1 | Column2 | 
| - - - - | - - - - - - - | 
| Blue | Car  | 
| Green | Truck  | 
| Yellow | Van  | 
| - - - - | - - - - - - - | 

の$ col1と$ col2には、単一のTDタグの内側に置かれている場合、これは、$ col1と$の両方を取得していますcol2をHTMLテーブルのCol1に表示します。ただし、$ col1と$ col2の両方が同じセルに表示されます。

<?php 
$con = new mysqli('domain', 'username', 'password', 'database'); 
$sql = "select * from table1"; 
$sql_query = mysqli_query($con, $sql); 

while ($row = mysqli_fetch_array($sql_query)) { 
    $col1 = $row['col1']; 
    $col2 = $row['col2']; 

    echo "<table>"; 
    echo "<tr>"; 
    echo "<td> $col1 $col2 </td>"; 
    echo "</tr>"; 
    echo "</table>"; 
} 
?> 

HTML表:

| - - - - - - - - - - - - | 
| Column1     | 
| - - - - - - - - - - - - | 
| Blue Car    | 
| Green Truck    | 
| Yellow Van    | 
| - - - - - - - - - - - - | 

が、それはHTMLテーブルの列1で$ col1と$ Col2にエコーし、各レコードは、HTMLテーブルに独自の行になることは可能ですか?

| - - - - - - - - - - - - | 
| Column1     | 
| - - - - - - - - - - - - | 
| Blue     | 
| Green     | 
| Yellow     | 
| Car      | 
| Truck     | 
| Van      | 
| - - - - - - - - - - - - | 
+0

あなたの質問の最後の数字のような結果が欲しいですか? –

答えて

1

2つのループを持つ必要はありません。それは単一ループで行うことができます。異なる変数でcol1とcol2の値を区切ります。最後にそれを印刷します。

<?php 
$con = new mysqli('domain', 'username', 'password', 'database'); 
$sql = "select * from table1"; 
$sql_query = mysqli_query($con, $sql); 
$str = "<table>"; 
$str_col2 = ""; 
while ($row = mysqli_fetch_array($sql_query)) { 
    $col1 = $row['col1']; 
    $col2 = $row['col2'];  

    $str .= "<tr><td> $col1 </td></tr>"; 
    $str_col2 .= "<tr><td> $col2 </td></tr>"; 
} 
echo $str . $str_col2 . "</table>"; 
?> 
+0

これは完全に機能します。 Ajuのソリューションをありがとう! – JeremyCanfield

+0

嬉しいです... !!ありがとう:) –

+0

@FrayneKonok:申し訳ありません男..あなたを得ることはありません.. –

1

あなたのHTMLは有効ですが、正しくありません。これは結果として得られるテーブルの構造である可能性があります。

col1の値の後に表示するためにcol2値を格納する新しい配列を作成します。ディスプレイの2番目のcol2の値に対して、col1値ループを再度完了してください。

$col2 = array(); 
echo "<table>"; 
while ($row = mysqli_fetch_array($sql_query)) { 
    $col1 = $row['col1']; 
    $col2[] = $row['col2']; 

    echo "<tr>"; 
    echo "<td> $col1 </td>"; 
    echo "</tr>"; 
} 
for($i = 0; $ < count($col2); $i++){ 
    echo "<tr>"; 
    echo "<td> $col2[$i] </td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 
+0

これは魅力的な解決策です。私は "while"ループの後に "for"ループを追加することを考えていませんでした。私はこれを実験しようとしています。これは実際に私が実際にこの問題を簡略化して消化しやすくするために、私が取り組んでいるシナリオにも役立ちます:) – JeremyCanfield

+0

はい、@AjuJohnはこの質問に対して良い答えを持っています。 –

関連する問題