0

これは私がこれまでに持っているものであり、この時点でどこに行くべきかわかりません:

  // print A-Z Filter based on names of companies
  $qry = db_select('cloud_computing_capability_data', 'cd');
  $qry -> fields('cd', array(
    'company',
  ))
  -> orderBy('company', 'ASC');

  $names = array('company');
  $output = preg_grep('/^[a-z]/i', $names);
  print_r( $output);

2 回目の試行

//    $letter = $_GET['company']
//  $regex = '/^'.$letter.'/i';
//  if ($letter == '#') $letter = '[0-9]';
//  $result = preg_grep($regex, $qry);

cloud_computing_capability_dataというテーブルがあり、列は company と呼ばれます

私がしなければならないことは、AZ リストを作成する必要があるということです。

# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

文字をクリックすると、A をクリックすると A で始まる単語のみが表示され、# 記号をクリックすると数字で始まる単語のみが表示されます。

これを実現するために正規表現を使用することを考えていましたが、27 の異なるページを作成したくありません。それで、URLの最後にある文字を呼び出す方法はありますか? これを行う何かを作成するような

http://mywebsite.com/site/list?letter=A
4

3 に答える 3

1

まず最初にアイデアを整理する必要があります。html コードには、それぞれが通常の形式で手紙を呼び出すリンクがあります。

PHPスクリプトの最初の部分では、リンクを介して送信する値を変数に割り当てる必要があります

 <?
 $a=$_GET["letter"];
 ?>

スクリプトの 2 番目の部分では、データベースに接続し、ループを使用して各行を配列として読み取る必要があります。

 $result=array();

インデックス i のループ内

 if ($str[0]==$a{
     $result[$i]=$query_result;
 }

が $a に等しい場合、それを新しい配列に保存します

スクリプトの 3 番目の部分は、最後の配列を出力するためのループです。

 foreach ($result as $value) {
       echo $value;}
于 2013-05-29T14:06:48.497 に答える
0

次のようなコードを使用します。

$letter = $_GET['letter'];

$result = $db->prepare("
    SELECT * 
    FROM tableName 
    WHERE fieldName LIKE :letterToSearch 
    ORDER BY fieldName ASC
");

$result->bindValue(':letterToSearch', $letter . '%');
$result->execute();

fieldName基本的な PDO クエリを使用して、文字 A または B、またはあなたが渡すもので始まるフィールド (別のものに変更) で結果を見つけました。$letter

于 2013-05-29T13:56:56.650 に答える
0

これに正規表現を使用する必要はありません。すべての文字を出力するには、まず次のようにします。

foreach(range('A','Z') as $letter)
{
    echo '<a href="directory.php?letter=' . $letter . '">' . $letter . '</a>';
}

次に、directory.php ページで、 を使用して文字を取得する必要があります$_GET

$letter = isset($_GET['letter']) ? mysql_real_escape_string($_GET['letter']) : false;

これで、この文字を取得できました。文字で始まる結果を選択するだけで済みます。そのためには、WHERE ステートメントを使用できます (使用している DB クラスはわかりません)。

WHERE `company` LIKE '{$letter}%'
于 2013-05-29T13:58:19.290 に答える