2012-06-27 1 views
0

У меня есть относительно простой класс, который удаляет пост:PHP OOP сообщение продолжает отображать на странице обновления

function delete_post($postid, $reason){ 

    //Stuff to delete post  
    $this->delete_response = 'Thanks, your course has been removed.'; 

} 

Эта функция вызывается в верхней части страницы с формой на. Если форма отправлена, та же страница проверяет POST [] и выполняет функцию, например, так:

if(!empty($_POST['removecourse'])){ 
    $courseManager->delete_post($_POST['courseid'], $_POST['cancel-reason']); 
    echo $courseManager->delete_response; 
}; 

Так что моя проблема ... когда я обновить страницу, сообщение продолжает отображать. Я знаю, что это потому, что я повторно представляю форму, и потому, что нет такого P/R/G-шаблона, но, поскольку я новичок в ООП, я задаюсь вопросом, делает ли я это правильным путем, или если кто-либо может предложить способ, похожий на PRG или что-то еще?

+0

Есть ли какой-либо причине вы не можете использовать P/R/G? (просто любопытно) – jprofitt

+1

Вы можете добавить небольшую проверку внутри 'delete_post' - подсчитать количество элементов, которые были удалены, и установить ответ на пустую строку, если ничего не было удалено. – andrewsi

+0

@jprofitt привет, я бы с удовольствием использовал PRG, но я не был уверен, как реализовать его в OOP, я сделал это: /. Я новичок в ООП, сделав все ранее в процедурной манере. – JamesG

ответ

1

Добавить, если это испытание, если Somthing изменилось, как mysql_affected_rows

function delete_post($postid, $reason) 
{ 
    //Stuff to delete post 
    if(mysql_affected_rows()) 
    { 
     $this->delete_response = 'Thanks, your course has been removed.'; 
    } 
} 
+0

Ahh ok, и будет ли это «лучшей практикой»? – JamesG

+1

Хорошим подходом было бы сгенерировать токен (хэш), сохранить его в сеансе текущего пользователя и поместить его в поле скрытой формы, а затем проверить его на достоверность и (если оно действительно) удалить его из массива $ _POST после удаления запись или регенерировать ее после простого обновления страницы (в сеансе и в скрытом поле формы). Представьте себе ситуацию - вы не удаляете запись по ID, а добавляете некоторый контент. Таким образом, ваша запись будет добавляться столько раз, сколько пользователь обновляет страницу ... – BasTaller

+0

Посмотрите на этот ответ, это для Zend Framework, но идея достаточно ясна из-за имен методов ZF: http: // stackoverflow. ком/а/2542782/411671 – BasTaller