Mysql Join, PHP - PullRequest
       24

Mysql Join, PHP

0 голосов
/ 23 декабря 2009

Перед тем, как вставить строку кода, позвольте мне объяснить, чего я пытаюсь достичь.

Я бы хотел запросить таблицу, в которой у конкретной страницы есть определенный parent_id. Как только у меня будут все результаты, я бы хотел взять идентификатор страницы с этим конкретным parent_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'");

Ответы [ 2 ]

0 голосов
/ 23 декабря 2009

Не должно быть проблем с получением нескольких строк с учетом текущего запроса:

$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 голосов
/ 23 декабря 2009

Можете ли вы опубликовать результаты вашего запроса? Насколько я вижу, ваш оператор select должен выполнить трюк, повторяя поля cms_page.id и т. Д. Для каждой соответствующей части.

См. Также http://www.w3schools.com/Sql/sql_join_left.asp

Это (я надеюсь) должно решить ваш вопрос $ row ['page_part']:

<code>$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 '
'; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...