2

ネストされた while ループの最初の結果の後にテーブルが表示されます。

私がやろうとしているのは、「ユーザー」テーブルから選択してユーザー名をリストとして表示し、そのリストを「現在のプロジェクト」テーブルのプロジェクト エンジニアと比較することです。

このようにして、名前の下に割り当てられたプロジェクトを含むプロジェクト エンジニアのリストが表示されます。

残念ながら、ネストされた最初の while ループが実行された後、空のテーブルが吐き出され、それを取り除く方法がわかりません。

$proj_engineer = ""; の初期変数に関係していると思われます。

この空のテーブルがどこから来たのか、それを取り除く方法を知っている人はいますか?

以下はコードです:

<?php
    $query = mysql_query("SELECT * FROM `users` ORDER BY `username` ASC") or die(mysql_error());
    while ($row = mysql_fetch_assoc($query)) {
        $user_id = $row['user_id']; 
        $username = $row['username'];                               

        $proj_engineer = "";

        $query1 = mysql_query("SELECT * FROM `current_projects` WHERE `proj_engineer`='$username' ORDER BY `proj_engineer` ASC") or die(mysql_error());
        while ($row1 = mysql_fetch_assoc($query1)) {
            $proj_id = $row1['proj_id']; 
            $proj_engineer = $row1['proj_engineer'];
        }

        echo "<table border=1><tr><td colspan=12><p class='bold18'>" . $proj_engineer . "</p></td></tr>";                           


        $query3 = mysql_query("SELECT * FROM `current_projects` WHERE `proj_engineer`='$username' ORDER BY `proj_id` DESC") or die(mysql_error());
        while ($row3 = mysql_fetch_assoc($query3)) {
            $proj_id = $row3['proj_id'];
            $proj_number = $row3['proj_number']; 
            $proj_name = $row3['proj_name'];
            $proj_sort = $row3['proj_sort'];
            $proj_start = $row3['proj_start'];
            $proj_finish = $row3['proj_finish'];
            $proj_overstat = $row3['proj_overstat'];
            $proj_dwgstat = $row3['proj_dwgstat']; 
            $proj_soostat = $row3['proj_soostat']; 
            $proj_substat = $row3['proj_substat']; 
            $proj_engineer = $row3['proj_engineer'];
            $proj_drafter = $row3['proj_drafter'];
            $proj_rating = $row3['proj_rating'];
            $proj_pending = $row3['proj_pending'];
            $proj_notes = $row3['proj_notes'];

            $start_time = date("m/d/y", $proj_start);
            $finish_time = date("m/d/y", $proj_finish);

            echo "

                <tr>
                    <td width=40>$proj_number</td>
                    <td width=100>$proj_engineer</td>
                    <td width=100><a href='./project-page.php?proj_id=$proj_id'>$proj_name</a></td>
                    <td width=40>$start_time</td>
                    <td width=40>$finish_time</td>
                    <td width=110>
                        <div style='position:relative; background:url(images/bar01.gif); width:$proj_overstat; height:20;'>
                            <div style='position:absolute; bottom:0; left:0; width:$proj_overstat; font-weight:bold; color:#000000; vertical-align:middle; height:20; text-align:center;'>$proj_overstat%</div>
                        </div>
                    </td>
                    <td width=110>
                        <div style='position:relative; background:url(images/bar02.gif); width:$proj_dwgstat; height:20;'>
                            <div style='position:absolute; bottom:0; left:0; width:$proj_dwgstat; font-weight:bold; color:#000000; vertical-align:middle; height:20; text-align:center;'>$proj_dwgstat%</div>
                        </div>
                    </td>
                    <td width=110>
                        <div style='position:relative; background:url(images/bar03.gif); width:$proj_soostat; height:20;'>
                            <div style='position:absolute; bottom:0; left:0; width:$proj_soostat; font-weight:bold; color:#000000; vertical-align:middle; height:20; text-align:center;'>$proj_soostat%</div>
                        </div>
                    </td>
                    <td width=110>
                        <div style='position:relative; background:url(images/bar04.gif); width:$proj_substat; height:20;'>
                            <div style='position:absolute; bottom:0; left:0; width:$proj_substat; font-weight:bold; color:#000000; vertical-align:middle; height:20; text-align:center;'>$proj_substat%</div>
                        </div>
                    </td>
                    <td width=40 align='center'><a href='project-notes.php?proj_id=$proj_id'><img src='images/note.png' border=0></a></td>
                    <td width=40 align='center'><a href='./project-edit.php?proj_id=$proj_id'>EDIT</a></td>
                    <td width=40 align='center'><a href='./project-delete.php?proj_id=$proj_id'>DELETE</a></td>
                </tr>

            ";
        }
        echo "</table><br>";
    }                           
?>
4

1 に答える 1

1

これは、クエリが原因である可能性があります: -

$query1 = mysql_query("SELECT * FROM `current_projects` WHERE 
                      `proj_engineer`='$username' ORDER BY `proj_engineer` ASC") 
                       or die(mysql_error());

の空の値を取得しました$proj_engineer。テーブルを印刷する前に、代わりに変数に値が含まれているかどうかを確認できます。$proj_engineerを印刷する前に を印刷してみてくださいtable

echoingコードをコンストラクト内にテーブルで囲むことができますif。これにより、値が空でない場合にのみテーブルが出力されます。

于 2012-10-20T08:10:43.007 に答える