设为首页 收藏本站
查看: 712|回复: 0

[经验分享] 在PHP中使用复选框和一个数据库

[复制链接]

尚未签到

发表于 2018-12-11 10:23:07 | 显示全部楼层 |阅读模式
介绍
  在php帮助论坛,如何处理问题的复选框出现很频繁。 通常,人们希望能够选择哪些行数据库的更新/删除/抛出窗外。
  这个概念是非常简单的。 它涉及到命名你的复选框作为一个数组,使用mysql条款。 本教程的目的是给一个简单的例子,希望,下次有人问,我可以指出他们的教程,而不是重新解释。
  的节目。
数据库
  看到我们要更新数据库,我们需要一张桌子和一些数据。 这是一个表之前我做了:
创建表“tutorial_users”(“id”INT(10)非空AUTO_INCREMENT,“用户名”VARCHAR(50)非空,“管理”非常小的整数(1)非空的默认' 0 ',
主键(“id”))引擎=MYISAM  和一些数据。 不用猜也知道我只是在电视上看:
插入“tutorial_users”(“id”,“用户名”,“管理”)
值(
零,“Stewie”,' 0 '),(
零,“彼得”,' 0 '),(
零,“布莱恩”,' 0 '),(
零,梅格的,' 0 '),(
零,“路易斯”,' 0 '),(
零,“克里斯”,' 0 '),(
零,“抹油了失聪的人”,' 0 '),(
零,“困境”,' 0 ');  这是一个简单的设置。 用户的表和字段称为管理,这是该领域我们将更新。
  如果你的(或加; 我们都平等机会)谁喜欢一个快速修复的完整代码。 否则,我们会将它分解。
