Php 如何存储具有多个输入的动态添加行中的数据
我创建了一个包含用户(医生)信息的表单。除了默认信息外,他们现在还想增加办公室的办公时间 在当前表单中,我添加了一个包含3个输入元素的表单组:Php 如何存储具有多个输入的动态添加行中的数据,php,html,arrays,forms,input,Php,Html,Arrays,Forms,Input,我创建了一个包含用户(医生)信息的表单。除了默认信息外,他们现在还想增加办公室的办公时间 在当前表单中,我添加了一个包含3个输入元素的表单组: 选择name=“dayofweek[]” 输入名称=“时间块[]” 选择name=“type[]” 有一个按钮,用户可以添加一个具有相同字段的额外行,以便创建多个开放时间(每天/时间段)。 所有内容都通过表单中的“提交”按钮存储 保存数据后,如下所示: class Appointment { public $dayofweek; pu
- 选择name=“dayofweek[]”
- 输入名称=“时间块[]”
- 选择name=“type[]”
class Appointment
{
public $dayofweek;
public $timeblock;
public $type;
public function __construct($record)
{
$this->dayofweek = $record['dayofweek'];
$this->timeblock = $record['timeblock'];
$this->type = $record['type'];
}
}
class AppointmentList
{
public $appointmentArray = [];
function setData($data)
{
$prepared = [];
$i = 0;
while ($i < count($data['dayofweek'])) {
$a = $data['dayofweek'][$i];
$b = $data['timeblock'][$i];
$c = $data['type'][$i];
$record = ['dayofweek' => $a, 'timeblock' => $b, 'type' => $c];
$prepared[] = new Appointment($record);
$i++;
}
$this->appointmentArray = $prepared;
}
function getData() {
$data = ['dayofweek' => [],'timeblock' => [],'type' => []];
foreach ($this->appointmentArray as $appointment){
$data['dayofweek'][] = $appointment->dayofweek;
$data['timeblock'][] = $appointment->timeblock;
$data['type'][] = $appointment->type;
}
return $data;
}
}
- “dayofweek”=>[“周一”、“周一”、“周二”、…]
- “时间块”=>[“10-12h”、“14-18h”、“10-16u”、…]
- “键入”=>[“按预约”、“免费”、“免费”、…]
public static function prepareData($dayofweek = [], $timeblock = [], $type = []) {
$prepared = [];
$i = 0;
while($i < count($dayofweek)) {
$a = $dayofweek[$i];
$b = $timeblock[$i];
$c = $type[$i];
$record = ['dayofweek' => $a, 'timeblock' => $b, 'type' => $c];
array_push($prepared, $record);
$i++;
}
return $prepared;
}
公共静态函数prepareData($dayofweek=[],$timeblock=[],$type=[]){
$prepared=[];
$i=0;
而($i$a,'timeblock'=>$b,'type'=>$c];
数组推送($prepared$record);
$i++;
}
已准备好的美元;
}
要在编辑时显示表单上的数据,我必须做相反的操作。
我想知道是否还有其他更简单、更干净的方法可以做到这一点?不幸的是,像array和string这样的原生数据类型只能有一种格式和结构。如果用例使用不同格式或不同数据结构的相同数据,建议创建数据对象。数据对象是将数据保存在其字段中的对象,它具有许多输入和输出方法,允许以不同的格式和结构使用数据 这是一种面向对象的方法,在这种情况下,它将使您的代码更加清晰易懂,并且在将来更易于扩展或修改。但请注意,这不会减少代码量。格式转换功能是必需的 根据描述,我们有一个名为Appointment的数据对象,数据为{DayOfWeek,TimeBlock,Type}。然而,所描述的输入和输出函数参考约会列表,因此,这些函数不属于约会对象。它们指的是另一个数据对象AppointmentList,其中包含约会数组以及输入和输出函数 此对象将如下所示:
class Appointment
{
public $dayofweek;
public $timeblock;
public $type;
public function __construct($record)
{
$this->dayofweek = $record['dayofweek'];
$this->timeblock = $record['timeblock'];
$this->type = $record['type'];
}
}
class AppointmentList
{
public $appointmentArray = [];
function setData($data)
{
$prepared = [];
$i = 0;
while ($i < count($data['dayofweek'])) {
$a = $data['dayofweek'][$i];
$b = $data['timeblock'][$i];
$c = $data['type'][$i];
$record = ['dayofweek' => $a, 'timeblock' => $b, 'type' => $c];
$prepared[] = new Appointment($record);
$i++;
}
$this->appointmentArray = $prepared;
}
function getData() {
$data = ['dayofweek' => [],'timeblock' => [],'type' => []];
foreach ($this->appointmentArray as $appointment){
$data['dayofweek'][] = $appointment->dayofweek;
$data['timeblock'][] = $appointment->timeblock;
$data['type'][] = $appointment->type;
}
return $data;
}
}
您可以使用数组$al->appointmentArray
逐个访问约会并将其存储在表中
之后,当您需要再次填写表单时,只需使用$al->getData()
请注意,这只是一个示例。通常使用不同的技术将数据对象自动存储到表中
希望这有帮助。祝你好运。我正在使用你建议的课程。所以我是用正确的方法做的。我也可以将其存储为json?谢谢你的全面回答!