我是所有这些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)在这种情况下,动态表是最佳解决方案(用于显示)吗?
提前谢谢!
答案 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)在这种情况下,动态表是最佳解决方案吗(对于显示器)? 这一切都取决于你想要完成的事情。