Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Úprava vloženého článku (inzerátu)

Aktivity
Avatar
Michal Kuba
Tvůrce
Avatar
Michal Kuba:22.2.2015 9:59

A ještě jednu prosbu bych měl. Mám stránku, na níž lze přes formulář vložit "článek"(inzerát). Přihlášenému uživateli chci dát možnost svůj inzerát smazat a editovat. Smazání je jednoduché, to mi funguje. Pro editaci jsem si vytvořil speciální php stránku, vypadající přesně jako stránka pro přidání nového inzerátu. Nedaří se mi ale samotné vypsání editovaného inzerátu a po zadání čehokoliv se inzerát nepřepíše ani neuloží.
PHP ošetřující vložení inzerátu (FUNGUJE):

$inzerat= array(
    'titulek'=>'',
    'text' => '',
    'kategorie' => '',
    'mesto' => '',
);
if ($_POST){
     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();

A PHP ošetřující úpravu inzerátu (NEFUNGUJE):

$inzerat= array(
    'titulek'=>'',
    'text' => '',
    'kategorie' => '',
    'mesto' => '',
);
if($_POST){
if (isset($_GET['ID'])){
    $nactenyInzerat = Db::queryOne('
                SELECT *
                FROM inzeraty
                WHERE ID=?
        ', $_GET['ID']);
       if ($nactenyInzerat)
$inzerat=$nactenyInzerat ;}
header('Location:administrace.php');

Měl jsem tam ještě více věcí, ale ani tak to nefungovalo. Máte nějaký nápad?

 
Odpovědět
22.2.2015 9:59
Avatar
Odpovídá na Michal Kuba
Michal Šmahel:22.2.2015 12:19

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ě).

Nahoru Odpovědět
22.2.2015 12:19
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Odpovídá na Michal Kuba
Neaktivní uživatel:22.2.2015 13:36

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? :)

Nahoru Odpovědět
22.2.2015 13:36
Neaktivní uživatelský účet
Avatar
Odpovídá na Michal Kuba
Neaktivní uživatel:22.2.2015 15:02

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 ;)

Nahoru Odpovědět
22.2.2015 15:02
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michal Šmahel:22.2.2015 15:53

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á.

Nahoru Odpovědět
22.2.2015 15:53
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Odpovídá na Michal Šmahel
Neaktivní uživatel:22.2.2015 16:02

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.

Nahoru Odpovědět
22.2.2015 16:02
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michal Šmahel:22.2.2015 16:16

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.

Nahoru Odpovědět
22.2.2015 16:16
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Michal Kuba
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Michal Kuba:25.2.2015 0:47

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?

 
Nahoru Odpovědět
25.2.2015 0:47
Avatar
Michal Kuba
Tvůrce
Avatar
Odpovídá na Michal Šmahel
Michal Kuba:25.2.2015 16:47

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';
}
 
Nahoru Odpovědět
25.2.2015 16:47
Avatar
Odpovídá na Michal Kuba
Neaktivní uživatel:25.2.2015 16:53

Máš tam malou chybičku ke konci. Data načítáš do proměnné $nactenyClanek, ale potom používáš jinou proměnnou $nactenyInzerat­... ;)

Nahoru Odpovědět
25.2.2015 16:53
Neaktivní uživatelský účet
Avatar
Michal Kuba
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Michal Kuba:25.2.2015 16:58

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. :/

 
Nahoru Odpovědět
25.2.2015 16:58
Avatar
Odpovídá na Michal Kuba
Neaktivní uživatel:25.2.2015 17:09

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 :D

var_dump($inzerat); // Vypíše obsah proměnné, abych se ujistil, že je vše správně.
Nahoru Odpovědět
25.2.2015 17:09
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.