2013-10-13 4 views
1

Итак, у меня есть сценарий, который отображает все темы, размещенные с информацией о теме, мне было интересно, сможет ли кто-нибудь помочь мне сделать это так, когда кто-нибудь его комментирует, или если сообщение отредактировано, что это выровнят его до первой строки echod запроса?Выполнение запроса показать последнее обновление

function getReplies($id){ 
     $q = @mysql_query("SELECT reply_content, reply_date, reply_by FROM replies WHERE reply_id='$id'"); 
     if(!$q){ 
      echo 'Error: '.mysql_error(); 
     } 

     $res = mysql_fetch_array($q); 
     $q2 = @mysql_query("SELECT `topic_subject` FROM `topics` WHERE `topic_id`='$id'"); 
     if(!$q2){ 
      echo 'Error: '.mysql_error(); 
     } 

     $res2 = mysql_fetch_array($q2); 
     if($_SESSION['id'] == $res['reply_by']){ 
      echo '<div class="panel panel-default"> 
    <div class="panel-heading"><b>'.$res2['topic_subject'].'</b></div> 
    <div class="panel-body"> 
    '.nl2br($res['reply_content']).' 
    </div> 
       <div class="panel-footer"> 
        Posted By <strong><a href="../public.php?id='.$res["reply_by"].'">'.getOwner($res['reply_by']).'</stong></a> 
        on <strong>'.$res['reply_date'].'</strong><br /> 
        <a href="edit.php?id='.$id.'">Edit</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;<a href="delete.php?id='.$id.'">Delete</a> 
       </div> 
</div> 
      </div>'; 
     } else { 
      echo'<div class="panel panel-default"> 
    <div class="panel-heading"><b>'.$res2['topic_subject'].'</b></div> 
    <div class="panel-body"> 
    '.nl2br($res['reply_content']).' 
    </div> 
       <div class="panel-footer"> 
        Posted By <strong><a href="../public.php?id='.$res["reply_by"].'">'.getOwner($res['reply_by']).'</stong></a> 
        on <strong>'.$res['reply_date'].'</strong><br /> 
       </div> 
</div> 
      </div>'; 
     } 

    } 

Комментарии: Comments structure in DB

Сообщений: Posts structure in DB

Темы: Topics structure in DB

+0

Если вы имеете в виду, чтобы это произошло динамически без страницы освежает, то вам нужно будет использовать JavaScript для XHR (AJAX) с сервера и соответственно обновить DOM. –

+0

Да, но на данный момент я хочу начать просто и просто сделать так, чтобы кто-то ответил, что он стоит наверху. –

+0

Рассматривая свой код и пытаясь его оптимизировать, но я не могу видеть изображения, которые вы разместили для своих таблиц. Можете ли вы объяснить, что вы здесь делаете? Например, что означает $ _SESSION ['id']? Кроме того, не могли бы вы разместить свои отношения с БД в тексте? –

ответ

1

Попробуйте изменить свой первый запрос и предоставить ему ORDER BY, возможно?

$q = "SELECT reply_content, reply_date, reply_by 
     FROM  replies 
     WHERE reply_id='$id' 
     ORDER BY reply_date DESC"; 

Мне также кажется, что вы используете два запроса, где вам действительно нужно использовать их.

UPDATE: Оптимизированный код, постарайтесь не повторять себя, и присоединиться запросы

function getReplies($id) { 

     $query = "SELECT replies.reply_content, 
         replies.reply_date, 
         replies.reply_by 
         topics.topic_subject 
       FROM  replies, 
         topics 
       WHERE replies.reply_id = topics.topic_id 
        AND replies.reply_id = '$id' " . //<== PS: You should sanitize this $id parameter 
       " ORDER BY replies.reply_date DESC"; 
       // You can replace the replies.reply_date column by whatever you end up with for sorting 

     // Important note - Look into mysqli, mysql is deprecated and too old to be used these days. 
     $q = @mysql_query($query); 

     if(!$q) { 
      echo 'Error: '.mysql_error(); 
     } 

     $res = mysql_fetch_array($q); 

     $output = ' 
     <div class="panel panel-default"> 
      <div class="panel-heading"><b>'.$res['topic_subject'].'</b></div> 
      <div class="panel-body"> 
       '.nl2br($res['reply_content']).' 
      </div> 
      <div class="panel-footer"> 
       Posted By <strong><a href="../public.php?id='.$res["reply_by"].'">'.getOwner($res['reply_by']).'</stong></a> 
       on <strong>'.$res['reply_date'].'</strong><br />'; 

     if($_SESSION['id'] == $res['reply_by']) 
     $output .= '<a href="edit.php?id='.$id.'">Edit</a>&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;<a href="delete.php?id='.$id.'">Delete</a>'; 

     $output .= ' 
      </div> 
      </div> 
     </div>'; 

     echo $output; 

    } 
+0

Thankyou! Хотя как я могу сделать эту работу, когда появится новый комментарий? Могу ли я заказать его с помощью поля datetime комментариев в базе данных и если нет комментариев по адресу reply_date DESC? –

+0

Я собирался сказать, когда кто-то добавит комментарий reply_date к now(), но это не имеет большого смысла. Что делать, если я добавил другое поле datetime и заказал его этим, и сделал это, когда вы прокомментируете, что он обновляет это до now()? звучит хорошо? –

+0

Да, вы должны использовать столбец reply_last_update или что-то в этом роде. Я собирался предположить, что если бы это не было так, как это делал response_date. Попытайтесь и оптимизируйте свой код немного для вас тоже через секунду. –

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