2016-02-05 59 views
0

如何在数据库中插入此表单的值?将表单值插入到数据库中

<tr> 
    <td>1. Do you feel well and healthy?</label></td> 
    <input type="hidden" name="question" value="1. Do you feel well and healthy?"> 
    <td><input type="radio" name="answer" value="Yes" checked></td> 
    <td><input type="radio" name="answer" value="No"></td> 
    <td><input type="text" name="remarks"></td> 
</tr> 
<tr> 
    <td><ul><li>Have any flu or cold?</li></ul></td> 
    <input type="hidden" name="question" value="Have any flu or cold?"> 
    <td><input type="radio" name="answer" value="Yes" checked> </td> 
    <td><input type="radio" name="answer" value="No"></td> 
    <td><input type="text" name="remarks"></td> 
</tr> 

因为当我对这个数据插入到数据库中只插入最后一个值是2的表行中的“有烟” ......

$medical = new MedicalHistory; 
$medical->username = $value; 
$medical->question = $data['question']; 
$medical->answer = $data['answer']; 
$medical->remarks = $data['remarks1']; 
$medical->save(); 

我使用laravel作为一个框架

+0

我认为你的表单元素被覆盖。所以请尝试下面提到的事情。 –

+0

html全部混淆了 - 它无效 – RamRaider

回答

0

你的形式应该是这样的:

<tr> 
    <td>1. Do you feel well and healthy?</label></td> 
    <input type="hidden" name="question" value="1. Do you feel well and healthy?"> 
    <td><input type="radio" name="answer" value="Yes" checked></td> 
    <td><input type="radio" name="answer" value="No"></td> 
    <td><input type="text" name="remarks"></td> 
</tr> 
<tr> 
    <td><ul><li>Have any flu or cold?</li></ul></td> 
    <input type="hidden" name="question2" value="Have any flu or cold?"> 
    <td><input type="radio" name="answer2" value="Yes" checked> </td> 
    <td><input type="radio" name="answer2" value="No"></td> 
    <td><input type="text" name="remarks2"></td> 
</tr> 
<?php 
$medical = new MedicalHistory; 
$medical->username = $value; 
$medical->question = $data['question']; 
$medical->answer = $data['answer']; 
$medical->remarks = $data['remarks1']; 
$medical->save(); 

$medical = new MedicalHistory; 
$medical->username = $value; 
$medical->question = $data['question2']; 
$medical->answer = $data['answer2']; 
$medical->remarks = $data['remarks2']; 
$medical->save(); 
?> 

其实你的表单元素越来越OVERR idden。

感谢 阿米特

1

原因仅被插入的第二种形式是因为你重用你的领域相同的名称。

一个解决方案将给你的所有领域提供独特的名称(单选按钮对除外)。

更好的解决方案将使得阵列投入,我已经做了一个快速搜索你以及与此想出了:How to get form input array into PHP array

您应该修改代码以数组变量,因此,如果您想保存多个问题,在两个问题字段中使用名称'question []'而不是'question'。

前端表例如:

<tr> 
    <td>1. Do you feel well and healthy?</label></td> 
    <input type="hidden" name="question[]" value="1. Do you feel well and healthy?"> 
    <td><input type="radio" name="answer[0]" value="Yes" checked></td> 
    <td><input type="radio" name="answer[0]" value="No"></td> 
    <td><input type="text" name="remarks[]"></td> 
</tr> 
<tr> 
    <td><ul><li>Have any flu or cold?</li></ul></td> 
    <input type="hidden" name="question[]" value="Have any flu or cold?"> 
    <td><input type="radio" name="answer[1]" value="Yes" checked> </td> 
    <td><input type="radio" name="answer[1]" value="No"></td> 
    <td><input type="text" name="remarks[]"></td> 
</tr> 

以处理PHP逻辑,你应该做这样的事情你的数据的新格式:

$question = $_POST['question']; 
$answer = $_POST['answer']; 
$remark = $_POST['remarks']; 

foreach($question as $key => $q) { 
    print "The question is ".$q.", answer is ".$answer[$key]. 
      ", and remarks are ".$remark[$key].". Thank you\n"; 
} 

既然你要保存的数据,你应该这样做:

$value = 'idk_where_you_assign_names'; 
$question = $_POST['question']; 
$answer = $_POST['answer']; 
$remark = $_POST['remarks']; 

foreach($question as $key => $q) { 
    $medical = new MedicalHistory; 
    $medical->username = $value; 
    $medical->question = $q; 
    $medical->answer = $answer[$key]; 
    $medical->remarks = $remark[$key]; 
    $medical->save(); 
} 

经过我的编辑它现在应该工作。

+0

不会这样工作 - 因为它们是具有相同名称的单选按钮,它们实际上是相同的元素 - 如果您为第一个问题选择一个,然后仅为第二个问题选择一个后面的选择将被选中... – RamRaider

+0

有一刻,我的答案不适当更新;没有想到这一点。 –

+0

@RamRaider我修改了我的代码,它应该像现在一样工作;谢谢! –