的代码
< ?php
包括(“connect.php”);
美元更新=假;如果(数($ _POST)>0){
美元的管理=$ _POST[“管理”];
到(“intval中”,美元的管理);
美元的管理=内爆(”、“,美元的管理);
mysql_query(“更新tutorial_users设置管理= 0”)或trigger_error(mysql_error(),E_USER_ERROR);
mysql_query(“更新tutorial_users设置管理= 1,id(admin)美元”)或trigger_error(mysql_error(),E_USER_ERROR);
美元更新=真正的;}? >< ! DOCTYPE html公共”——/ / W3C / / DTD的XHTML 1.0 Strict / / EN &quot; &quot; http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd &quot; >phpfreaks复选框教程< /标题>< /头>
”方法= &quot; post &quot; >
< ?php
如果(美元更新= = =真正的){
回声“< div >权限更新! < / div > ';}? >用户名< /th>管理员权限< /th>< /tr>< ?php
美元的sql=“选择id、用户名admin tutorial_users命令id ASC”;
美元的结果=mysql_query(美元的sql)或trigger_error(mysql_error(),E_USER_ERROR);而(列表($ id,美元的用户名,美元的管理)=mysql_fetch_row(美元的结果)){
美元的检查=(美元的管理= =1)吗?”=“检查”检查:”;
回声“< tr > < td >”。美元的用户名。' < / td > < td > < input type = &quot;复选框&quot; name = value =“管理[]”。$ id。“””。美元的检查。' / > < / td > < / tr > '。“\ n”;}? >   < /道明> < /tr>< /表>< /形式>< /身体>< /html>插曲
  谢谢你的坚持。 在我们仔细看看这些代码之前,我只是想说一点关于复选框和它们是如何工作的。
  你可能意识到很多其他的表单元素,如文本字段,如果你离开他们空白的他们仍然会出现在$ _POST / $ _GET数组——只是一个空白值。
  另一方面,复选框更像按钮。 如果你不检查他们,他们不会出现在数组中。 假设你选择他们,他们会把你给他们的价值或在默认情况下。 牢记这一点,以后会很重要。
把它分解
  我要开始分解通过代码从打开表单标签,看到之前你必须填写,你可以处理它。
”方法= &quot; post &quot; >
< ?php
如果(美元更新= = =真正的){
回声“< div >权限更新! < / div > ';}  我们有一个标准形式使用post方法,并操作相同的页面。 我们也会显示一条消息如果数据库更新,因为我们这样的好。
用户名< /th>管理员权限< /th>< /tr>  我们将设置一个表中列出的用户名和特权。 如果你不喜欢表,真不走运。
美元的sql=“选择id、用户名admin tutorial_users命令id ASC”;
美元的结果=mysql_query(美元的sql)或trigger_error(mysql_error(),E_USER_ERROR);  我们从数据库中选择我们需要的字段(不能忘记的id,因为我们将使用此识别每一行)和执行查询错误检查。
而(列表($ id,美元的用户名,美元的管理)=mysql_fetch_row(美元的结果)){  如果你不熟悉这个列表()构造,它允许我们从数字索引数组分配大量的变量。 我厌倦了使用美元行,因此改变。 重要的是要使用mysql_fetch_row(),这样你得到一个数字索引数组(而不是一个关联),你创建的变量与您所选择的顺序相同查询。 看到手册页多一点。
美元的检查=(美元的管理= =1)吗?”=“检查”检查:”;
回声“< tr > < td >”。美元的用户名。' < / td > < td > < input type = &quot;复选框&quot; name = value =“管理[]”。$ id。“””。美元的检查。' / > < / td > < / tr > '。“\ n”;  内部循环,我们首先计算出如果复选框应该自责。 也就是说,如果用户目前拥有管理员权限。 三元操作符的使用使这短暂而甜蜜的。 我们为每个用户然后回声一行。
  请注意,我们的名字复选框管理[]。 这意味着$ _POST['管理']是一个数组。 数组中所有标记框的事实。 还请注意,我们将值设置为用户的id。
   < /道明> < /tr>< /表>< /形式>< /身体>< /html>  最后,我们做一个提交按钮,完成我们的html。 我不知道你,但是我发现表单没有提交按钮有点不满意。
  接下来,我们将看看处理。
处理表单
包括(“connect.php”);
美元更新=假;  首先,我们有一个文件的连接我们数据库。 我会给你文件,但是我个人更愿意保持对自己的用户名和密码。 我们还创建一个变量,说我们还没有更新数据库…。
如果(数($ _POST)>0){
美元的管理=$ _POST[“管理”];
到(“intval中”,美元的管理);  我们的if语句将确保这段代码只运行如果表单被提交。 我们创建一个局部变量$ _POST数组。 然后我们做一些验证。 我们不希望任何讨厌的用户修改这些值的形式做一些SQL注入,我们确保这个数组中的每个值都是一个整数到函数。 再一次看到手册页如果你不太确定这个函数是如何工作的。
  “如果我没有整数作为我的价值观?” 好问题。 您可能想使用mysql_real_escape_string(),如下所示:
到(“mysql_real_escape_string”,美元的管理);  或者你可以编写自己的函数来确保值是你期望的东西。
美元的管理=内爆(”、“,美元的管理);  接下来,我们使用内爆()函数将数组变成字符串。 我们用逗号来分隔每一个值。 这将允许我们使用条款。 如果你的价值观不是整数,你必须做些不同的事情。 我将在一分钟内。
mysql_query(“更新用户组管理= 0”)或trigger_error(mysql_error(),E_USER_ERROR);
mysql_query(“更新用户组管理(管理美元)= 1,id”)或trigger_error(mysql_error(),E_USER_ERROR);
美元更新=真正的;  之前我们更新新用户有管理员权限,我们第一次更新数据库,所以没有人。 为什么? 好吧,我们用逗号分隔的列表只包含那些我们想要管理的权利。 所以我们最好确保没有人呢。 我们的第二个查询使用的条款,它允许我们提供一个逗号分隔的值列表,id。
  注意:更新每一行的替代品0是使用条款。
使用字符串
  如果你的值是字符串,你需要更小心你的内爆和查询。 别忘了,所有在您的SQL字符串必须在报价。 这是一个非常简单的调整,但是它会给你一个错误如果你忘记。 让你的内爆看起来像这样:
美元的管理=内爆(“”、“”,美元的管理);  和你的查询如下:
mysql_query(“更新用户组管理= 1,id(“管理美元”)”)或trigger_error(mysql_error(),E_USER_ERROR);  注意额外的引用,我们我们的价值观解体后,他们可能看起来有点像这个:
  1”、“2”、“3”、“4
  所以我们需要将引用添加到正面和背面。
  那就是了。 现在我们有时间一个简短的总结




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-650009-1-1.html 上篇帖子: php 计算下个月 下篇帖子: PHP定义列表顺序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表