Cześć,
robię sobie system newsów wykorzystując a przynajmniej próbuję - programowanie obiektowe. Mam jednak problem, bo podczas edycji danych edytuje mi się zawsze news o id=1.
Prezentuję fragmenty kodu:
W ten sposób pobieram id newsa do inku - tu działa wszystko ok
echo '<p style="text-align: right; font-size: 14px; margin-right: 10px" class="italic">(<a href="news/edit_news.php?article='.$singleRecord['id'].'">Edit this artice</a>)</p>';
if(isset($_POST['submitEditedNews'])){
var_dump($_GET['article']);
$dbObject = new SqlDatabase();
$news = new News($dbObject->getInstance());
$rowRecords = $news->getNews();
if($_GET['article'] == NULL){
header('Location: ../index.php');
}
//przekierowanie - zabezpieczenie przez wejściem na podstronę bez parametu `id`
if ($rowRecords) {
foreach($rowRecords as $singleRecord){
$_GET['article'] = $singleRecord['id'];
var_dump($_GET['article']); // zwraca poprawnie id newsa
var_dump($singleRecord['id']);
}
}
$news->setSubject($_POST['topic']);
$news->setContent($_POST['news']);
if ($news->validate()) {
if ($news->doUpdateArticle()) {
echo 'Edited news!';
var_dump($_GET['article']);
} else {
echo 'Error to add';
}
} else {
echo sprintf('%s', $news->getErrors());
}
//var_dump($news);
}
public function doUpdateArticle(){
$author = $_SESSION['nickname'];
$date_article = date('Y-m-d H:i:s');
$ip = $_SERVER['REMOTE_ADDR'];
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$aID = $_GET['article'];
$editNews = $this->dbHandler->prepare("UPDATE `article` SET `author`=:author, `subject`=:topic, `content`=:news, `date_article`=:date_article, `ip` = :ip, `host` = :host WHERE `id` = :id");
//var_dump($_GET['article']);
$editNews->bindValue(":id", $aID, PDO::PARAM_INT);
$editNews->bindValue(":author", $author, PDO::PARAM_STR);
$editNews->bindValue(":topic", $this->subject, PDO::PARAM_STR);
$editNews->bindValue(":news", $this->content, PDO::PARAM_STR);
$editNews->bindValue(":date_article", $date_article, PDO::PARAM_INT);
$editNews->bindValue(":ip", $ip, PDO::PARAM_STR);
$editNews->bindValue(":host", $host, PDO::PARAM_STR);
//$addNews->bindValue(":headImage", $content, PDO::PARAM_STR);
if($editNews->execute() == false){
print_r($editNews->errorInfo());
return false;
}else{
return true;
}
}
I tu pytanie. Czemu przed wykonaniem zapytania poprawnie pobierane jest id do get natomiast po wykonaniu zaptania przyjmuje ona wartość 1(true) - tak wynika z var_dump). Powoduje to, że zawsze zostaje nadpisany news o id=1. Co zrobić, żeby to naprawić? Jak poprawnie przekazać $_GET d metody aktualizującej dane?