已找到解决方案,但发生了新问题 - 显示在此问题的底部
我创建了这个while循环,它显示了我的数据库中的所有内容,并且用户可以通过输入新值并按下“更新”来编辑它。按钮。一切正常,只有当我按下更新'按钮,我的对象的值被删除而不是更新。因此,输入字段的值变为空白,但必须显示填写的值。
我几乎可以肯定问题是在我的PDO代码的最后一部分(在函数更新中),但不能指出它。你能救我吗?
与我的PDO代码的连接
<?php
include_once('classes/Day.class.php');
$d = new Day();
$all = $d->getAll();
if(isset($_POST['update'])){
$d->Report = $_POST['myreport'];
$d->Id = $_POST['hidden'];
$d->Update();
}
?>
我的while循环
<?php
while ($displayAll = $all->fetch(PDO::FETCH_ASSOC)) {
echo
"
<form method='POST' action=''>
<label>Day " . $displayAll['id'] . ":</label>
<input type='text' name='myreport' value='" . $displayAll['myreport'] . "' />
<input type='hidden' name='hidden' value='" . $displayAll['id'] . "' />
<button type='submit' name='update''>Update</button>
</form>
";
}
?>
我的功能
<?php
include_once('Db.class.php'); // connection to the Db.
class Day{
private $m_iId;
private $m_sMyreport;
public function __set($p_sProperty, $p_vValue){
switch($p_sProperty){
case 'Id':
$this->m_iId = $p_vValue;
break;
case 'Myreport':
$this->m_sMyreport = $p_vValue;
break;
}
}
public function __get($p_sProperty){
switch($p_sProperty){
case 'Id':
return $this->m_iId;
break;
case 'Myreport':
return $this->m_sMyreport;
break;
}
}
public function Update(){
$conn = Db::getInstance();
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$statement = $conn->prepare("
UPDATE `tbl_dailyreport`
SET `myreport` = :myreport
WHERE `id` = :id
");
$statement->bindValue(":myreport",$this->m_sMyreport);
$statement->bindValue(":id",$this->m_iId);
$statement->execute();
}
public function getAll () {
$conn = Db::getInstance();
$result = $conn->query("SELECT * FROM tbl_dailyreport");
return $result;
}
}
?>
感谢所有帮助!
编辑:找到解决方案+新问题
$d->Report = $_POST['myreport'];
in&#34;连接到我的PDO代码&#34;必须成为
$d->Myreport = $_POST['myreport'];
因为它必须等于setter和getter中的case项。现在令人烦恼的是,当我按下“更新”时。上一条消息仍然可见,所以我必须重新刷新。对此有何解决方案?
答案 0 :(得分:0)
如果我理解正确您必须在current
之后加载update
个结果:
if(isset($_POST['update'])){
$d->Report = $_POST['myreport'];
$d->Id = $_POST['hidden'];
$d->Update();
$all = $d->getAll();
}
这样,在update
之后您将获得新的(更新的)结果,您可以在我的循环中显示。