-1

私がやりたいのは、ワードプレスのパーマリンクなどのシステムのようなパーマリンクを作成することです。

例えば:

  $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. かなり文字列に変換します(例:abc = abc)
  3. かなり文字列が存在するかどうかを確認します。それ以外の場合は+1(例:abcが存在する、abc-1-abc-9999)
  4. フリーネームが存在しなくなるまでprettystringをループします。

しかし、うまくいかないのは次のとおりです。

たとえば、新しい投稿を作成する場合:

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を使用する必要がありますか?

4

1 に答える 1

2

abc行数が0の場合に返されます

$value = 'abc';
$query_result = mysql_query("SELECT * FROM `table`");
$num_result = mysql_num_rows($query_result);

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

PS。次の開発にPDOを使用してみてください。良いチュートリアル

あなたの問題のために:

$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);
}
于 2012-08-27T06:56:13.700 に答える