2017-02-16 12 views
0

Страницы форума на моем сайте используют PHP для создания таблицы, а затем используют цикл while для заполнения из базы данных. Это прекрасно работает и всегда есть, но я попытался перенести якорь, ссылку, тег со всего заголовка сообщения на весь первый раздел сообщения в таблице. Для этого он проходит через следующие этапы:php while loop echoing element вне цикла содержимого

  1. Открыть таблицу тег [ВНЕ ЦИКЛА]
  2. Echo заголовки [ВНЕ ЦИКЛА]
  3. Начало цикла While, что делает еще один пост раздел для каждого сообщения найдено ,
  4. Создать строку таблицы
  5. Создание табличных данных, содержание
  6. Echo
  7. Закрыть данные таблицы
  8. Повторите шаги 5-7 РАЗ для даты после раздела
  9. Закрыть строка таблицы
  10. близко стола [OUSTIDE OF LOOP]

Он должен сделать ссылки доступными для всех в первом разделе, и они удаляют d быть в пределах таблицы, как это:

<table> <--- *THIS IS BEFORE THE LOOP, IT GETS RUN ONCE ONLY* --> 
    <WHILE *do this like 5 times or something*> 
     <tr> 
     <a *category link*> 
      <td> 
      *content for the 'td' which is taken from the DB* 
      </td> 
      <td> 
      *content for the 'td' which is taken from the DB* 
      </td> 
     </a> 
     </tr> 
     <ENDWHILE> 
</table> 

Однако, на практике они в конечном итоге за пределами таблицы, как можно видеть на этом скриншоте:

preview showing anchors outside of table.

Может кто-нибудь пожалуйста объяснить это и как это исправить?

echo '<table class="forumTable"> 
    <tr> 
    <th>Category</th> 
    <th>Last topic</th> 
    </tr>'; 

while($row = mysqli_fetch_assoc($catResult)){ 
    echo '<tr>'; 
    echo '<a href="category.php?id=' . htmlspecialchars($row['catID']) . '"><td class="catDesc">'; 
    echo '<h3>' . $row['catName'] . '</h3>' . $row['catDesc']; 
    echo '</td>'; 
    echo '<td class="catTime">'; 
    $getTops = "SELECT topicID, topicSubject, topicDate, topicCat FROM topics WHERE topicCat = " . $row['catID'] . " ORDER BY topicDate DESC LIMIT 1"; 
    $topResult = mysqli_query($connect, $getTops); 
    if(!$topResult){ 
    echo '<p style="margin-top: 75px;">The last topic could not be displayed, please try again later.</p>'; 
    } 
    else{ 
    if(mysqli_num_rows($topResult) == 0){ 
     echo '<p>No topics</p>'; 
    } 
    else{ 
     while($topRow = mysqli_fetch_assoc($topResult)){ 
     echo '<a href="topic.php?id=' . $topRow['topicID'] . '">' . $topRow['topicSubject'] . '</a> at ' . $topRow['topicDate']; 
     } 
    } 
    } 
    echo '</td></a>'; 
    echo '</tr>'; 
} 
echo '</table>'; 
+0

Вам нужно показать фактический код, а не ''. – AbraCadaver

+0

Показать код, чтобы мы могли ответить на ваш вопрос. –

+0

ах, простите, я забыл это сделать. отредактировал сообщение. – iixCarbonxZz

ответ

0

Поскольку страница источника подтверждает, что анкеры, где вы разместили их, но браузер перемещает их вокруг, вы можете: - содержать ссылки внутри ячейки таблицы td - используйте альтернативный подход, чтобы добавить ссылку, где вы хотите. html - table row like a link

+0

Я использую метод javascript на странице, которую вы связали, но столкнулся с другой проблемой, избегая строки в javascript. «все еще разрешает строку выходить из строя. – iixCarbonxZz

+0

Мне нужно больше деталей, но попробуйте следующее: http://stackoverflow.com/questions/17551867/avoid-to-escape-a-special-characters-in-javascript – Bogdan

+0

'echo ''; 'выводится как это [Imgur.com ] (http://imgur.com/yLWog9v.png) – iixCarbonxZz

-1

Вы пытались получить страницу не из браузера? Как это выглядит? Я думаю, что браузер не позволит вам поставить <a> в <table> непосредственно без <tr><td> </td></tr>

+0

Вы правы - http://stackoverflow.com/questions/6439649/can-inline-elements-contain-block-elements?noredirect11&lq=1 - но вы, вероятно, занижены несмотря на то, что они правильны, потому что у вашего ответа не так много деталей и объяснений. – alexanderbird

+0

Извините за небольшое объяснение, я уже столкнулся с этой проблемой. Хороший день :) – edwardstock