2009-12-23 5 views
0

코드 줄을 넣기 전에 제가 성취하고자하는 것을 설명해 드리겠습니다.Mysql Join, PHP

특정 페이지에 특정 parent_id가있는 테이블을 쿼리하는 것이 좋습니다. 일단 모든 결과가 나면이 특정 parent_id가있는 페이지의 ID를 가져 와서 다른 테이블에서 모든 관련 페이지 부분을 가져오고 싶습니다. 어떤 도움을 크게 감상 할 수

그럼 간단하게 인쇄 할 준비가 배열이 정보를 갖고 싶어

...

$q = $CONN->query("SELECT cms_page.id, cms_page.title, cms_page.slug, cms_page_part.* FROM cms_page LEFT JOIN cms_page_part ON cms_page_part.page_id=cms_page.id WHERE cms_page.parent_id='8'"); 
+0

샘플 코드는 현재 무엇을합니까? 오류가 있습니까? 아니면 결과가 잘못되었습니다. – philfreo

+0

내가 가지고있는 네 개의 포트폴리오를 나열하는 것처럼 보이지만 아마도 페이지 부분이 부정확 한 결합으로 인해 추가 된 것 같기 때문에 아마 반복 할 것 같습니다. – Andy

답변

0

당신은 쿼리의 결과를 게시 할 수 있습니까? 내가 아는 한 select 문은 각 일치하는 부분에 대한 cms_page.id 등의 필드를 반복해서 사용해야합니다.

은 $ 행 [ 'page_part를'] 해결한다 또한 http://www.w3schools.com/Sql/sql_join_left.asp

이을 (I 희망)를 참조 질문 :

$rows = array(); 
$result = mysql_query($sql); 
$row = mysql_fetch_assoc($result); 
while ($row) { 
    $rows[$row['title']][] = $row; // or select only the fields that you need 
    $row = mysql_fetch_assoc($result); 
} 

foreach($rows as $portfolio => $parts) { 
    // adjust for actual html rendering 
    echo '<pre>'; 
    print_r($portfolio); 
    echo "\n"; 
    $count = 0; 
    foreach($parts as $part) { 
    echo ++$count . ' - ' . $part['cms_page_part_field1'] . ' - ' . $part['cms_page_part_field2'] . "\n"; 
    } 
    echo '</pre>'; 
} 
+0

http://www.ldmgardendesign.com/portfolio.html – Andy

+0

개별 결과로 반환되지 않은 네 가지 포트폴리오 중 하나의 결과 집합으로 페이지 파트를 보내고 싶습니다. 포트폴리오가 하나이므로 관련 페이지 파트가 하나의 행으로 구성됩니다. – Andy

+0

난 그냥 다시 귀하의 게시물을 읽고 주위에 다른 방식으로 필요 .... 거의 같은 각각의 cms_page.id – Andy

0

여러 행을 검색하면 현재 쿼리를 부여 아무런 문제가 없어야합니다 :

$sql = "SELECT cms_page.id, cms_page.title, cms_page.slug, cms_page_part.* 
FROM cms_page 
LEFT JOIN cms_page_part ON (cms_page_part.page_id = cms_page.id) 
WHERE cms_page.parent_id = '8'"; 

당신과 같이 mysql_query에서 결과 집합을 통해 루프를 원하는 것 :

$result = mysql_query($sql); 
if ($result) { 
    // keep track of number of portfolio items 
    $i = 1; 
    // iterate over rows 
    while($row = mysql_fetch_assoc($result)) { 
     // output data to page for each row 
     echo 'Portfolio item ' . $i; 
     echo 'Title: ' . $row['title'] . '<br />'; 
     echo 'Slub: ' . $row['slug'] . '<br /><br />'; 
    } 
} 
+0

그것의 $ row [ 'page_part']는 까다로운 비트입니다. 기본적으로 다음과 같이 인쇄 할 수 있습니다. – Andy