【发布时间】:2016-09-07 22:49:00
【问题描述】:
我需要使用此代码根据用户输入生成唯一的 slug:
public function create_slug($id, $name){
$count = null;
$name = url_title($name);
while(true) {
$this->db->select('id');
$this->db->where('id !=', $id);
$this->db->where('slug', $name);
$query = $this->db->get('users');
if ($query->num_rows() == 0) {
break;
} else {
$name .= '-' . (++$count);
}
}
return $name;
}
它会选择所有与 slug ($name) 匹配的东西,除了它自己的 slug。
第一个用户输入的结果 - 123 是 slug - 123。对于第二个相同的输入,slug 是123-1,但具有相同文本的第三个输入是结果123-1-2,这不是我想要的。
我尝试了另一种方法:
public function create_slug($id, $name){
$count = null;
$name = url_title($name);
$this->db->select('id');
$this->db->where('id !=', $id);
$this->db->where('slug', $name);
$query = $this->db->get('users');
if($query->num_rows()){
$count = '-' . ($query->num_rows() + 1);
}
return $name . $count;
}
这里是相同的查询,但行数 + 1。
对于第一个123,slug 是123;
第二个123,蛞蝓123-2;
第三个123,又是123-2,这不是唯一的。
如何创建基于某些用户输入且唯一的 slug,如果存在值为 name 的 slug,下一个将是 name-1,如果再次,下一个将是 name-2 等等?
【问题讨论】:
标签: php codeigniter