如何在DB

时间:2017-01-31 13:50:06

标签: php laravel

我认为这是:

enter image description here

我的数据库中只有一个字段,即driverslicensetype

如何将其保存到数据库中,以便用户选择的任何类型都可以保存所选择的类型:

        /* ABCD
         *
         * A: 0 No 1 AM 2 A1 3 A2 4 A;
         * B: 0 No 1 B1 2 B 3 BE
         * C: 0 No 1 C1 2 C1E 3 C 4 CE
         * D: 0 No 1 D1 2 D1E 3 D 4 DE
         */

因此,如果用户选择A和B,则只保存的数字应为3300

B和C为3230

A B C D将是3233

B C1将是0210

依此类推,我希望你能理解。

所以我在我看来已经做到了这一点:

<div class="col">
    <?php
    $driverslicense_types = [
        'AM',
        'A1',
        'A2',
        'A',
        'B1',
        'B',
        'BE',
        'C1',
        'C1E',
        'C',
        'CE',
        'D1',
        'D1E',
        'D',
        'DE'
    ]
    ?>
    @foreach($driverslicense_types as $type)
        <div class="col-md-3">
            {!! Form::checkbox('driverslicense_type'.$type,'1', false, ['id'=>'driverslicense_type'.$type, 'class' => 'checkbox-style']) !!}
            {!! Form::label('driverslicense_type'.$type, $type, ['id'=>'driverslicense_type'.$type, 'class'=>'checkbox-style-3-label']) !!}
        </div>
    @endforeach
</div>

所以现在我不知道如何在我的控制器中保存这个,任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

首先要记住的是,未在表单上检查的复选框不会发布到脚本中。

其次,如果您将所需的值放在value=""属性中而不是您正在使用的默认值1,那么您将从表单中获得一些有用的数据

从您的类型数组开始,并为每个类型代码指定正确的值。

/* ABCD
 *
 * A: 0 No 1 AM 2 A1 3 A2 4 A;
 * B: 0 No 1 B1 2 B 3 BE
 * C: 0 No 1 C1 2 C1E 3 C 4 CE
 * D: 0 No 1 D1 2 D1E 3 D 4 DE
 */

$dl_types = [
    'aaas' => ['AM'=>1, 'A1'=>2, 'A2'=>3, 'A'=>4],
    'bees' => ['B1'=>1, 'B'=>2, 'BE'=>3],
    'cees' => ['C1'=>1, 'C1E'=>2, 'C'=>3, 'CE'=>4],
    'dees' => ['D1'=>1, 'D1E'=>2, 'D'=>,3 'DE'=>4]
]

现在使用它将值加载到表单上的value=""属性中,用于每个复选框。

我的Laravel非常生疏,所以请检查一下,如果我在这里语法错误,请不要打扰我

@foreach($dl_types as $name => $subarray)
    @foreach ($subarray as $type => $value)
        <div class="col-md-3">
        {!! Form::checkbox($name.'[]',$value, false, ['id'=>'driverslicense_type'.$type, 'class' => 'checkbox-style']) !!}
        {!! Form::label('driverslicense_type'.$type, $type, ['id'=>'driverslicense_type'.$type, 'class'=>'checkbox-style-3-label']) !!}
        </div>
    @endforeach
@endforeach

现在发布表单时,您应该在$_POST

中获得4个这样的数组
$_POST['aaas'][....]
$_POST['bees'][....]
$_POST['cees'][....]
$_POST['dees'][....]

每个子数组的子数组都包含您在每个value=""属性中放置的复选框的值。

正如您在另一个答案中所说的那样,您只需要每个类别中最大的答案来获得您想要的答案,无论例如检查了多少aaas,您就可以为每个类别执行此操作

$result_string = '';        // init the string

if ( !isset($_POST['aaas'] ) {
    // nothing in the A set was checked
    $result_string .= '0';
} else {
    $result_string .= $_POST['aaas'][count($_POST['aaas']-1);
}

if ( !isset($_POST['bees'] ) {
    $result_string .= '0';
} else {
    $result_string .= $_POST['bees'][count($_POST['bees']-1);
}

if ( !isset($_POST['cees'] ) {
    $result_string .= '0';
} else {
    $result_string .= $_POST['cees'][count($_POST['cees']-1);
}

if ( !isset($_POST['dees'] ) {
    $result_string .= '0';
} else {
    $result_string .= $_POST['dees'][count($_POST['dees']-1);
}

您最终应该得到一个包含4个数字字符的结果字符串,您可以将其存储到数据库中。