【问题标题】:How to save data from drop down option value to laravel controller如何将数据从下拉选项值保存到 laravel 控制器
【发布时间】:2015-05-19 16:09:24
【问题描述】:

// 形式

<form method="post">
<div>
<label>Result:</label>
<div class="select">
<select name="result" id="result" class="result">
<option value="1">First Division</option>
<option value="2">Second Division</option>
<option value="3">Third Division</option>
<option value="4">Grade</option>
</select>
</div>
Marks/CGPA.
</div>
<div class="marks">
<label>Marks(%):</label>
<input name="marks" class="form-control marksText" type="text" />
</div>
<div class="cgpa">
<div class="col-md-5">
<label>CGPA:</label>
<input name="cgpa" id="cgpa" />
</div>
<div class="col-md-5">
<label>Scale:</label>
<input name="scale" id="scale" class="scale" />
</div>
</div>
<div class="save">
<button type="button">Close</button>
 <input type="submit" name="save_education" value="Save changes" />
 </div>
</form>

// 控制器

if(isset($_POST['save_education])){
    $qualification = Qualification::create(array
        (   
         'level_of_education' => $input['level_education'],
         'exam_title' =>  $input['exam_title'],
         'major' = $input['major'],

          if(isset($_POST([$input['result]))){
               $r = $input['result'];
               if($r == 1){
                  $result => 'First';
                  $marks = $input['marks'];
                  }
              elseif ($r == 2){
                  $result => 'Second';
                  $marks = $input['marks'];
                  }
               elseif ($r == 3){
                  $result => 'Third';
                  $marks = $input['marks'];
              }
              else {
                  if($r == 4)
                     $result = $input['cgpa'];
                     $marks = $input['scale'];
                   }
          }
         .....
        )
    );

    $qualification->save();
}

我正在使用 laravel4.2,当我尝试保存结果时它显示错误(如果在 isset 结果行中出现意外),我有什么问题。检查选项值后如何将数据保存到数据库中。作为 laravel 的新手,请帮助我..它毁了我一整天..请..帮助...

【问题讨论】:

  • 看起来您的特定错误来自这一行的额外“)”:if(isset($_POST([$input['result])))
  • 但是我该怎么办?删除它后还显示错误::'syntax error, unexpected 'if' (T_IF), expecting ')'' ... @retrograde ...你能帮我吗...我只是无法保存我的情况。 ...请帮助..

标签: php laravel-4 mysqli eloquent laravel-5


【解决方案1】:

如果这是您的实时代码,那么您在第一行和第八行中缺少一些引号:

if(isset($_POST['save_education])){ //old
if(isset($_POST['save_education'])){ //new

if(isset($_POST([$input['result]))){ //old
if(isset($_POST([$input['result']))){ //new

另外,使用 laravel 特定的函数而不是普通的 PHP 是个好主意。用\Input::get('blub') 替换您的$_POST['blub'] 命令。您可以使用\Input::has('blub') 来检查变量是否可用。

为了进一步安全,您还应该进行一些验证。一个例子是:

$validator = \Validator::make(
    \Input::all(),
    [
         'result' => 'required|between:1,4',
         'marks' => 'do-further-stuff',
         [...]
    ]
);
if($validator->fails()) {
    // error handling, go back or something
} else {
    // success, do what you want
}

有关验证规则,请查看the docs

【讨论】:

    【解决方案2】:

    IMO 似乎 ::create 数组混淆了基础知识。另外,我不清楚您对 $result 和 $marks 做了什么 - 我假设它们是您的 Qualification 表中的列。

    我建议这样做:

    $r = $input::get('result');
    
     if($r){
        $q = new Qualification;
        $q->level_of_education = Input::get('level_education');
         // do the same thing with the rest of your fields
    
        if($r == 1) {
           $q->result = 'First';
           $q->marks = Input::get('marks');
          }
        // rest of your elseif statements would follow 
    
       $q->save();
    }
    

    这个网站有一个很棒的 CRUD 教程(大约 1/2 解决了这个问题):https://scotch.io/tutorials/simple-laravel-crud-with-resource-controllers

    祝你好运

    【讨论】:

      猜你喜欢
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2017-09-13
      相关资源
      最近更新 更多