将表单值转换为对象数组+显示动态表

时间:2017-01-12 16:57:06

标签: php html arrays

我是所有这些php的新手,因为我的背景是Java,所以在我看来,一切都像是一团糟。

说明: 我有一个表单,我需要获取用户的输入并将其发布到另一页的表中。 我认为这个表应该是一个动态表,因此添加多个对象没有任何限制。 一次添加一个对象,当我完成填写表单并单击提交时。

这是我需要获得用户输入的表单:

<p>Assignment name</p>  
<form action="the_next_page.php" method="post">
<input id="assignment_name" name="asgn_name">

<p>Due Date</p>
<input id="due_date" name="due_date" type="date"><br>

<p>Rank:</p>
<input type="radio" name="rank" value="1" checked> 1<br>
<input type="radio" name="rank" value="2"> 2<br>
<input type="radio" name="rank" value="3"> 3<br>
<input type="radio" name="rank" value="4"> 4<br>
<input type="radio" name="rank" value="5"> 5<br>

<p>Description</p>
<textarea id="comments" name="comments"></textarea>

<input name="Submit" type="submit" value="Submit">
<input name="reset" type="button" value="Reset">

</form>

正如您所看到的,我需要将不同类型的值组合在一起,因此我创建了一个类和一个构造函数:

<?php
$Arr=array();

class assignment {
public $asgn_name;
public $asgn_due_date;
public $asgn_rank;
public $asgn_description;


public function __constructor($asgn_name, $asgn_due_date, $asgn_rank,    
$asgn_description){
$this-> $asgn_name=$asgn_name;
$this-> $asgn_due_date=$asgn_due_date;
$this-> $asgn_rank=$asgn_rank;
$this-> $asgn_description=$asgn_description;
}

}

$assignment_temp=new assignment($asgn_name=$_REQUEST['name'],    
$asgn_due_date=$_REQUEST['due_date'], $asgn_rank=$_REQUEST['rank'], 
$asgn_description=$_REQUEST['comments']);

array_push($Arr, $assignment_temp);
?>

我不确定这部分是否写得好,请原谅......

现在,重点是我需要从表单页面中获取所有对象属性,并将它们传递到下一页(单击提交时),我应该在表格中显示它们。

表格是:

<table>

<tr>
<td>text field</td>
<td>Date field</td>
<td>Radio button selection</td>
</tr>

<tr>
<td><?php echo ($_SESSION['due_date']=$_REQUEST['asgn_name']);?>   
</td>
<td><?php echo ($_SESSION['due_date']=$_REQUEST['due_date']);?> </td>
<td><?php echo ($_SESSION['due_date']=$_REQUEST['rank']);?> </td>   
</tr>

</table>

你在表中看到的$ _SESSION / $ _REQUEST是一个临时解决方案,它只能显示字段,但不会将值保存到对象中。 此外,它仅显示插入的最后一个值,并在插入新值时重写。

所以,基本上我的问题是: 1)如何将表单值转换为对象数组并将它们传递到下一页? 2)如何在本地保存对象,以便新对象不会覆盖先前插入的对象? 3)在这种情况下,动态表是最佳解决方案(用于显示)吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

1)如何将表单值转换为对象数组并将其传递到下一页?

如果你有一个可以包含很多对象的动态数组,你可以通过仔细命名表单输入,在$ _POST / $ _ GET / $ _ REQUEST数据中获得一个整洁的数组。这种方法通常适用于PHP:

for ($i=0; $i<5; $i++) {
    echo '<input name="objs[' . $i . '][val1]" type="text">';
    echo '<input name="objs[' . $i . '][val2]" type="text">';
    echo '<input name="objs[' . $i . '][val3]" type="text">';
}

如您所见,我们使用括号来尝试表示数组。如果你的表单方法=“post”,那么你的var_dump($ _ POST)可能看起来像这样:

array (size=1)
  'objs' => 
    array (size=5)
      0 => 
    array (size=3)
      'val1' => string 'v1-0'
      'val2' => string 'v2-0'
      'val3' => string 'v3-0'
      1 => 
    array (size=3)
      'val1' => string 'v1-1'
      'val2' => string 'v2-1'
      'val3' => string 'v3-1'
      2 => 
    array (size=3)
      'val1' => string 'v1-2'
      'val2' => string 'v2-2'
      'val3' => string 'v3-2'
      3 => 
    array (size=3)
      'val1' => string 'v1-3'
      'val2' => string 'v2-3'
      'val3' => string 'v3-3'
      4 => 
    array (size=3)
      'val1' => string 'v1-4'
      'val2' => string 'v2-4'
      'val3' => string 'v3-4'

2)如何在本地保存对象,以便新对象不会覆盖先前插入的对象? 完全不确定你的意思。如果您每次都在执行数据库INSERT,那么它将始终创建新记录,因此您不必担心任何先前记录的UPDATE。这里的细节将取决于您的数据库结构。

3)在这种情况下,动态表是最佳解决方案吗(对于显示器)? 这一切都取决于你想要完成的事情。