ホームページ php教程 php手册 PHPでチェックボックスのデータをデータベースに保存する(2)

PHPでチェックボックスのデータをデータベースに保存する(2)

Jun 21, 2016 am 09:07 AM
query quot

データ|データベース

このコードは非常にシンプルなので、すぐに読むことができます。主な作業は、「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"; $クエリ .= ";"
$クエリを返す
}

;PHP と Javascript を検索する場合、この関数は次のステートメントを返します:

SELECT DISTINCT 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 の 2 つの項目を選択した場合のみです。 PHP と Javascript の「両方」のスキルを持つ求職者のユーザー名が返されます。これらのスキルのいずれかを備えた候補者を見つけたい場合は、PHP *OR* Javascript を使用できます。同じレコードを表示したい場合は、最後の "GROUP BY..." 句を削除できます。


まとめ

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



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Power Query で複数の列をドラッグ アンド ドロップで並べ替える方法 Power Query で複数の列をドラッグ アンド ドロップで並べ替える方法 Mar 14, 2024 am 10:55 AM

この記事では、PowerQuery で複数の列をドラッグ アンド ドロップで並べ替える方法を説明します。さまざまなソースからデータをインポートする場合、列が希望の順序にならないことがよくあります。列の順序を変更すると、分析やレポートのニーズに合った論理的な順序で列を配置できるだけでなく、データの読みやすさが向上し、フィルタリング、並べ替え、計算の実行などのタスクが高速化されます。 Excelで複数の列を並べ替えるにはどうすればよいですか? Excel で列を再配置する方法はたくさんあります。列ヘッダーを選択し、目的の場所にドラッグするだけです。ただし、多くの列を含む大きなテーブルを扱う場合、このアプローチは面倒になる可能性があります。列をより効率的に再配置するには、拡張されたクエリ エディターを使用できます。クエリの強化

React Query データベース プラグイン: データをインポートおよびエクスポートする方法 React Query データベース プラグイン: データをインポートおよびエクスポートする方法 Sep 26, 2023 pm 05:37 PM

ReactQuery データベース プラグイン: データのインポートとエクスポートを実装するためのメソッド、特定のコード サンプルが必要 フロントエンド開発で ReactQuery が広く適用されるようになり、ますます多くの開発者がデータ管理に ReactQuery を使用し始めています。実際の開発では、多くの場合、データをローカル ファイルにエクスポートしたり、ローカル ファイルからデータベースにデータをインポートしたりする必要があります。これらの機能をより便利に実装するには、ReactQuery データベース プラグインを使用できます。 ReactQuery データベース プラグインは一連のメソッドを提供します

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Power Query を使用してデータを NTFS に分割する方法 Power Query を使用してデータを NTFS に分割する方法 Mar 15, 2024 am 11:00 AM

この記事では、PowerQuery を使用してデータを行に分割する方法を紹介します。他のシステムまたはソースからデータをエクスポートする場合、複数の値を組み合わせたセルにデータが格納される状況がよく発生します。 PowerQuery を使用すると、そのようなデータを行に簡単に分割できるため、データの処理と分析が容易になります。これは、ユーザーが Excel のルールを理解しておらず、誤って複数のデータをセルに入力した場合、または他のソースからデータをコピー/ペーストするときにデータの書式が正しく設定されていない場合に発生する可能性があります。このデータを処理するには、分析またはレポート用の情報を抽出して整理するための追加の手順が必要です。 PowerQuery でデータを分割するにはどうすればよいですか? PowerQuery 変換は、単語などのさまざまな要素に基づいて行うことができます。

知識強化と事前トレーニングされた大規模モデルに基づくクエリ意図認識 知識強化と事前トレーニングされた大規模モデルに基づくクエリ意図認識 May 19, 2023 pm 02:01 PM

1. 背景 はじめに 近年、エンタープライズデジタル化が注目されており、人工知能、ビッグデータ、クラウドコンピューティングなどの新世代デジタル技術を活用して企業のビジネスモデルを変革し、企業ビジネスの新たな成長を促進することを指します。 。企業のデジタル化には、通常、業務運営のデジタル化と企業管理のデジタル化が含まれます。この共有化では主に企業管理レベルのデジタル化を導入します。情報のデジタル化とは、簡単に言えば、デジタル的な方法で情報を読み取り、書き込み、保存し、送信することを意味します。以前の紙の文書から現在の電子文書やオンラインで共同作業を行う文書に至るまで、情報のデジタル化は今日のオフィスの新たな常態となっています。現在、アリババはビジネス コラボレーションに DingTalk ドキュメントと Yuque ドキュメントを使用しており、オンライン ドキュメントの数は 2,000 万件以上に達しています。さらに、多くの企業は社内で

React Query データベース プラグイン: データのバックアップと復元の戦略 React Query データベース プラグイン: データのバックアップと復元の戦略 Sep 28, 2023 pm 11:22 PM

ReactQuery データベース プラグイン: データのバックアップと復元を実装するための戦略、特定のコード サンプルが必要です はじめに: 最新の Web 開発において、データのバックアップと復元は非常に重要なタスクです。特に ReactQuery のような状態管理ツールを使用する場合は、データのセキュリティと信頼性を確保する必要があります。この記事では、データのバックアップと復元戦略を実装するための ReactQuery に基づくデータベース プラグインを紹介し、具体的なコード例を示します。 ReactQu

React Query データベース プラグイン: データの圧縮と解凍に関するヒント React Query データベース プラグイン: データの圧縮と解凍に関するヒント Sep 26, 2023 pm 08:03 PM

ReactQuery データベース プラグイン: データの圧縮と解凍を実装するためのヒント、必要な特定のコード サンプル はじめに: 最新の Web アプリケーション開発では、大量のデータ クエリを処理するのが一般的なタスクです。 ReactQuery は、データのクエリと状態を管理するためのシンプルかつ直感的な方法を提供する強力なライブラリです。 ReactQuery 自体はすでに非常に優れていますが、大量のデータを扱う場合は、パフォーマンスを向上させ、ストレージ領域を最適化するために、いくつかの追加のトリックを考慮する必要がある場合があります。この記事で紹介するのは

React Query データベース プラグイン: データの結合と分割の戦略 React Query データベース プラグイン: データの結合と分割の戦略 Sep 26, 2023 am 09:01 AM

ReactQuery データベース プラグイン: データのマージと分割を実装する戦略。特定のコード サンプルが必要です。 タイトル: ReactQuery データベース プラグイン: データのマージと分割を実装する戦略 はじめに: 最新の Web 開発では、データのリクエストと管理は非常に重要な部分です。 。 ReactQuery は、React エコシステムで非常に人気のあるデータ クエリおよび管理ライブラリであり、React と統合しながら、アプリケーション内のデータ リクエスト、キャッシュ、ステータスを管理するための簡潔な方法を提供します。

See all articles