2015-08-04 2 views
0

У меня есть набор запросов, где я выводящие комментарии, которые связаны с должностями, а также с указанием пользователя, который разместил комментарий с помощью этого запроса:Получить информацию о пользователе из таблицы пользователей

$q = "SELECT p.post_id, f.created_date, f.comment_id, f.comment_content, j.id, u.user_id 
     FROM forum_post AS p 
     INNER JOIN comment_post_join AS j ON p.post_id = j.post_id 
     INNER JOIN forum_comment AS f ON f.comment_id = j.comment_id 
     INNER JOIN user_comment_join AS u ON u.user_id = u.user_id 
     WHERE p.post_id = '$id' 
     ORDER BY created_date ASC 
    "; 

$r = mysqli_query ($dbc, $q); // Run the query. 


// FETCH AND PRINT ALL THE RECORDS 
while ($row = mysqli_fetch_array($r)) { 

echo ' 
<div style="border-bottom: thin solid #ddd;"> 
    <p style="font-size: 13px;">'.$row["comment_content"] . '</p> 
    <p style="font-size: 12px;">By: <a href="user_view.php?id=' . $row["user_id"] . '">'.$row["user_id"] . '</a> ' .date("F j, Y, g:i a", strtotime($row["created_date"])). '</p> 
</div> 
'; 

} 

Как вы можете видеть конец результат выводит комментарий, а также user_id, но если я поинт u.first_name, например, он не дает мне выход. В моем выше он выведет идентификатор пользователей, который опубликовал, но изо всех сил пытается получить свое имя.

У меня есть эти таблицы:

users 
    user_id 
    first_name 
    last_name 

comment_post_join 
    comment_id (Fk) 
    post_id (Fk) 

user_comment_join 
    user_id (Fk) 
    comment_id (Fk) 

user_post_join 
    user_id (Fk) 
    post_id (Fk) 

forum_post 
    post_id 
    post_title 
    post_content 
    post_created 
    post_topic 

forum_comment 
    comment_id 
    comment_content 
    created_date 

UPDATE

function build_post_view(){ 

     global $dbc; 

     $id = $_GET['post_id']; 

     $q = "SELECT u.user_id, u.first_name, u.last_name, f.post_created, f.post_id, f.post_title, f.post_content, j.id 
       FROM users AS u 
       INNER JOIN user_post_join AS j ON u.user_id = j.user_id 
       INNER JOIN forum_post AS f ON f.post_id = j.post_id 
       WHERE f.post_id = '$id' 
      "; 

     $r = mysqli_query ($dbc, $q); // Run the query. 

     // FETCH AND PRINT ALL THE RECORDS 
     while ($row = mysqli_fetch_array($r)) { 

     echo ' 
     <div style="border-bottom: thin solid #ddd;"> 
      <h3>'.$row["post_title"]. '</h3> 
      <p style="font-size: 13px;">By: <a href="user_view.php?id=' . $row["user_id"] . '">'.$row["first_name"] . ' ' .$row["last_name"]. '</a> ' .date("F j, Y, g:i a", strtotime($row["post_created"])). '</p> 
      <br> 
      <p style="font-weight: 500; line-height: 150%;">' . $row["post_content"] . '</p> 
      <br><br> 
     </div>  
     '; 

     } 


$q = "SELECT p.post_id, f.created_date, f.comment_id, f.comment_content, j.id, u.user_id, u.first_name, u.last_name 
     FROM forum_post AS p 
     INNER JOIN users AS us ON us.user_id = u.user_id 
     INNER JOIN comment_post_join AS j ON p.post_id = j.post_id 
     INNER JOIN forum_comment AS f ON f.comment_id = j.comment_id 
     INNER JOIN user_comment_join AS u ON u.user_id = u.user_id 
     WHERE p.post_id = '$id' 
     ORDER BY created_date ASC 
    "; 

$r = mysqli_query ($dbc, $q); // Run the query. 


// FETCH AND PRINT ALL THE RECORDS 
while ($row = mysqli_fetch_assoc($r)) { 

echo ' 
<div style="border-bottom: thin solid #ddd;"> 
    <p style="font-size: 13px;">'.$row["comment_content"] . '</p> 
    <p style="font-size: 12px;">By: <a href="user_view.php?id=' . $row["user_id"] . '">'.$row["user_id"] . ' '.$row["first_name"] . ' '.$row["last_name"] . '</a> ' .date("F j, Y, g:i a", strtotime($row["created_date"])). '</p> 
</div> 
'; 

} 
} 
+0

Не могли бы вы предоставить структуру базы данных 'forum_post'? –

+1

Только что обновил мой Q – PhpDude

+0

Как вы подключаете пользователя и 'forum_post'? Для их подключения вам понадобится поле user_id в вашей таблице «forum_post». Подобно тому, как у вас есть таблица 'comment_post_join' для подключения комментария к сообщению. –

ответ

1

UPDATE # 13

$q = "SELECT p.post_id, fc.created_date, fc.comment_id, fc.comment_content, u.user_id, u.first_name, u.last_name 
     FROM forum_post AS p 
     INNER JOIN comment_post_join AS cp ON cp.post_id = p.post_id 
     INNER JOIN forum_comment AS fc ON fc.comment_id = cp.comment_id 
     INNER JOIN user_comment_join AS uc ON uc.comment_id = fc.comment_id 
     INNER JOIN users AS u ON u.user_id = uc.user_id 
     WHERE p.post_id = '$id' 
     ORDER BY fc.created_date ASC 
    "; 

if ($r = mysqli_query($dbc, $q)) { // Run the query. 

    // FETCH AND PRINT ALL THE RECORDS 
    while ($row = mysqli_fetch_assoc($r)) { 
    echo ' 
    <div style="border-bottom: thin solid #ddd;"> 
     <p style="font-size: 13px;">'.$row["comment_content"] . '</p> 
     <p style="font-size: 12px;">By: <a href="user_view.php?id=' . $row["user_id"] . '">'.$row["first_name"] . ' '.$row["last_name"] . '</a> ' .date("F j, Y, g:i a", strtotime($row["created_date"])). '</p> 
    </div> 
    '; 
    } 

}else{ 
    echo 'ERROR: ' . mysqli_error($dbc) . ''; 
} 
+0

Эй, я получаю эту ошибку: 'Warning: mysqli_fetch_array() ожидает, что параметр 1 будет mysqli_result, boolean задан в C: \ MAMP \ htdocs \ functions \ functions.inc.php в строке 963' – PhpDude

+0

Какие источники:' while ($ row = mysqli_fetch_array ($ r)) {' – PhpDude

+0

Обновлено. Также прокомментируйте свой ответ выше. –

0

Попробуйте это;

SELECT 
    p.post_id, f.created_date, f.comment_id, f.comment_content, j.id, u.user_id 
FROM 
    forum_post p,forum_comment f,user_comment_join ux,comment_post_join j,users u 
WHERE 
    p.post_id = j.post_id AND 
    f.comment_id = j.comment_id AND 
    ux.post_id = j.post_id AND 
    u.user_id = ux.user.id AND 
    p.post_id = '$id' 
ORDER BY created_date ASC 
+0

Работает ли этот синтаксис в MySQL? или только в MSSQL? 'FROM forum_post p, forum_comment f, user_comment_join ux, comment_post_join j, users u' –

+1

Я использую это в MYSQL и (Oracle pl/sql) – hurricane

+0

Не знал, что это работает в MySQL. Теперь я знаю. :) –

Смежные вопросы