Php 如何从输入数组中选择选定值
我有7个输入字段。但是,用户最多只能选择3个主题。我如何才能将这些输入更新到我的表中Php 如何从输入数组中选择选定值,php,arrays,laravel,eloquent,Php,Arrays,Laravel,Eloquent,我有7个输入字段。但是,用户最多只能选择3个主题。我如何才能将这些输入更新到我的表中 public function searchgrouppost(){ $subject1 = Input::get('subject1'); $subject2 = Input::get('subject2'); $subject3 = Input::get('subject3'); $subject4 = Input::get('sub
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。下面是一些JQuery,它可以帮助您完成任务
var numSubjects = 0;
$(".inputs").each(function(i, obj) {
if($(this).val() != ""){
numSubjects++;
}
});
if(numSubjects > 3){
// let the user know
}else{
// submit the form
}
您可以随时检查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个不会阻止我提交4或37个。客户端验证总是可以进行的subverted@Dagon验证3不是我的问题。它知道如何将这三个输入转换为
$firstchosensubject
,$secondchosensubject
和$thirdchosensubject
。验证3不是我的问题。如果(!empty($v),它知道如何通过此验证将这三个输入转换为$firstchosensubject、$secondchosensubject和$ThirdChosensubject您只筛选拾取的主题,您询问了如何从7中提取3,因此您通过有效输入进行筛选扫描您给我一个更新表代码的示例?换句话说,我将如何将这些变量输入到我的表中?我收到一条错误消息,说未定义的偏移量是:0echo print_r($subjects,true);exit()若要查看数组中的值,请执行以下操作:
<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]]);
}