2013-08-30 57 views
-1

我試圖編寫一個PHP代碼/腳本,其中應執行兩個'while'函數。我不知道這是否是正確的方法,但我不知道其他任何東西。在一個腳本中執行兩個「while」函數

這裏的完整代碼:

<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']; 

主要的原因我想包括部分是結果應該是一個超鏈接,它指的是在那裏顯示名字的客戶的ID!

讓我來解釋一下吧。如果這個腳本在沒有腳本錯誤部分的瀏覽器中執行,它會返回:

►2013-08-29 18:19:19 |用戶演示更改了客戶端 - Myclient。

其中數據庫ID爲myclient應檢索並創建超鏈接「client.php?id = ...」。

因此,問題出現在運行第二個函數時,我推測...但我怎麼能查詢另一個數據庫表來獲取ID和名稱,如果客戶端創建超鏈接?

預先感謝您!

+0

您可以在查詢中使用'JOIN'語句或'UNION'。閱讀這兩個。 – DevlshOne

回答

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 
第一線

?> 

最後會讓閱讀更容易。

+0

謝謝你的建議,會測試它! – Boeta

相關問題