2014-11-26 1 views
0

내 요구 사항을 충족시키는이 작은 PHP 코드 조각을 발견했습니다.PHP에서 다른 조건의 위치 지정

<?php 
$allDocs = mysql_query("SELECT id, parent FROM modx_site_content ORDER BY id DESC"); 
while($doc = mysql_fetch_assoc($allDocs)) { 
$parent = mysql_query("SELECT id FROM modx_site_content WHERE parent = " . $doc['id'] . " AND id = " . $doc['parent']); 
if(mysql_num_rows($parent)) { 
while($parentDoc = mysql_fetch_assoc($parent)) { 
echo 'Infinte loop found<br /><br />'; 
echo 'Document #' . $doc['id'] . ' and document #' . $parentDoc['id'] . ' are each others parent.'; 
} 
} 
else { 
    echo 'No loop found'; 
} 
} 
?> 

을하지만 while 루프로 전환 :

<?php 
$allDocs = mysql_query("SELECT id, parent FROM modx_site_content ORDER BY id DESC"); 
while($doc = mysql_fetch_assoc($allDocs)) { 
$parent = mysql_query("SELECT id FROM modx_site_content WHERE parent = " . $doc['id'] . " AND id = " . $doc['parent']); 
if(mysql_num_rows($parent)) { 
while($parentDoc = mysql_fetch_assoc($parent)) { 
echo 'Infinte loop found<br /><br />'; 
echo 'Document #' . $doc['id'] . ' and document #' . $parentDoc['id'] . ' are each others parent.'; 
} 
}  
} 
?> 

나는이 같은 다른 조건을 넣어했습니다. else 조건을 넣을 적절한 장소는 어디입니까?

+0

두 번째 while 루프에 들어가기위한 프로그램의 흐름을 중단시키는 ELSE 조건은 어떻게됩니까? 조건부에는 두 번째 쿼리의 결과가 있는지 여부가 있습니다. – Deleteman

+0

그 전에 다른 어딘가에 있어야 할 말인가요? – Santosh

+0

정확히 무엇을하고 싶습니까? 결과가 없으면 "No loop found"가 출력됩니까? 그렇다면 코드가 정확합니다. "$ parent = mysql_query ("SELECT id FROM modx_site_content WHERE parent = ". $ doc [ 'id']."AND id = ". $ doc [ 'parent']); " 시도한 결과가 없습니다. – Deleteman

답변

0

압입은 용액이었다

<?php 
$allDocs = mysql_query("SELECT id, parent FROM modx_site_content ORDER BY id DESC"); 
while($doc = mysql_fetch_assoc($allDocs)) { 
    $parent = mysql_query("SELECT id FROM modx_site_content WHERE parent = " . $doc['id'] . " AND id = " . $doc['parent']); 
    if(mysql_num_rows($parent)) { 
     while($parentDoc = mysql_fetch_assoc($parent)) { 
      echo 'Infinte loop found<br /><br />'; 
      echo 'Document #' . $doc['id'] . ' and document #' . $parentDoc['id'] . ' are each others parent.'; 
     } 
    } else { 
     //Your Code Here 
     break; 
    } 
} 
?> 

상기 제 1 루프 아니라 내부이면 제의 다른.

편집 : 종료 루프에 중단을 추가했습니다.

+0

여전히 루프에 들어갑니다. – Santosh

+0

정확히 원하는대로 할 수 있습니다. if가 루프 안에 있고 else가 루프 안에 있습니다. –

+0

다른 방법으로 while 루프를 피할 수있는 방법은 없습니까? – Santosh

0

질문을 제출하기 전에 코드 샘플을 입력하십시오. 더 읽기 쉽게 ...

else 문이 올바른 것으로 보입니다. while 문을보십시오. if-statemnt가 false가되기 전에 첫 번째 while 루프가 종료되기 때문에 코드가 if-else 문에 도달하지 못할 수도 있습니다. 또는 첫 번째 while 루프가 실행되는 한 항상 문으로 행을 가져옵니다.

$parent = mysql_query("SELECT id FROM modx_site_content WHERE parent = " . $doc['id'] . " AND id = " . $doc['parent']); 
+0

알겠습니다.이 사실을 명심하십시오. – Santosh