2015-08-22 261 views
-1

我目前在PHP中創建博客,目前博客只能接受每個帖子的單個標籤或標籤。PHP中的多個標籤或標籤

請給我一個關於如何在PHP中爲每個帖子創建或添加多個標籤或標籤的想法。我希望帖子有多個標籤或標籤。

謝謝

+0

簡單,例如使用一個表格:ID這樣blog_post_id標籤可以爲一個帖子保留多個標籤 – jewelhuq

+3

標記爲太寬泛。 http://stackoverflow.com/tour – DeDee

+0

認爲多對多的關係。通過鏈接表 – nomistic

回答

0

您使用的數據庫類型非常重要。例如,對於像MongoDB這樣的事情來說,這樣做會容易得多,但爲了交叉兼容性,這是一個簡單的平坦方法。

選項1: 這裏是一個快速入侵,每個人都會倒下,但我很好。

<?php 
    $tags = "tag1,tag2,tag3"; 

    $exploded_tags = explode(",", $tags); 

    foreach($exploded_tags as $elem) { 
     echo $elem; 
    } 

將它們存儲爲以逗號分隔的標記,並且當您爲標記查詢數據庫時,將它們分解。

選項2:

你的「博客​​文章」必須以某種方式對數據庫的標識,通過標題爲「我 - 博客 - 後」之稱。所以你會有一個名爲「blog_posts」的表,另一個名爲「tags」。在「標籤」中,您將有一個名爲「post_title」的列。讓我們說你是通過你的網址中的文章的標題,你可以使用去抓住那個標題:

<?php 
    $post_title = $_GET['post']; // my-blog-post 
    $post_tags = array("tag1","tag2","tag3"); 

    function insert_tags($title, $tags) { 
    $query = $database->prepare("INSERT INTO `tags` (`post_title`, `tags`) VALUES(?,?)"); // this Query inserts the post title for each tag to identify 

    $query->bindValue(1, $title); // injects the title to the column post_title 
    $query->bindValue(2, $tags); // injects the tag to the column tags 

    try { 
    $query->execute(); // executes the above query 
    } catch (PDOException $e) { 
    echo $e->getMessage(); 
    } 

    return 0; // please don't do parenthesis 
    } 

    foreach($post_tags as $elems) { 
    // since the tags are in an array, we need to loop through them 
    insert_tags($post_title, $elems); 
    // this function will now insert each individual tag with the title "my-blog-post" 
    } 

有PDO的代碼,所以如果你不使用PDO它仍然是適應mysqli什麼的。現在,一旦你在你的代碼進入,你可以像這樣的東西回憶起來:

<?php 
    function find_tags($post_title) { 
    $query = $database->prepare("SELECT * FROM `tags` WHERE `post_title` = ?' "); 

    $query->bindValue(1, $post_title); 

    $query->execute(); // getting rid of exceptions for ease. This will execute the query 

    return $query->fetchAll(); // Because we are fetching 2 if not more rows, we need to tell PDO to fetch everything it found and return it to the function that called it 

    } 

    $tags = find_tags($_GET['post_title']); //my-post-title 

    foreach($tags as $elems) { 
    echo $elems; 
    } 

此,在大多數情況下,應該工作。 Foreach可能有點矯枉過正,但這是總體思路。讓我知道你是否需要解釋

+0

非常感謝你提供的這個選項,我一定會試試這個,一旦得到結果就回來。再次感謝您 –

+0

它的工作!有效!有效!有效!有效!有效!有效! 選項1做到了一切! :D 非常感謝代碼,我也能夠在每個標籤上添加鏈接。非常感謝,案件關閉。 :) –