为了更好地理解我描述我的任务。 我们必须在php中创建一个工具,将带有表单的手机逐个添加到列表中。稍后该列表应该导出为CSV / XML文件。这是通过Arrayobject完成的。我的问题是我可以使用表单进入手机,但是它们会被覆盖而不会被添加。所以我的名单中一次只有一部手机。我的代码到目前为止: HTML:
<div>
<form name="Eingabe" action="handler.php" method="POST">
<label for="Hersteller">Hersteller</label>
<input id="Hersteller" name="Hersteller" type="text"><br>
<label for="Modell">Modell</label>
<input id="Modell" name="Modell" type="text"><br>
<label for="Preis">Preis</label>
<input id="Preis" name="Preis" type="number" min="1" max="1000"><br>
<label for="Seriennummer">Seriennummer</label>
<input id="Seriennummer" name="Seriennummer" type="text"><br>
<br>
<input name="Senden" type="submit" value="Speichern">
</form>
</div>
列表:
<?php
class handy /* extends guid */ {
private $id;
private $hersteller;
private $modell;
private $seriennr;
private $preis;
public function setid($id)
{
$this->id = $id;
}
public function sethersteller($hersteller)
{
$this->hersteller = $hersteller;
}
public function setmodell($modell)
{
$this->modell = $modell;
}
public function setseriennr($seriennr)
{
$this->seriennr = $seriennr;
}
public function setpreis($preis)
{
$this->preis = $preis;
}
public function getid()
{
return $this->id;
}
public function gethersteller()
{
return $this->hersteller;
}
public function getmodell()
{
return $this->modell;
}
public function getseriennr()
{
return $this->seriennr;
}
public function getpreis()
{
return $this->preis;
}
}
?>
<?php
class handyliste extends ArrayObject {
public function addhandy($i, $hdy)
{
$this->offsetSet($i, $hdy);
}
?>
处理程序:
$h = new handy();
$h->sethersteller($_POST['Hersteller']);
$h->setid(uniqid());
$h->setmodell($_POST['Modell']);
$h->setpreis($_POST['Preis']);
$h->setseriennr($_POST['Seriennummer']);
$hl = new handyliste();
$hl->addhandy(null, $h);
echo "<table>";
echo "<thead><tr><th>ID</th><th>Hersteller</th><th>Modell</th><th>Seriennummer</th><th>Preis</th></tr></thead>";
foreach ($hl as $h)
{
echo "<tr><td>";
echo $h->getid() . "</td><td>";
echo $h->gethersteller() . "</td><td>";
echo $h->getmodell() . "</td><td>";
echo $h->getseriennr() . "</td><td>";
echo $h->getpreis() . "€</td></tr>";
}
echo "</table>";
我希望有人可以提供帮助。使用普通数组我觉得很容易,但我之前从未使用过arrayobjects。
答案 0 :(得分:0)
你有类似的东西:
$hl = new handyliste();
现在,在代码的最后,填充数据后,您可以执行以下操作:
$_SESSION['hl'] = $hl;
要使用您需要在代码之上的会话行:
session_start();
将开始或继续会话。 现在,在做之前
$hl = new handyliste();
您需要查看以下内容:
$hl = $_SESSION['hl'];
只有添加元素,如果不能正常工作,可以投射列表(示例),这将节省会话,并且您可以在每个页面上看到此变量(session_start();)以获取有关会话的更多信息请参阅php.net