簡體   English   中英

將表單值插入數據庫

[英]Insert the form values into a database

如何在數據庫中插入此表單的值?

<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>

因為當我將這些數據插入數據庫時​​,它只會插入第二個表行“ have flue”中的最后一個值。

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

我正在使用laravel作為框架

僅插入第二種形式的原因是因為您正在為字段重復使用相同的名稱。

一種解決方案是為所有字段賦予唯一名稱(單選按鈕對除外)。

更好的解決方案是進行數組輸入,我為您進行了快速搜索,並提出了以下建議: 如何將表單輸入數組轉換為PHP數組

您應該將代碼修改為數組變量,因此,如果要保存多個問題,請在兩個問題字段中使用名稱“ 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();
}

編輯后,它現在應該可以工作了。

您的表格應如下所示:

<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();
?>

實際上,您的表單元素已被覆蓋。

謝謝阿米特

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM