1

私は今、この問題について絶望的であり、それが私がここにいる理由です。私はPHPとmysqlプログラミングの初心者です。Webで解決策を探しましたが、成功しませんでした。私は自動車修理管理システムとは何かというプロジェクトに取り組んでいます。これは私が必要としているその一部です。

私は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)

結果をテーブルに表示する必要があります。このテーブルでは、どの修復が画像テーブルに画像を持っているかを確認できますが、冗長性がないため、互いに類似した複数の修復行ではなく、1つの修復行が必要です。その後に複数の画像列があります。

私がすでにしたこと:

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

これは次のような情報を表示します:

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のgroupbyで異なりますが、これは次のような結果を表示します。

 repair id | picture

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

したがって、最初の修復IDの後で継続せず、修復ID25の修復画像が表示されません。

わかりません、どうすれば正しく理解できますか。次のような情報を表示するテーブルが必要です。

repair id | picture

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

これで私を助けてくれませんか?

4

1 に答える 1

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> "variable going here" </ td>を出力するだけで、同じ列に保持されます。IDが変更された場合は、行を終了し、</ tr> <tr> "を使用して新しい行を作成します。さらにサポートが必要な場合は、コメントしてください。

于 2012-04-22T22:29:50.683 に答える