php永久链接像wordpress永久链接

时间:2012-08-27 06:52:48

标签: php mysql

我想要做的就是创建一个固定链接系统,例如wordpress固定链接。

例如:

  $value = 'abc';
    if($query_result > 0){
       $value = 'abc1'; // if exists check abc2, abc3, abc4, abc5, etc. etc.
    } else{
      return $value
    }

查询结果是搜索行数$query_result = mysql_num_rows

此刻我创造了这个:

if(!empty($_POST['ajax'])){
    if($_POST['ajax'] == 'pages'){
        echo prettyName($_POST['title']);
    }
}

function prettyName($string)
{
    $echo = strtolower(str_replace(array('  ', ' '), '-', preg_replace('/[^a-zA-Z0-9 s]/', '', trim($string))));
    $sql = "SELECT * FROM posts WHERE post_pretty = '".$echo."'";
    $res = mysql_query($sql) or die (mysql_error());
    $num = mysql_num_rows($res);
    if($num){
        $echo = $echo.'-'.pretty2($echo, $num);
    }
    return $echo;
}

function pretty2($echo,$num,$i = 1)
{
    $sql = "SELECT * FROM posts WHERE post_pretty = '".$echo.'-'.$i."'";
    $res = mysql_query($sql) or die (mysql_error());
    $num = mysql_num_rows($res);
    if($num){
        $i++;
        $i = pretty2($echo,$num,$i);
    }
    return $i;
}

它做了什么:

  1. 检查$value$_POST['title'])是否存在
  2. 转换为prettystring(例如:a b c = a-b-c)
  3. 检查prettystring是否存在其他+1(例如:a-b-c存在,a-b-c-1 - a-b-c-9999)
  4. 循环prettystring,直到自由名称不存在。
  5. 但出了什么问题是:

    如果我创建一个新帖子,例如:

    new post 1 name = testpage // results in testpage
    new post 2 name = testpage // results in testpage-1
    new post 3 name = test-page // results in testpage-2 // should be test-page
    

    如果我创建一个包含很多空格的新帖子,那么我还能错误地删除所有空格?尝试用户TRIM功能但不起作用。或者我应该使用javascript来避免这种情况吗?

1 个答案:

答案 0 :(得分:2)

如果num rows为0

,它将返回abc
$value = 'abc';
$query_result = mysql_query("SELECT * FROM `table`");
$num_result = mysql_num_rows($query_result);

if($num_result){
   $value = 'abc1';
}

PS。尝试使用PDO进行下一步开发。好Tutorial

解决您的问题:

$query_result = mysql_query("SELECT `name` FROM `Table1` ORDER BY `name` DESC LIMIT 1");
$num_result = mysql_num_rows($query_result);

if($num_result){
   $row = mysql_fetch_assoc($query_result);
   $value = (int)str_replace('abc', '', $row['name']);
   $value = 'abc'.($value+1);
}