Rumah php教程 php手册 PHP中在数据库中保存Checkbox数据(2)

PHP中在数据库中保存Checkbox数据(2)

Jun 21, 2016 am 09:07 AM
query quot

数据|数据库

这代码是非常简单的,你很快地就看完了吧。主要的工作有两个函数完成:"get_checkbox_labels" 和 "make_checkbox_html"。其中 "get_checkbox_labels" 查询表const_skills 并且返回一个对象数组,每一个对象有一个id值和相应的技能名称。我们传送这个数组和其它一些参数给"make_checkbox_html" ,这个函数将返回一个字串,用来生成checkbox的html代码。现在我们把这个字串插入html文件来生成我们需要的包含有各种技能选择的表单。注意我并没有传送变量 $checked 给"make_checkbox_html",这个参数是一个我们要显示的checked的对象数组。如果一个用户学会了一项新的技能,我们可以提供一个“编辑技能“页,显示的checkbox框中保存的用户的技能项应是被预先 checked。

  用这种方法来动态创建一个表单相对于用一个固定的html代码来生成技能checkbox的好处在哪?嗯,或许我们允许求职者选择一个在我们的表const_skills中原先没有的项目,如DHTML,这样,我们可以将它插入表const_skills中,然后,求职者来访问我们的站点,就会发现多了一个DHTML选项。这一切无需调整html文件。

插入 lookup_skills

现在我们已经创建了这个表单,下面我们需要保存这个用户所选的技能。在make_checkbox_html函数中,我们用skill[]调用每一个选择项元素,意味着我们可以以数组元素的形式访问每个选择项。这样我们可以插入把这个选择插入表lookup_skill中。如果用户选中5个选项,我们就在lookup_skill中插入5条记录。记住在表lookup_skills中每一条记录只有两个字段用户id和技能id。在我的这个例子站点中,用户可以注册,然后能创建/编辑他们的简介。你可能要用session来保存userid,当他们登录后。但如何管理userid超过了本文的范围。

下面的代码,我们假定我们可能访问这个userid用这个变量名$uid,下面就是插入记录的函数代码:


/* the function we call to insert.
the $skills argument is the skills array that
is sent to the script when the user hits the submit button
*/
function insert_skills($uid, $skills) {

/* first, we'll delete any entries this user already has
in the table */
purge_lookup("lookup_skills", $uid);

/* now create the sql insert query */
$query = create_checkbox_query($skills, "lookup_skills", $uid);

/* execute the query */
mysql_query($query);
}

/* helper function for insert_skills().
removes all rows in $table with $uid */
function purge_lookup($table, $uid) {
$q = "DELETE FROM $table, WHERE uid = '$uid'";
mysql_query($q);
}

/* helper function for insert_skills().
generates the sctual SQL query */
function create_checkbox_query($arr, $table, $uid) {
$q = "INSERT INTO $table (uid, skill_id) VALUES";

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

/* remove the last comma and return */
return substr($q, 0, -1);
}

?>

  很简单吧。现在你知道如何从表const_skill读记录来动态创建一个表单,也知道如何保存用户选择的技能到表lookup_skills中。下面我们要做什么?让我们看一下搜索吧
搜索

  当一个雇主来找一个网络开发人员时,他来到你的搜索页面,你可以显示同样的一个表单并且允许他选择他想要雇员拥有的技能。你取到了他选中的技能的数组,然后你可以遍历这个数组,用一个SQL语句找出拥有此技能的求职者,你可以显示这个列表或结果,并允许搜索者点一个项目显示它的详细信息。下面的这个函数描述了如何创建这个查询语句:


/* builds a query to search for the skills
checked off in the $skills array */

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";
}

