ホームページ  >  記事  >  バックエンド開発  >  PHP でチェックボックスのデータをデータベースに保存する (2)_PHP チュートリアル

PHP でチェックボックスのデータをデータベースに保存する (2)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:10:23720ブラウズ


このコードは非常にシンプルなので、すぐに読むことができます。主な作業は、「get_checkbox_labels」と「make_checkbox_html」の 2 つの関数によって実行されます。このうち、「get_checkbox_labels」は const_skills テーブルをクエリし、各オブジェクトには id 値と対応するスキル名が含まれています。この配列とその他のパラメータを「make_checkbox_html」に渡すと、この関数はチェックボックスの HTML コードの生成に使用される文字列を返します。次に、この文字列を HTML ファイルに挿入して、さまざまなスキルの選択を含む必要なフォームを生成します。変数 $checked を「make_checkbox_html」に渡していないことに注意してください。このパラメータは、表示したいチェックされたオブジェクトの配列です。ユーザーが新しいスキルを学習した場合、ユーザーの保存されたスキル項目を事前にチェックする必要があるチェックボックスを表示する「スキルの編集」ページを提供できます。

この方法を使用してフォームを動的に作成することと、固定の HTML コードを使用してスキルチェックボックスを生成することの利点は何ですか?そうですね、おそらく、求職者がテーブル const_skills にない項目 (DHTML など) を選択できるようにすると、それをテーブル const_skills に挿入できるようになります。 DHTML オプションがもう 1 つあります。これはすべて、HTML ファイルを調整することなく実行できます。

lookup_skills を挿入

このフォームを作成したので、このユーザーが選択したスキルを保存する必要があります。 make_checkbox_html 関数では、skill[] を使用して各オプション要素を呼び出します。これは、各オプションに配列要素としてアクセスできることを意味します。このようにして、この選択をテーブル lookup_skill に挿入できます。ユーザーが 5 つのオプションを選択した場合、lookup_skill に 5 つのレコードが挿入されます。 lookup_skills テーブルの各レコードには、ユーザー ID とスキル ID の 2 つのフィールドしかないことに注意してください。私のサイト例では、ユーザーは登録してプロフィールを作成/編集できます。ログイン時にセッションを使用してユーザー ID を保存したい場合があります。ただし、ユーザー ID を管理する方法については、この記事の範囲を超えています。

次のコードでは、変数名 $uid を使用してこのユーザー ID にアクセスできると想定しています。レコードを挿入する関数コードは次のとおりです:


/* 挿入するために呼び出す関数は
$skills です。ユーザーが送信ボタンを押したときに
スクリプトに送信されるスキル配列
*/
function insert_skills($uid, $skills) {

/* まず、このユーザーがすでに持っているエントリをすべて削除します
table */
purge_lookup("lookup_skills", $uid);

/* SQL 挿入クエリを作成します */
$query = create_checkbox_query($skills, "lookup_skills", $uid);

/* クエリを実行します*/
mysql_query ($query);
}

/* insert_skills() のヘルパー関数。
$uid を持つ $table 内のすべての行を削除します */
function purge_lookup($table, $uid) {
$q = " DELETE FROM $table , WHERE uid = '$uid'";
mysql_query($q);
}

/* insert_skills() のヘルパー関数。
実際の SQL クエリを生成します */
function create_checkbox_query($arr, $ table, $uid ) {
$q = "INSERT INTO $table (uid, skill_id) VALUES";

foreach ($arr as $check) {
$q .= " ( $uid , $check ) " . ,";
}

/* 最後のカンマを削除して return */
return substr($q, 0, -1);
}

?>

とても簡単です。これで、const_skill テーブルからレコードを読み取ってフォームを動的に作成する方法と、ユーザーが選択したスキルを lookup_skills テーブルに保存する方法がわかりました。次は何をするの?検索
検索

を見てみましょう。Web 開発者を探している雇用主が検索ページにアクセスしたときに、同じフォームを表示して、従業員に身につけてほしいスキルを選択できるようにすることができます。彼が選択したスキルの配列を取得し、配列を反復処理して SQL ステートメントを使用して、リストまたは結果を表示し、検索者が項目をクリックしてその項目を表示できるようにすることができます。詳細。 。次の関数は、このクエリの作成方法を説明しています。


/* $skills 配列でチェックオフされたスキル
を検索するクエリを構築します */

function skill_search($skills) {
if (!empty( $skills )) {
$query = "SELECT DISTINCT user.username
FROM user, const_skills, lookup_skills
WHERE lookup_skills.uid = user.id
AND lookup_skills.skill_id = const_skills.id ";

$query .= " AND (" ;
foreach ($skills as $check) {
$query .= " const_skills.id = $check OR";

/* 最後の OR を削除 */
$query = substr($query, 0 , - 2);
$query .= ")";

$count = count($skills);
$query .= "GROUP BY user.username HAVING count(user.username) >= $count"; $query .= ";";
return $query;
}
}

?>

PHP と Javascript の検索が実行されると、この関数は次のステートメントを返します:

SELECT user.username FROM user, const_skills, lookup_skills WHERE lookup_skills.uid = user.id AND lookup_skills.skill_id = const_skills.id AND ( const_skills.id = 3 OR const_skills.id = 5 ) GROUP BY user.username HAVING count(user.username) >= 2;

この関数は、選択したプロジェクトの論理積を返します。つまり、PHP と Javascript を選択した場合、PHP と Javascript の「両方」のスキルを持つ候補者のユーザー名のみが返されます。これらのスキルのいずれかを備えた候補者を見つけたい場合は、PHP *OR* Javascript を使用できます。同じレコードを表示したい場合は、最後の "GROUP BY..." 句を削除できます。


まとめ

さて、以上です。この記事で説明したように、チェックボックスは優れたフォーム要素です。この記事が、データドリブンな Web サイトの作成に協力できることを願っています。




http://www.bkjia.com/PHPjc/314272.html

www.bkjia.com本当http://www.bkjia.com/PHPjc/314272.html技術記事このコードは非常にシンプルなので、すぐに読むことができます。主な作業は、「get_checkbox_labels」と「make_checkbox_html」の 2 つの関数によって実行されます。その中で、「get_checkbox_labels」クエリ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。