Piszę ćwiczebnie coś a'la prosty cms w OOP. Jednym ze sposób jest przerabianie formy struturalnej na obiektową, ale nie mogę uzyskać funkcji edytowania artykułów.
Generalnie na razie w tej części cmsa wszystko zachodzi między 2 plikami:
edit.php
.........
//włączanie opcji edycji na liście artykułów
if (isset($_POST['action']) and
$_POST['action'] == 'Edytuj') {
$id = $_POST['id'];
$id_art = $_POST['id'];
include_once("../apps/db/db.php");
$db = new baza ('aaa', 'aaaa', 'aaa', 'aaa');
$db->sqlQuery('SELECT * FROM artykul where id="'.$id_art.'"');
$result = $db->result;
{
$out[]=$row;
}
foreach ($out as $art)
{
$articles[$art['tytul']] = new Article ($art['id'], $art['imie'], $art['tytul'], $art['tekst']);
}
include '../apps/view/editform.view.php';
}
//edytowanie artykułu
if (isset($_POST['action']) and
$_POST['action'] == 'Zmien') {
$id_art = $_POST['id'];
include_once("../apps/db/db.php");
$db = new baza ('aaa', 'aaa', 'aaa', 'aaaa');
$db->sqlQuery('UPDATE artykul SET
tekst="'.$tekst.'",
tytul="'.$tytul.'"
WHERE id="'.$id_art.'"');
}
else
{}
.........
i editform.view.php
<form action="?" method="POST">
<?php
foreach ($articles as $tytul => $article)
{
echo '<label for="text">Tekst artykułu:</label>'; echo '<textarea id="tekst" name="tekst" rows="3" cols="40">'.$article->tekst.'</textarea></div>'; echo '<div><label for="tytul">Tytuł artykułu:</label><textarea id="tytul" name="tytul" rows="3" cols="40">'.$article->tytul.'</textarea></div>'; echo '<div><input type="hidden" name="id" value="'.$article->id.'"/><input type="submit" value="Zmien"/></div>'; }
?>
</form>
Po wybraniu opcji edytuj, wszystko chodzi dobrze- wyświetla się w osobnym formularzu tekst i tytuł artykułu do edycji.
Problem jest potem, bo po wysłaniu $_POST['action'] == 'Zmien', plik wraca do starej tabelki, ale nie nanosi zmian.
Na pewno dobre jest połączenie z bazą danych, bo w edit.php (tutaj nie pokazałem dla jasności przekazu), mam opcję kasowania i to działa prawidłowo..
Ten post edytował marcwars 16.01.2012, 08:17:41