0

私は自分のコードに少しこだわっています。

私は練習していて、次のことを達成したいと思っています。

ユーザーがサインアップする前に、名前を1つ増やすよりも、存在する場合はユーザーのユーザー名が存在することを確認したいと思います。

したがって、私のロジックは次のように機能します。ユーザーは自分の姓名を入力し、それに基づいてユーザー名を生成します。

関数

function unique_name($first_name, $last_name) {

$username = strtolower($first_name.'.'.$last_name)

$check = mysqL_query(" SELECT username WHERE username = '".$username."' ");

    if(count($check == 1)) {
        $i = 2;
        foreach($check as $user) {
            return $user['username'].$i;
            $i++;
        }
    } else {
        return $username;
    }
}

$username = unique_name($_POST['first_name'], $_POST['last_name']);
// saveing the increased username

したがって、実際には、スクリプトは、生成された一意のユーザー名が存在するかどうかを確認し、exsits が増加した場合でもそれを増加させる必要があります。

Tom Anderson がサインアップすると、ユーザー名は tom.anderson になり、tom anderson として保存されます

2 番目に Tom Anderson がサインアップします。ユーザー名は tom.anderson になります。これは既に存在するため、新しいものを tom.anderson2 として保存します。

3 番目のユーザーもトム アンダーソンでサインアップし、ユーザー名 tom.anderson* が 2 回存在し、tom.anderson3 に増加します。

したがって、ユーザーが存在するかどうかを確認して保存するのに問題はありません。私の問題は、存在する場合にすべてのユーザー名を増やす方法ですか?

私は誰にもこれを書くように頼んでいるわけではありません。ヒントを探しているだけです。

ありがとうございました

編集

返信ありがとうございますが、これは機能しません

if(count($check) == 1) {
    $i = 2;
    foreach($check as $user) {
        return $user['username'].count($check);
        $i++;
    }
} else {
    return $username;
}

これは番号なしでユーザー名のみをチェックするため、ユーザー名 tom.anderson が存在する場合は tom.anderson1 に増加しますが、tom.anderson1 も存在する場合は tom.anderson2 に増加しません

4

3 に答える 3

3

count0でない限り、返された行を追加するだけのものはありますか?

if(count($check) > 0) {
   return $user['username'].count($check);
} else {
    return $username;
}

SQL を変更します。

" SELECT username WHERE username LIKE '".$username."%' " 
于 2013-02-19T14:14:24.117 に答える
0

このように与えてみてください

if(count($check) == 1) {
    $i = 2;
    foreach($check as $user) {
        return $user['username'].count($check);
        $i++;
    }
} else {
    return $username;
}
于 2013-02-19T14:12:00.977 に答える
0

新しいフィールドをユーザー テーブルに追加して、それを base_username と呼ぶことができます。指定されたユーザー名でカウント行をフェッチし、見つかったカウントごとにユーザー名を増やします

`function unique_name($first_name, $last_name) {
    $unique_name = $username = strtolower($first_name.'.'.$last_name)
    $cnt = get_row(" SELECT COUNT(*) from `users` WHERE base_username = '".$username."' LIMIT 1 ");
    もし($cnt){
        $unique_name = $username . $cnt + 1;
    }
    $unique_name を返します。
}`
于 2013-02-19T14:31:08.787 に答える