2016-02-05 56 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我修改了我的代碼,它應該像現在一樣工作;謝謝! –