2017-01-17 46 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

post-url-1-1-1

Но я хочу вывода, как -

после URL

пост-url-1

пост-url-2

пост-url-3

Что является проблемой в моем коде?
Пожалуйста, помогите мне.
Спасибо.

+0

первое изменение $ POST_URL =. '-'. $ Макс; до $ post_url = $ post_url. $ Макс; – coder

+0

@coder Он просто удаляет дефис (-) и показывает результат как пост-url, post-url1, post-url2 – Deepak

+0

PLZ проверить ан. – 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; 
} 

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

  • Нет связанных вопросов^_^