2013-08-30 3 views
-1

두 개의 'while'함수가 실행되어야하는 PHP 코드/스크립트를 작성하려고합니다. 나는 이것이 올바른 방법인지는 모르지만 나는 다른 것을 알지 못한다. 내가 코드의이 부분을 제외하면한 스크립트에서 두 개의 "while"함수를 실행하십시오.

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

작품

<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> 

라인 :

여기에 전체 코드의

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 | 사용자 데모가 Client - Myclient를 변경했습니다. 검색한다 myclient에의 데이터베이스 ID와 하이퍼 링크 "client.php? 이드 = ..."생성되어야

.

그래서 문제는 두 번째 함수를 실행할 때 발생합니다 ...하지만 다른 방법으로 다른 DB 테이블에 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

관련 문제