2012-04-22 5 views
1

私は今この問題について絶望的なので、ここにいるのです。私はPHPとmysqlプログラミングの初心者です。私はウェブ上で解決策を探したが成功しなかった。私は、管理システムを修復している車は何かプロジェクトに取り組んでいます。これは私が必要とする部分です。複数のテーブルがエコー中にエコーします

は、私は2つのテーブルがあります。

私はテーブルに結果を表示する必要が
repairs (j_id /this is the primary key/, rendszam, javitas, megjegyzes, datum) 
and 
pictures (kep_id /this is the primary key/, j_id /it's from repairs j_id/, kepnev) 

、私は絵テーブルの絵を持って修理のものを見ることができますが、冗長性はありません、私はドンので、お互いに似ている複数の修復行を必要としませんが、修復行の後には複数のピクチャ列があります。

私はすでにやっていること:

<?php 
$sql = "SELECT $tbl_name2.j_id, $tbl_name2.rendszam, $tbl_name2.javitas, $tbl_name2.megjegyzes, $tbl_name2.datum, $tbl_name3.kepnev FROM $tbl_name2, $tbl_name3 WHERE $tbl_name2.j_id=$tbl_name3.j_id"; 

$result = mysql_query($sql) or die(mysql_error()); 

while ($row = mysql_fetch_array($result)) { 
    echo "<tr><td>" . $row[$i] . "</td>"; 
    echo "<td>" . $row[$i + 1] . "</td>"; 
    echo "<td>" . $row[$i + 2] . "</td>"; 
    echo "<td>" . $row[$i + 3] . "</td>"; 
    echo "<td>" . $row[$i + 4] . "</td>"; 
    echo "<td>" . $row[$i + 5] . "</td>"; 
} 
?> 

この1つは、このような情報が表示されます。

repair id | picture 

1 | fdgdfg.jpg 
1 | fgdfg.jpg 
1 | fghh.jpg 
25 | dfg.jpg 
25 | jkjk.jpg 

しかし、私は後に複数の画像を持つ複数の修復行が、1つの修理の行を持っている必要はありませんそれ。

私はこれを試してみました:

$sql2="SELECT DISTINCT $tbl_name2.j_id, $tbl_name3.kepnev FROM $tbl_name2, $tbl_name3 WHERE $tbl_name2.j_id=$tbl_name3.j_id"; 

$result2=mysql_query($sql2) or die(mysql_error()); 

$sql="SELECT $tbl_name2.j_id, $tbl_name2.rendszam, $tbl_name2.javitas, $tbl_name2.megjegyzes, $tbl_name2.datum, $tbl_name3.kepnev FROM $tbl_name2, $tbl_name3 WHERE $tbl_name2.j_id=$tbl_name3.j_id GROUP BY j_id; 

$result=mysql_query($sql) or die(mysql_error()); 

while($row=mysql_fetch_array($result)) 
{ 
echo "<tr><td>".$row[$i]."</td>"; 
echo "<td>".$row[$i+1]."</td>"; 
echo "<td>".$row[$i+2]."</td>"; 
echo "<td>".$row[$i+3]."</td>"; 
echo "<td>".$row[$i+4]."</td>"; 
echo "<td>".$row[$i+5]."</td>"; 
while($sor=mysql_fetch_array($result2)) 
    { 
     if($sor['j_id']==$row[$i]){ 
     echo "<td><a href=kepek/".$sor['kepnev']." target=_blank>".$sor['kepnev']."</a></td>"; 
     } 
    } 

} 

SQL文が$ SQLですることで、グループで異なりますが、この1つは、このような結果が表示されます。

repair id | picture 

    1 | fdgdfg.jpg | fgdfg.jpg | fghh.jpg 
    25 |   

だから、それだけで後に継続していないです最初の修復ID、修復ID 25の修復画像を表示していません。

私はそれを正しく得ることができます。

repair id | picture 

    1 | fdgdfg.jpg | fgdfg.jpg | fghh.jpg 
    25 | dfg.jpg | jkjk.jpg 

このような情報を表示するテーブルが必要ですか?

答えて

1

これはかなり簡単ですが、あなたが良いスタートを切ったようです。

これまでと同じようなことをしましたが、表示されている現在のIDと以前に表示されたIDを追跡する変数を使用しました。ここでは、その意味を概説するための簡単なコードサンプルを示します。

while($row=mysql_fetch_array($result)) 
{ 
    $currentID=$row[$i]; 
    if ($currentID != $lastID) { 
     echo "</tr><tr><td>".$row[$i]."</td>"; 
    } else { 
     echo "<td>".$row[$i]."</td>"; 
    } 
    $lastID=$row[$i]; 
} 

したがって、最後のIDが何であったかを把握することが考えられます。次の行でIDが同じ場合は、<td>「変数はここに来る」</td >と同じ列に保持するだけです。 IDを変更した場合は、「行を終了し、</TR > <TR>を使用して新しい行を作成します。あなたはより多くの助けが必要な場合はコメントをお気軽に。

+0

それが問題を解決した編集のビットで、ありがとうございます。I今日も何か新しいことを学んだ。 – thenamelesshero

関連する問題