PHP Tree Traversal для подфорумов в подфорумах - PullRequest
0 голосов
/ 22 января 2011

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

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

Как мне динамически создать путь к любому из этих подфорумов на месте с помощью PHP.

После того, как путь будет создан, я буду использовать его в href и других вещах.

Я предполагаю, что мне нужно каким-то образом пройти через базу данных на основе столбца идентификатора и другого столбца, который связывал бы один подфорум с другим подпунктомforum.

Давайте предположим, что моя таблица базы данных выглядит следующим образом:

ID | Name        | Link |
---+-------------+-------
1  | Forum-One   | Top  |
2  | Forum-Two   | 1    |
3  | Forum-Three | 2    |
4  | Forum-Four  | 2    | 
5  | Forum-Five  | 3    |
6  | Forum-Six   | 3    |

Как мне поступить, или вместо этого нужно что-то еще сделать?

Надеюсь, я был достаточно ясен, чтобы все могли понять.

РЕДАКТИРОВАТЬ:

 include("inc/config.php");

 function generateBreadcrumb($startingID){

  $result = mysql_query("SELECT * FROM temp_table WHERE ID='$startingID'");

  while($row = mysql_fetch_array($result))
  {
    $db_id=$row['ID'];
    $db_name=$row['Name'];
  }

     if($db_id!='Top'){
         return generateBreadCrumb($db_id);
     } else {
         return $db_name;
     }
 }

 $startID='6';
 echo generateBreadcrumb($startID);

1 Ответ

1 голос
/ 22 января 2011

Сначала вам нужно завершающее условие.Поэтому установите для вашего форума верхнего уровня [ссылка] значение null, или «top», или что-то еще.Тогда нужно просто использовать рекурсивную функцию, чтобы собрать воедино вашу хлебную крошку.

Итак, давайте предположим, что вы хотели перейти к отображению этой хлебной крошки на форуме-один: форум-три: форум-шесть, более известный какForum-Six.

Пример кода:

 <?php
 $yourForumId = 6; // replace this dynamically with your forum;
 $breadcrumb = generateBreadcrumb($yourForum);
 function generateBreadcrumb($startingForumId){
     $sql= "SELECT Name ,link FROM Forums WHERE ID = ".$startingForumId;
     //run your $sql however you do to get results
     //assuming you get associative arrays back
     if($res['link'] != 'top'){
         return generateBreadCrumb($res['link']).":".$res['Name'];
     } else {
         return $res['Name'];
     }
 }
 echo $breadcrumb;
 ?>

Это рекурсия, которая, если вы новичок в этом, может показаться сложной, но я надеюсь, что это поможет!

РЕДАКТИРОВАТЬ: вот ваш код с необходимым редактированием ...

include("inc/config.php");

 function generateBreadcrumb($startingID){

     $result = mysql_query("SELECT * FROM temp_table WHERE ID='$startingID'");

     $row = mysql_fetch_array($result);
     $db_id=$row['link'];
     $db_name=$row['Name'];

     if($db_id!='Top'){
         return generateBreadCrumb($db_id).":".$db_name;
     } else {
         return $db_name;
     }
 }

 $startID='6';
 echo generateBreadcrumb($startID);
...