Diskuze: Úprava vloženého článku (inzerátu)
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
A co ti přesně nefunguje?? Jak tam vypisuješ data (ta nastavená při vytvoření)?? A tím vypisováním myslím: vytáhneš to z databáze a jak ty data vypisuješ do toho formuláře pro vytvoření. A budeš potřebovat udělat ještě script na změnu dat (po úpravě).
Ahoj, píšeš "PHP ošetřující úpravu inzerátu", ale já zde vidím
dotaz SELECT. Navíc na konci máš přesměrování, takže se se ti to vypsat
ani nemůže, protože se ti to přesměruje. Čeho jsi chtěl v tom druhém
skriptu dosáhnout?
Jinak bys mohl použít stránku na vytváření nového inzerátu a
předělat ji tak, aby mohla i inzeráty upravovat. Je to snad ta
nejjednodušší možnost
To SELECT chtěl použít nejspíš na získání starých dat z databáze. Tyto data by vypsal do stejného formuláře, který používá k vytváření inzerátů. Tam by šli data pozměnit a následně by přepsal aktuální data v databázi za tyto upravená.
Ano, máš pravdu, trochu mě to popletlo. V tom případě si myslím, že mu tam přebývá řádek:
header('Location:administrace.php');
(Michal Kuba) Vytáhne data z databáze a potom stránku přesměruje. Každopádně není tu celý kód, tak to nemůžu posoudit.
Pokud ty data někam uloží, půjde to i takto. Ovšem bych to řešil v tomto souboru a tento řádek by tam nebyl.
Tak ta stránka je vlastně zkopírovaná a jen nachystaná na úpravu inzerátů.. Který kus kódu bych měl ještě pro úplnost dodat?
trochu jsem to upravil do jedné stránky PHP, ale když chci zkusit onu editaci, tak mi to právěže vypíše, že inzerát neexistuje:
$inzerat= array(
'ID' => '',
'autor' => '',
'datum_vlozeni' => '',
'titulek'=>'',
'text' => '',
'kategorie' => '',
'upresneni' => '',
'mesto' => '',
);
if ($_POST){
if(!$_POST['ID']){
if ( isset($_POST['kategorie']) AND isset($_POST['upresneni_' . $_POST['kategorie']]) )
$upresneni = $_POST['upresneni_' . $_POST['kategorie']];
$autor = $_SESSION['uzivatel_jmeno'];
Db::query('
INSERT INTO inzeraty (autor, datum_vlozeni, titulek, text, kategorie, upresneni, mesto)
VALUES (?,CURRENT_TIMESTAMP(),?, ?, ?, ?, ?)
',$autor, $_POST['titulek'], $_POST['text'], $_POST['kategorie'],$upresneni,$_POST['mesto'] );
header('Location: podat_inzerat.php');
exit();
}
else
{
Db::query('
UPDATE inzeraty
SET titulek=?, text=?, kategorie=?, upresneni=?, mesto=?
WHERE ID=?
', $_POST['titulek'], $_POST['text'], $_POST['kategorie'],$upresneni, $_POST['mesto'], $_POST['ID']);
}
header('Location: administrace.php');
exit();
}
else if (isset($_GET['ID']))
{
$nactenyClanek = Db::queryOne('
SELECT *
FROM inzeraty
WHERE ID=?
', $_GET['ID']);
if ($nactenyInzerat)
$inzerat = $nactenyInzerat;
else
$zprava = 'Inzerát nebyl nalezen';
}
Máš tam malou chybičku ke konci. Data načítáš do proměnné
$nactenyClanek, ale potom používáš jinou proměnnou
$nactenyInzerat...
Jo vidíš, toho jsem si nevšiml už to víceméně funguje, když napíšu nový titulek, text atd tak
se to přepíše, jen při otevření editace se mi nevypíší původní
hodnoty. :/
Tak musíš mít někde v kódu chybu. Postupně si testuj proměnné, co
obsahují a zjistíš, co děláš špatně. Také by sis mohl psát komentáře
a mít pořádek v kódu, odhalíš hodně chyb již tak, že uvidíš, jak moc
je daný řádek odsazený od okraje
var_dump($inzerat); // Vypíše obsah proměnné, abych se ujistil, že je vše správně.
Zobrazeno 12 zpráv z 12.