1

私が達成しようとしているのは、アルファベットがあるページを作成することです。アルファベットの文字をクリックすると、データベースの列にある値が取得されます。

わからない場合の例。

データベース:

John
Jason
Jos
Jan
Marco
Bott

そこで、アルファベットの文字をクリックします。

<a href="?tag=J">J</a>

これにより、J で始まるすべてのユーザーが得られるはずです。

これは動作しない私のコードです (常に他にも返されます)。

            if(isset($_GET['tag'])){
                $tag = $_GET['tag'];
                $check = range('A', 'Z');
                foreach($check as $row){
                    if($tag == $row){
                        $query = $pdo->prepare("SELECT names FROM users WHERE UPPER(names) LIKE '{$row}%'");
                    } else {
                        $query = $pdo->prepare("SELECT names FROM users");
                    }
                }
            }
4

1 に答える 1

1

クイックバグ修正。

if(isset($_GET['tag'])){
    $tag = $_GET['tag'];
    $check = range('A', 'Z');
    // default query
    $query = $pdo->prepare("SELECT names FROM users");
    foreach($check as $row){
        if($tag == $row){
            $query = $pdo->prepare("SELECT names FROM users WHERE UPPER(names) LIKE '{$row}%'");
            // do not check other
            break; 
        } 
    }
}

しかし、それは間違った方法です。必要ありませんforeach

if(isset($_GET['tag'])){
    $tag = $_GET['tag'];
    if (preg_match('/^[A-Z]/', $tag, $matches)){
            $query = $pdo->prepare("SELECT names FROM users WHERE UPPER(names) LIKE '{$matches[0]}%'");
        } else {
            $query = $pdo->prepare("SELECT names FROM users");
        }
}
于 2013-10-31T23:35:44.460 に答える