/* remove the final 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 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 两项,只会返回*同时*拥有PHP 和 Javascript两种技能的求职者的username。如果你想要找拥有其中任一个技能的求职者,你可以用 PHP *OR* Javascript ,如果你想显示相同的记录,你可以去掉最后的"GROUP BY..." 子句。


总结

  好了,就是这样。checkboxes是一个优秀的表单元素,正如本文所谈论的。我希望这有助于你用它们来工作,创建一个数据驱动的网站。



Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menyusun semula berbilang lajur dalam Power Query melalui seret dan lepas Cara menyusun semula berbilang lajur dalam Power Query melalui seret dan lepas Mar 14, 2024 am 10:55 AM

Dalam artikel ini, kami akan menunjukkan kepada anda cara menyusun semula berbilang lajur dalam PowerQuery dengan menyeret dan melepaskan. Selalunya, apabila mengimport data daripada pelbagai sumber, lajur mungkin tidak berada dalam susunan yang diingini. Menyusun semula lajur bukan sahaja membolehkan anda menyusunnya dalam susunan logik yang sesuai dengan keperluan analisis atau pelaporan anda, ia juga meningkatkan kebolehbacaan data anda dan mempercepatkan tugas seperti menapis, mengisih dan melakukan pengiraan. Bagaimana untuk menyusun semula berbilang lajur dalam Excel? Terdapat banyak cara untuk menyusun semula lajur dalam Excel. Anda hanya boleh memilih pengepala lajur dan seret ke lokasi yang dikehendaki. Walau bagaimanapun, pendekatan ini boleh menjadi rumit apabila berurusan dengan jadual besar dengan banyak lajur. Untuk menyusun semula lajur dengan lebih cekap, anda boleh menggunakan editor pertanyaan yang dipertingkatkan. Mempertingkatkan pertanyaan

Pemalam pangkalan data React Query: cara mengimport dan mengeksport data Pemalam pangkalan data React Query: cara mengimport dan mengeksport data Sep 26, 2023 pm 05:37 PM

Pemalam pangkalan data ReactQuery: Kaedah untuk melaksanakan import dan eksport data, contoh kod khusus diperlukan Dengan aplikasi ReactQuery yang meluas dalam pembangunan bahagian hadapan, semakin ramai pembangun mula menggunakannya untuk mengurus data. Dalam pembangunan sebenar, kita selalunya perlu mengeksport data ke fail tempatan atau mengimport data daripada fail tempatan ke dalam pangkalan data. Untuk melaksanakan fungsi ini dengan lebih mudah, anda boleh menggunakan pemalam pangkalan data ReactQuery. Pemalam pangkalan data ReactQuery menyediakan satu siri kaedah

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

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

Bagaimana untuk memisahkan data kepada NTFS menggunakan Power Query Bagaimana untuk memisahkan data kepada NTFS menggunakan Power Query Mar 15, 2024 am 11:00 AM

Artikel ini akan memperkenalkan cara menggunakan PowerQuery untuk memisahkan data kepada baris. Apabila mengeksport data daripada sistem atau sumber lain, adalah perkara biasa untuk menghadapi situasi di mana data disimpan dalam sel yang menggabungkan berbilang nilai. Dengan PowerQuery, kami boleh membahagikan data sedemikian ke dalam baris dengan mudah, menjadikan data lebih mudah untuk diproses dan dianalisis. Ini boleh berlaku jika pengguna tidak memahami peraturan Excel dan secara tidak sengaja memasukkan berbilang data ke dalam sel, atau jika data tidak diformat dengan betul semasa menyalin/menampalkannya daripada sumber lain. Memproses data ini memerlukan langkah tambahan untuk mengekstrak dan menyusun maklumat untuk analisis atau pelaporan. Bagaimana untuk memisahkan data dalam PowerQuery? Transformasi PowerQuery boleh berdasarkan pelbagai faktor berbeza seperti perkataan

Pengecaman niat pertanyaan berdasarkan peningkatan pengetahuan dan model besar yang telah dilatih sebelumnya Pengecaman niat pertanyaan berdasarkan peningkatan pengetahuan dan model besar yang telah dilatih sebelumnya May 19, 2023 pm 02:01 PM

1. Latar Belakang Pengenalan Pendigitalan perusahaan merupakan topik hangat dalam beberapa tahun kebelakangan ini Ia merujuk kepada penggunaan teknologi digital generasi baharu seperti kecerdasan buatan, data besar dan pengkomputeran awan untuk mengubah model perniagaan perusahaan, dengan itu menggalakkan pertumbuhan baharu dalam perniagaan perusahaan. . Pendigitalan perusahaan secara amnya merangkumi pendigitalan operasi perniagaan dan pendigitalan pengurusan perusahaan. Perkongsian ini terutamanya memperkenalkan pendigitalan tahap pengurusan perusahaan. Pendigitalan maklumat, secara ringkasnya, bermaksud membaca, menulis, menyimpan dan menghantar maklumat secara digital. Daripada dokumen kertas sebelum ini kepada dokumen elektronik semasa dan dokumen kerjasama dalam talian, pendigitalan maklumat telah menjadi kebiasaan baharu di pejabat hari ini. Alibaba kini menggunakan Dokumen DingTalk dan Dokumen Yuque untuk kerjasama perniagaan, dan bilangan dokumen dalam talian telah mencecah lebih 20 juta. Di samping itu, banyak syarikat akan secara dalaman

Pemalam Pangkalan Data Pertanyaan React: Strategi untuk Sandaran dan Pemulihan Data Pemalam Pangkalan Data Pertanyaan React: Strategi untuk Sandaran dan Pemulihan Data Sep 28, 2023 pm 11:22 PM

Pemalam pangkalan data ReactQuery: Strategi untuk melaksanakan sandaran dan pemulihan data, contoh kod khusus diperlukan Pengenalan: Dalam pembangunan web moden, sandaran dan pemulihan data adalah tugas yang sangat penting. Terutama apabila menggunakan alat pengurusan negeri seperti ReactQuery, kami perlu memastikan keselamatan dan kebolehpercayaan data. Artikel ini akan memperkenalkan pemalam pangkalan data berdasarkan ReactQuery untuk melaksanakan strategi sandaran dan pemulihan data serta memberikan contoh kod khusus. ReactQu

Pemalam Pangkalan Data Pertanyaan React: Petua untuk Pemampatan Data dan Penyahmampatan Pemalam Pangkalan Data Pertanyaan React: Petua untuk Pemampatan Data dan Penyahmampatan Sep 26, 2023 pm 08:03 PM

Pemalam pangkalan data ReactQuery: Petua untuk melaksanakan pemampatan dan penyahmampatan data, contoh kod khusus diperlukan Pengenalan: Dalam pembangunan aplikasi web moden, memproses sejumlah besar pertanyaan data adalah tugas biasa. ReactQuery ialah perpustakaan berkuasa yang menyediakan cara yang mudah dan intuitif untuk mengurus pertanyaan dan keadaan data. Walaupun ReactQuery sendiri sangat baik, apabila berurusan dengan jumlah data yang besar, kami mungkin perlu mempertimbangkan beberapa helah tambahan untuk meningkatkan prestasi dan mengoptimumkan ruang storan. Artikel ini akan memperkenalkan

Pemalam Pangkalan Data Pertanyaan React: Strategi untuk Penggabungan dan Pemisahan Data Pemalam Pangkalan Data Pertanyaan React: Strategi untuk Penggabungan dan Pemisahan Data Sep 26, 2023 am 09:01 AM

Pemalam pangkalan data ReactQuery: Strategi untuk melaksanakan penggabungan dan pemisahan data, contoh kod khusus diperlukan Tajuk: Pemalam pangkalan data ReactQuery: Strategi untuk melaksanakan penggabungan dan pemisahan data Pengenalan: Dalam pembangunan web moden, permintaan dan pengurusan data adalah bahagian yang sangat penting . ReactQuery ialah pustaka pengurusan dan pertanyaan data yang sangat popular dalam ekosistem React Ia menyediakan cara ringkas untuk mengurus permintaan data, caching dan status dalam aplikasi, sambil menyepadukan dengan React

See all articles