2017-01-17 8 views
0

新しい投稿を追加するには投稿フォームがあります。投稿のタイトルをpost_urlまたはslugとしました。ユニークなpost_urlが必要です。投稿のタイトルを使用してユニークなスラッグを作成する

$post_name = $this->input->post('post_title'); 
function clean($post_name) { 
    $name = trim($post_name); 
    $post_name = str_replace(' ', '-', $name); 
    return preg_replace('/[^A-Za-z0-9\-]/', '', $post_name); 
} 

$post_url = clean($post_name); 
$query = mysql_query("select post_url from sa_posts where post_url like '" . $post_url . "%'"); 
while ($r = mysql_fetch_assoc($query)) { 
    $slugs[] = $r['post_url']; 
    if (mysql_num_rows($query) !== 0 && in_array($post_url, $slugs)) { 
     $max = 0; 
     while (in_array(($post_url . '-' . ++$max), $slugs)) ; 
     $post_url .= '-' . $max; 
    } 
} 
echo "Slug " . $post_url; 

を私のように出力を取得しています - -

ポストURL

後のurl-1

後のURL - ここ
は、私がこれまでにやっていることです1-1

ポストurl-1-1-1

しかし、私はのような出力をしたい -

ポストURL

後のurl-1

後のurl-2

後のurl-3

私のコードには何がありますか?
私を助けてください。
ありがとうございます。

+0

第1の変化の$ POST_URL =。 ' - '。 $ max; $ post_url = $ post_urlになります。 $ max; – coder

+0

@coderちょうどハイフン( - )を取り除いて出力をpost-url、post-url1、post-url2として表示しています – Deepak

+0

ansを確認してください。 – coder

答えて

2

を変更し、次のようにあなたのコード

$post_url = clean($post_name); 
$post_url1 = $post_url; 
$query = mysql_query("select post_url from sa_posts where post_url like '" . $post_url . "%'"); 
while ($r = mysql_fetch_assoc($query)) { 
    $slugs[] = $r['post_url']; 
    if (mysql_num_rows($query) !== 0 && in_array($post_url, $slugs)) { 
     $max = 0; 
     $post_url = $post_url1; 
     while (in_array(($post_url . '-' . ++$max), $slugs)) ; 
     $post_url .= '-' . $max; 
    } 
} 
echo "Slug " . $post_url; 
+0

@ coderこれはまさに私が欲しかったものです。どうもありがとう。 – Deepak

3
function UniqueSlugGenerator($p){ 
    include("conn.php"); 
    $RowCou=0; 
    $slug = preg_replace('/[^a-z0-9]/', '-', strtolower(trim(strip_tags($p)))); 
    $qq = mysqli_query($conn,"select Slug from ser_posts where Slug like '$slug%'") or die(mysqli_error($conn)); 
    $RowCou = mysqli_num_rows($qq); 
    return ($RowCou > 0) ? $slug.'-'.(++$RowCou) : $slug; 
} 
関連する問題