PHP でチェックボックス データをデータベースに保存する (1)_PHP チュートリアル
はじめに
チェックボックスは、ユーザーに複数の選択を許可する場合に、すべての項目を選択することも、何も選択しないこともできる非常に便利なページ フォーム項目です。ただし、これは優れたフォーム要素ですが、私たちの作業では、選択内容を適切に保存する方法について常に混乱が生じます。この記事では、適切なデータベース設計原則に従って、チェックボックスの選択をデータベースに正しく保存する方法について説明します。
要件
この記事では、選択内容をユーザー データベースに正しく保存する方法について説明します。ここには便利な PHP コードが含まれていますが、データベース設計の観点から表現するので、任意のデータベースおよびサーバー側スクリプト言語を使用して簡単に実装できます。私は、あなた自身のサイトに適用できるハウツーを提供したいだけです。ここでソースコードを実行したい場合は、php、mysql、および Web サーバーをインストールする必要があります。
例 1: 採用サイト
雇用主がこのサイトにアクセスして、求職者のスキルに基づいて適切な従業員を見つけることができるように、求職中のソフトウェア開発者がスキルを記入できる採用 Web サイトの作成を依頼されたとします。また、開発者は複数のスキル セットを持っていることもわかっているため、そのようにサイトを設計することにします。
すべての求職者がこのサイトにアクセスし、ユーザーとして登録し、自分のスキルを入力できるようになります。次のようなページを作成すると便利です:
__ PHP __ MySQL __ Zope
__ Perl。 __ Javascript __ JSP
[送信]
すべての求職者は、自分が所有するスキルを選択できます。明らかに、選択肢は人によって異なります。 1 つは PHP と MySQL であり、もう 1 つは単なる JSP である可能性があります。これらの選択内容をどのように保存しますか?自然なアイデアは、オプションごとにフィールドを作成して、最初は正常に機能するようにすることです。しかし、拡張または調整するときに問題が発生し、テーブル構造を変更しなければならない場合があります。
良い方法は次のようになります:
ユーザー名、パスワード、その他必要なコンテンツなどのユーザーの登録情報を含むユーザー テーブルが必要です。この記事で後述するソース コードを直接使用する場合は、次のように単純なテーブルを作成する必要があります:
id username
1 User1
2 User2
3 User3
まず、次の SQL を使用してテーブル "const_skills" を作成します。ステートメント:
SQL> CREATE TABLE const_skills (
id int not null Primary key,
value varchar(20) ); 次にスキルを追加します:
SQL> INSERT INTO const_skills(id, value) VALUES (1, " PHP") ;
SQL> INSERT INTO const_skills(id, value) VALUES (2, "MySQL");
SQL> INSERT INTO const_skills(id, value) VALUES (3, "Zope");
SQL> INSERT INTO const_skills (id, 値) VALUES (4, "Perl");
SQL> INSERT INTO const_skills(id, value) VALUES (5, "Javascript");
SQL> INSERT INTO const_skills(id, value); JSP") ;
const_skills は次のようになります:
id value
1 PHP
2 MySQL
3 Zope
4 Perl
5 Javascript
6 JSP
このテーブルでは、ユーザーが対応するスキルを選択できるようにするだけです。テーブル lookup_skills は次の SQL を使用します:
SQL> CREATE TABLE lookup_skills (
id int not null auto_increment Primary key,
uid int,
skill_id int );
このテーブル lookup_skills の目的は次のとおりです。ユーザーテーブルから開発スキルテーブルへの情報とそれらの間のマッピング関係。言い換えれば、開発者と彼らが持つスキルを保存できるため、候補者が選択を完了して送信をクリックすると、チェックボックスで選択された値をフォームに入力することになります。選択したスキルごとに、このテーブルにレコードを追加し、ユーザー ID と選択したアイテムの ID を記録します。 (これは誰もが知っていると思います。これは私が翻訳したものです、ふふ…)
レコードを挿入するコードを確認する前に、まずこのページをデザインしましょう。コンテンツ用のフォームが必要です。データベースにクエリを実行して、チェックボックス ラベルは、このチェックボックス フォーム項目を const_skills テーブルから作成します。
代码如下:
< ?php
/* ここにデータベースに接続するコードを挿入します */
/* チェックボックスのラベルを取得します */
$skills = get_checkbox_labels("const_skills");
/* フォーマットされた
チェックボックスのセットの HTML コードを作成します */
$html_skills = make_checkbox_html($skills, 3, 400, "skills[]");
? >
< html >
<本体>
< br>
< form name="skills" method="POST" action="insertskills.php" >
Web 開発スキルをチェックしてください:
< ?エコー "$html_skills"; ? >
< br>
< input type="submit" value="submit" >
< /フォーム>
< /ボディ>
< /html >
< ?php
function get_checkbox_labels($table_name) {
/* 配列を作成します */
$arr = array();
/* クエリを構築します */
$query = "SELECT * FROM $table_name";
/* クエリを実行します */
$qid = mysql_query($query);
/* 結果セットの各行は
オブジェクトとしてパッケージ化され、配列に入れられます */
while($row= mysql_fetch_object($qid)) {
array_push($arr, $row);
}
$arr を返す;
}
/* チェックボックスの選択肢を適切にフォーマットした表を印刷します。
$arr は選択肢を含むオブジェクトの配列です
$num はテーブルに表示する幅の要素の数です
$width はテーブルタグの幅パラメータの値です
$name はチェックボックスの名前ですarray
$checked は、チェックする必要がある要素名の配列です
*/
function make_checkbox_html($arr, $num, $width, $name, $checked) {
/* html を保持する文字列を作成します * /
$str = "";
/* 作ってください */
$str .= "< table width="$width" border="0" >n";
$str .= "< tr >n";
/* テーブルの最後に終了 tr タグを追加するかどうかを決定します */
if (count($arr) % $num != 0) {
$closeTR = true;
}
$i = 1;
if (isset($checked)) {
/*
チェック済みとして表示したいチェックボックスの配列を渡した場合 */
foreach ($arr as $ele) {
$str .= "< td >foreach ($checked as $entry) {
if ($entry == $ele- >value) {
$str .= "checked";
続けてください。
}
}
$str .= " >";
$str .= "$ele- >value";
if ($i % $num == 0) {
$str .= "< /tr >n< tr >";
} else {
$str .= "< /td >n";
}
$i++;
}
} else {
/* チェックボックスを印刷したいだけです。チェックはありません */
foreach ($arr as $ele) {
$str .= "< td >< input type="checkbox" name="$name" value="$ele- >id " >";
$str .= "$ele- >value";
if ($i % $num == 0) {
$str .= "< /tr >n< tr >";
} else {
$str .= "< /td >n";
}
$i++;
}
}
/* 必要に応じて、終了 tr タグを付加します */
if ($closeTR == true) {
$str .= "< /tr >< /table >n";
} else {
$str .= "< /table >n";
}
$str; を返します。
}
? >

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます
