Q:

PHP has to update content from PDO database shown in while loop, but removes it instead

Solution found, but new problem occured - displayed at bottom of this question
I have created this while loop which shows all content from my db and gives the user the possibility to edit it by entering a new value and pressing the 'Update' button. Everything works fine except that when I press the 'Update' button, the value of my object is erased in stead of updated. So the value of my input field becomes blank, but it has to display the value that was filled in. 
I'm almost certain that the problem is within the last part my PDO code (in the function Update), but can't point my finger on it. Can you help me?
Connection to my PDO code
<?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();

}

?>

My while loop
<?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>
    ";
}

?>

My functions
<?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;
    }

}

?>

All help is appreciated! 
Edit: solution found + new problem
$d->Report = $_POST['myreport'];

in "Connection to my PDO code" has to become 
$d->Myreport = $_POST['myreport'];

because it has to be equal to the case items in the setter and getter. The annoying thing now is that when I press 'Update' the previous message is still visible, so I have to double refresh. Any solutions for this?

A:

If I understand You correctly You will have to load current results just after the update:
if(isset($_POST['update'])){
    $d->Report = $_POST['myreport'];
    $d->Id = $_POST['hidden'];
    $d->Update();
    $all = $d->getAll();
}

This way, after the update You will have fresh (updated) results that You can display in My while loop.

