2017-05-05 4 views
1

アルファベットボタンを押したときにストア名を表示したい。 たとえば、 'A'ボタンを押すと、文字Aから始まる店舗名がリストアップされます。このためにLIKEクエリを使用する必要があります。しかし、とにかくそれをもっと簡単にするのは何ですか?またはphpで簡単に処理できる単一のクエリです。選択された文字ボタンに応じてストア名を一覧表示する

HTML

<button class="btn btn-default">All stores</button> 
<button class="btn btn-default">A</button> 
<button class="btn btn-default">B</button> 
<button class="btn btn-default">C</button> 
<button class="btn btn-default">D</button> 

答えて

0

Iは番号に各店舗の最初の文字をマッピングし、配列のキーとしてその数を格納することになります。次に、ユーザーの選択に基づいてその配列のサブセットを表示するだけです。 > 2

  • C - -

    • A - > 1
    • B> 3
    • ...

    誰かがBを選択した場合次に、あなたは2からあなたのリストを返します。ですから、Mysqlでは次のような感じになるかもしれません。

    ここで、MapStoreValue> = 2です。

    またはあなたがPHPの配列内のすべての値をロードする場合は、たとえば行うことができますが、このような何かを:

    // if your $stores array looks like this 
    $stores = array(
        1 => 'A', 
        2 => 'B', 
        3 => 'C', 
        4 => 'D' 
    ); 
    

    はその後、あなたは、単にその配列の所望のサブセットを返すことができます。

    var_dump(array_slice($stores, 1)); 
    
    // this returns: [2 => B, 3 => C, 4 => D] 
    
  • +0

    そして、私はそうするIfElseを使用している場合は?それは便利だろうか? – tabia

    +1

    私はそれ以外の場合は使用しません。つまり、それぞれの場合にif elseブロックを持つ必要があります。私はあなたが使用できるいくつかのコードで私の答えを更新します – lloiacono

    0

    私はあなたがMySQLを使用したいが、ここでは(テストしていません)その後、他の人のためのソリューションですしていないと述べたことを知っている:

    <?php 
    
    /* Connect to a MySQL database using driver invocation */ 
    $dsn = 'mysql:dbname=testdb;host=127.0.0.1'; 
    $user = 'dbuser'; 
    $password = 'dbpass'; 
    
    // Try to create a connection 
    try { 
        $dbh = new PDO($dsn, $user, $password); 
    } catch (PDOException $e) { 
        echo 'Connection failed: ' . $e->getMessage(); 
    } 
    
    // Query 
    $sql = 'SELECT * FROM table '; 
    
    // Get the letter selected 
    $letter = isset($_POST['letter']) ? $_POST['letter'] : ''; 
    
    // If letter is not empty 
    if(!empty($letter)){ 
        // Query continued 
        $sql .= 'WHERE store_name LIKE :letter'; 
    } 
    
    // The prepared statement 
    $sth = $dbh->prepare($sql); 
    
    // Binding the value of the $letter to the query 
    if(!empty($letter)){ 
        $sth->bindValue('letter', "$leẗter%"); 
    } 
    
    // Executing the query 
    $sth->execute(); 
    
    // Fetching the results 
    $stores = $sth->fetchAll(PDO::FETCT_OBJ); 
    
    関連する問題