V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
b7898585
V2EX  ›  程序员

求教一个 php 问题

  •  
  •   b7898585 · 2014-12-28 20:14:19 +08:00 · 2648 次点击
    这是一个创建于 3400 天前的主题,其中的信息可能已经有所发展或是发生改变。
    要做一个报名页面,要求如下:

    序号 姓名 性别 年龄
    1 aaa 男 18
    2 bbb 女 19
    3 ccc 女 22
    .................

    行数不固定,可能1组,也可能很多组,怎样做到同时提交?
    程序是php+mysql
    8 条回复    2014-12-29 00:07:06 +08:00
    raincious
        1
    raincious  
       2014-12-28 20:18:25 +08:00
    你可以做一个固定同时提交多组数据的页面。

    当提交一条结果时,执行INSERT以及一个VALUES,当提交多个时,添加多个VALUES就行了。
    mchl
        2
    mchl  
       2014-12-28 21:28:20 +08:00
    试试Transaction和foreach
    jianghu52
        3
    jianghu52  
       2014-12-28 22:00:04 +08:00
    sql的事务,多次保存,一次commit。
    Tr0y
        4
    Tr0y  
       2014-12-28 22:03:17 +08:00
    表单用多维
    例如<input type="text" name="name[]" />

    接收到数据用foreach迭代。生成insert sql,然后执行就行了。
    doushiyinweini
        5
    doushiyinweini  
       2014-12-28 22:11:16 +08:00
    楼上正解
    lincanbin
        6
    lincanbin  
       2014-12-28 22:18:03 +08:00
    这个主要是JavaScript,难点在于创建对应数量的DOM节点。
    你只要在客户端生成指定数量的
    <input type="text" name="Tag[]" value="" />
    https://github.com/lincanbin/Carbon-Forum/blob/master/static/js/new.function.js#L172
    在服务端直接用
    $TagsArray = $_POST['Tag'];
    就直接获得这多个同名文本框的数据数组了
    https://github.com/lincanbin/Carbon-Forum/blob/master/new.php#L18
    Kilerd
        7
    Kilerd  
       2014-12-28 23:50:50 +08:00 via Android
    如果你前端录入信息都没问题,还会卡在录入mysql?
    很好奇你前端是怎么做的。
    mhycy
        8
    mhycy  
       2014-12-29 00:07:06 +08:00
    某些前端防火墙会拦截数组请求
    建议最佳做法也是最合适安全的做法是利用JS生成表单,并且遍历产生JSON数据
    然后把数据base64一次编码后传入后端,后端程序再解包入库
    这是最稳妥的做法,避免了请求数据异常带来的数据不一致问题,也避免了某些奇葩防火墙的问题~

    后端入库json_decode 以后用 foreach直接遍历insert就好了,为了维护方便包装一下写入代码做个类或者做个函数都行~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2613 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:08 · PVG 13:08 · LAX 22:08 · JFK 01:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.