-1

2 つの「while」関数を実行する PHP コード/スクリプトを作成しようとしています。これが正しい方法かどうかはわかりませんが、他には何も知りません。

完全なコードは次のとおりです。

<div class="events">
<div class="eventhead">Log</div>

<?
include_once 'dbcon.php';
$sql2 = "SELECT * FROM event_log ORDER BY id ASC LIMIT 10";
$rs2 = mysql_query($sql2);

while($row2 = mysql_fetch_array($rs2)) {
do {
    $id = $row2['id'];
    $date = $row2['date'];
    $user = $row2['user'];
    $action = $row2['action'];
    $dept = $row2['dept'];
    $desc = $row2['desc'];


if ($dept == "Client") {
        $dsql = mysql_query("SELECT * AS title FROM clients WHERE cl_name LIKE '%$desc%'");
    } else if ($dept == "Device") {
        $dsql = mysql_query("SELECT * AS title FROM devices WHERE dev_id LIKE '%$desc%'");
    };

$query = mysql_query($dsql) or die (mysql_error());
while($dq = mysql_fetch_array($query)) {
do {
    $did = $dq['id'];
    $title = $dq['title'];

?>
<p>• <?= $date ?> | User <?= $user ?> <?= $action ?> <?=$dept ?> - <?= $desc ?>.</p><br />
<p><?= $title ?></p>
<? } while($row2 = mysql_fetch_array($rs2)); ?>
<? } while($dq = mysql_fetch_array($query)); ?>
<? } ?>
<? } ?>

</div>

この線

<p>• <?= $date ?> | User <?= $user ?> <?= $action ?> <?=$dept ?> - <?= $desc ?>.</p><br />

コードのこの部分を除外すると機能します:

if ($dept == "Client") {
        $dsql = mysql_query("SELECT * AS title FROM clients WHERE cl_name LIKE '%$desc%'");
    } else if ($dept == "Device") {
        $dsql = mysql_query("SELECT * AS title FROM devices WHERE dev_id LIKE '%$desc%'");
    };

$query = mysql_query($dsql) or die (mysql_error());
while($dq = mysql_fetch_array($query)) {
do {
    $did = $dq['id'];
    $title = $dq['title'];

その部分を含めたい主な理由は、結果が、そこに表示されているクライアントの名前を参照するハイパーリンクであるべきだからです!

このように説明しましょう。このスクリプトが、スクリプトの障害部分なしでブラウザーで実行されると、次のように返されます。

► 2013-08-29 18:19:19 | ユーザーデモは、クライアント - Myclient を変更しました。

myclientのデータベース ID を取得し、ハイパーリンク "client.php?id=..." を作成する必要があります。

したがって、2番目のwhile関数を実行すると問題が発生すると思います...しかし、クライアントがハイパーリンクを作成する場合、別のDBテーブルにクエリを実行してIDと名前を取得するにはどうすればよいですか??

前もって感謝します!!

4

1 に答える 1

0

余分なものがあります。

if ($dept == "Client") {
    $dsql = mysql_query("SELECT * AS title FROM clients WHERE cl_name LIKE '%$desc%'");
} else if ($dept == "Device") {
    $dsql = mysql_query("SELECT * AS title FROM devices WHERE dev_id LIKE '%$desc%'");
};

その最後; そこにいるべきではない

次の行に余分な } が必要です

<? } while($dq = mysql_fetch_array($query)); ?>

する必要があります

<? }} while($dq = mysql_fetch_array($query)); ?>

そして最後を取る

<? } ?> 

ラインアウト。

ストアドプロシージャを使用して内部結合を行う方が簡単なようですが、ロジックを詳しく調べていませんが、少なくともこれにより、構文が適切に整列されます。

また、あなたのphpタグ付けスタイル

<? ?> 

最後の各行で必要ではなく、使用するだけです

<?php 

最初の行と

?> 

最後に読みやすくなります。

于 2013-08-30T00:44:13.547 に答える