0

eye_colour 、 hair_colour 、 size などのユーザー プロファイル ページを含む Web サイトを開発しました。各項目には、ドロップダウン リストから入力された値の範囲が設定されています。ユーザーがこれらの設定範囲を検索して、理想的な一致を見つけられるようにしたいと考えています。この目的のために、検索フォームをセットアップし、タプル ユーザーを使用して配列検索にフィードする多数の SELECT ステートメントを用意しました。すなわち

<?php
$var1 = SELECT ‘user’ FROM ‘profile’ WHERE ‘hair_colour’ = $hair; 
$var2 = SELECT ‘user’ FROM ‘profile’ WHERE ‘eye_colour’ = $eye;
$var3………4………..5………..n etcc
?>

すべての配列を取り込んで結合し、ユーザーの出現頻度で並べ替え/重み付けして、すべてのアイテムを表示できる機能があると思います。そのようなphp関数が存在するかどうか、そしてその名前が何であるかを知っている人はいますか? そのような関数が存在しない場合は、SQL を試すこともできますが、いくつかの間違いを犯すことは間違いありません!! 助けてくれてありがとう!

4

1 に答える 1

1

最初に単一のクエリを使用して、必要な行を取得します。

$sql = "SELECT * FROM profile WHERE (hair = '$hair_esc') OR (eye = '$eye_esc')";
$result = mysql_query($sql);

次に、結果をループして、各行にスコアを割り当てます。

$rows = array();
while ($row = mysql_fetch_array($result)){

    $row['score'] = 0;
    if ($row['hair'] == $hair) $row['score']++;
    if ($row['eye']  == $eye ) $row['score']++;

    $rows[] = $row;
}

そして最後に、リストをスコアで並べ替えます。

usort($rows, 'sort_by_score');

function sort_by_score($a, $b){
    return $a['score'] - $b['score'];
}
于 2012-04-09T04:44:36.097 に答える