【问题标题】:How to chose selected values from an array of inputs如何从输入数组中选择选定的值
【发布时间】:2015-10-17 02:21:06
【问题描述】:

我有 7 个输入字段。但是,用户最多只能选择 3 个主题。我怎样才能将这些输入更新到我的表中?

public function searchgrouppost(){

         $subject1 = Input::get('subject1');
         $subject2 = Input::get('subject2');
         $subject3 = Input::get('subject3');
         $subject4 = Input::get('subject4');
         $subject5 = Input::get('subject5');
         $subject6 = Input::get('subject6');
         $subject7 = Input::get('subject7');

我的目标是最终得到这样的结果:

DB::table('mytable')->where('id', 6)
                    ->update(['subject' => $firstchosensubject,
                           'subjecttwo' => $secondchosensubject, 
                           'subjectthree' =>$thirdchosensubject]);

到目前为止我有:

$subjects = [];
$inputs = Input::all();
array_walk($inputs, function ($v, $k) use (&$subjects) {
if(starts_with($k, 'subject')) {
    $subjects[$k] = $v;
}
});

$index = count($subjects);

如上所示,我在这个 $subjects 变量中有所有输入。如何为表格输入提取这些值?

【问题讨论】:

  • 检查所有非空的

标签: php arrays laravel eloquent


【解决方案1】:

查看:

<input name="subject[]" id="list" type="checkbox"  value="1">

控制器:

$topic = Input::get('subject');

foreach ($topic as $key =>$value ) {

DB::table('mytable')->where('id', $id)
                ->update(['subject' => $topic[0],
                       'subjecttwo' => $topic[1]]);
}

【讨论】:

    【解决方案2】:

    你可以随时检查 val 是否为空

    $subjects = [];
    $inputs = Input::all();
    array_walk($inputs, function ($v, $k) use (&$subjects) {
    if(!empty($v) && starts_with($k, 'subject')) {
        $subjects[$k] = $v;
    }
    });
    
    $index = count($subjects);
    

    现在你只有 3 个 val 存储在数组中

    DB::table('mytable')->where('id', 6)
                        ->update(['subject' => $subjects[0],
                               'subjecttwo' => $subjects[1], 
                               'subjectthree' =>$subjects[2]]);
    

    【讨论】:

    • 验证 3 不是我的问题。它知道如何将这三个输入转换为 $firstchosensubject、$secondchosensubject 和 $thirdchosensubject
    • 通过这个验证 if(!empty($v) 你只过滤被选中的主题,你已经问过如何从 7 中提取 3,所以你通过有效输入过滤
    • 你能给我一个例子来说明我的更新表代码是什么样的吗?换句话说,我如何将这些变量输入到我的表中?
    • 我收到一条错误消息说未定义的偏移量是:0
    • echo print_r($subjects, true); exit() 看看你有一个数组中的值
    【解决方案3】:

    我建议在前端验证输入,而不是尝试使用 php。这里有一些 JQuery 可以让你上路

    var numSubjects = 0;
    $(".inputs").each(function(i, obj) {
        if($(this).val() != ""){
            numSubjects++;
        }
    });
    
    if(numSubjects > 3){
        // let the user know
    }else{
        // submit the form
    }
    

    【讨论】:

    • 以及 - 从不单独信任客户端验证
    • 如果您确定表单只提交了三个,那么您可以简单地检查数组的长度以确保您没有太多?我明白为什么您可能希望在某些情况下保持灵活性
    • 你的客户端代码告诉我我只能提交 3 不会阻止我提交 4 或 37。客户端验证总是可以被颠覆
    • @Dagon 验证 3 不是我的问题。它知道如何将这三个输入转换为$firstchosensubject$secondchosensubject$thirdchosensubject
    猜你喜欢
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 2019-09-23
    • 2020-01-05
    • 2018-08-19
    • 2020-06-01
    • 2012-12-14
    • 1970-01-01
    相关资源
    最近更新 更多