NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
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 – Lekce 6 - NERS - Editor článků v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na michal.smatlak
michal.smatlak:15.2.2016 19:04

Zdravím. Tak nakoniec som sa na ten plugin vykašlal a rozhodol sa že to spravím klasicky. Ale potrebujem poradiť ako obrázky nahrať k danému článku do databázy samozrejme s určitými rozmermi a ako ich pri výpise článku zobraziť. Prosím Vás som začiatočník takže dajte mi k tomu aj zdroják. Za všetky rady vopred ĎAKUJEM. Potrebujem to súrne pretože ŠTVRTOK musím projekt odovzdať.

 
Odpovědět
15.2.2016 19:04
Avatar
Mark Vajšbejn:15.2.2016 19:29

Do databáze si přidej políčko 'image' a defaultně na něj hoď NULL - NULL jako NULL, né jako text, snad chápeš. :-D .. a do toho políčka z $_FILES variablu přidávej data do db takto .. samozřejmě obrázek i nahraj. Tohle je část pro databázi

$jmeno_souboru = time() + rand(0,100);

$file_name = basename($_FILES['name']);
$file_name = explode(".", $file_name);

$file_type = strtolower($file_name[1]);

$nazev_souboru_kterej_das_do_ty_db = $jmeno_souboru . "." $file_type;

a když budeš získávat obrázek k danýmu článku, tak budeš získávat i to pole 'image' z databáze a v případě že

($data_z_db['image'] != null)

tak si nastyluješ místo na obrázek a -> <img src="../ta/hlav­ni/cesta/k/ty/tvy/­slozce/kam/nah­ravas/obrazky<?= $data_z_db['i­mage']; ?>"> Což automaticky obrázek zobrazí, následně ho jen škáluj pomocí CSS, a parametry obrázku do db nedávej, je to blbost. Od toho máš stylování. Jo, a mimochodem, to $jmeno_souboru - respektive tahle proměnná kterou jsi si definoval na hoře - bylo by super i pod tímhle ten soubor uložit na server ;) Jinak se ti ten obrázek nenačte.

Snad jsi to nějak pobral. Jinak pro tohle si příště asi založ nějakej vlastní topic a směřuj sem - i když se mi stejně zdá že už seš offtopic, s tím že to nepoužíváš. (ten editor, ps: příspěvek jsem nečetl)

 
Odpovědět
15.2.2016 19:29
Avatar
Kristian Babic:10.4.2016 23:47

Prosím o pomoc, mám takýto kód a vyriešil som k novinkám aj obrázok no editor funguje len na pridávanie a nie na editovanie člankov, nechápem prečo kontrolujem riadok po riadku a nerozumiem tomu. V pohode pridá novú novinku ale vobec nechce už pridanu editovať. Vlastne edituje len obrázok nič viac. Vie niekto kde tam je chyba?

$clanek = array(
        'clanky_id' => '',
        'titulek' => '',
        'obsah' => '',
        'url' => '',
        'popisek' => '',
        'klicova_slova' => '',
                'datum' => '',

);
if ($_POST)
{
        if (!$_POST['clanky_id'])
        {
                $target_dir = "./img/uploads/";
                $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
                $uploadOk = 1;
                move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file);

                Db::query('
                        INSERT INTO clanky (titulek, obsah, url, popisek, klicova_slova, datum, obrazok)
                        VALUES (?, ?, ?, ?, ?, ?, ?)
                                                WHERE clanky_id=?
                ', $_POST['titulek'], $_POST['obsah'], $_POST['url'], $_POST['popisek'], $_POST['klicova_slova'], $_POST['datum'], $_FILES["fileToUpload"]["name"]);
        }
        else
        {
                if(!empty($_FILES["fileToUpload"]["tmp_name"])) {
                  $target_dir = "./img/uploads/";
                  $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
                  $uploadOk = 1;
                  move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file);
                  Db::query('
                        UPDATE clanky
                        SET obrazok=?
                        WHERE clanky_id=?
                ', $_FILES["fileToUpload"]["name"], $_POST['clanky_id']);
                }
                Db::query('
                        UPDATE clanky
                        SET titulek=?, obsah=?, url=?, popisek=?, klicova_slova=?, datum=?
                        WHERE clanky_id=?
                ', $_POST['titulek'], $_POST['obsah'], $_POST['url'], $_POST['popisek'], $_POST['klicova_slova'], $_POST['clanky_id'], $_POST['datum']);
        }
        header('Location: clankya.php?clanek=' . $_POST['url']);
        exit();
}
 
Odpovědět
10.4.2016 23:47
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Kristian Babic
Jan Lupčík:11.4.2016 6:23

Pokud používáš místní wrapper, tak hned 2 věci:

  1. Podívej se na tu třídu. Můžeš používat metody jako jsou insert nebo update.
  2. Parametry dotazu se přidávají v poli.

Tedy z tohoto:

  Db::query('
        UPDATE clanky
        SET obrazok=?
        WHERE clanky_id=?
', $_FILES["fileToUpload"]["name"], $_POST['clanky_id']);

vznikne toto:

Db::update('clanky', array('obrazok' => $_FILES["fileToUpload"]["name"]), 'WHERE clanky_id=?', array($_POST['clanky_id']));

Všimni si toho posledního pole, kde se předává ten parametr v poli, i když je pouze jeden. :)

Odpovědět
11.4.2016 6:23
TruckersMP vývojář
Avatar
Kristian Babic:12.4.2016 0:24

Áno pokiaľ chápem tak sme si len zjednodušili ten kód čo sme mali? alebo sa mýlim?

a áno pužívam wrapper z tadiaľto.

No a k tomu kódu ak by to nebolo len zjednodušené tak som to skúšal a tiež to nefunguje, nemôže byť problém v tomto:

else
       {
               if(!empty($_FILES["fileToUpload"]["tmp_name"])) {
                 $target_dir = "./img/uploads/";
                 $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
                 $uploadOk = 1;
                 move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file);
                 Db::query('
                       UPDATE clanky
                       SET obrazok=?
                       WHERE clanky_id=?
               ', $_FILES["fileToUpload"]["name"], $_POST['clanky_id']);
               }
               Db::query('
                       UPDATE clanky
                       SET titulek=?, obsah=?, url=?, popisek=?, klicova_slova=?, datum=?
                       WHERE clanky_id=?
               ', $_POST['titulek'], $_POST['obsah'], $_POST['url'], $_POST['popisek'], $_POST['klicova_slova'], $_POST['clanky_id'], $_POST['datum']);
       }

Keďže mi edituje len obrázky a zvyšok nie tak som rozmýšlal že tie metody sa prekrývaju a skúšal som ich aj spojiť ale nefunguje to ani tak. A aj po tvojom zjednodušení to funguje rovnako na tom že editor dokáže editovat len obázok a nič iné.

Alebo je môžnosť že tomu stále dobre nechápem a robím dačo zle. :(

Samozrejme keď som upravil kód na tento:

else
        {
                if(!empty($_FILES["fileToUpload"]["tmp_name"])) {
                  $target_dir = "./img/uploads/";
                  $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
                  $uploadOk = 1;
                  move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file);
                 Db::update('clanky', array('obrazok' => $_FILES["fileToUpload"]["name"]), 'WHERE clanky_id=?', array($_POST['clanky_id'])); <!-- tu je zmena -->
                Db::query('
                        UPDATE clanky
                        SET titulek=?, obsah=?, url=?, popisek=?, klicova_slova=?, datum=?
                        WHERE clanky_id=?
                ', $_POST['titulek'], $_POST['obsah'], $_POST['url'], $_POST['popisek'], $_POST['klicova_slova'], $_POST['clanky_id'], $_POST['datum']);
        }

Tak to bolo rovnaké, ešte ma napadá že mám aj tu druhú metódu zmeniť na update?

Editováno 12.4.2016 0:26
 
Odpovědět
12.4.2016 0:24
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Kristian Babic
Jan Lupčík:12.4.2016 6:56

Ano, i tu druhou změň. Jak jsem psal, parametry do dotazu musí být v poli. Což to první zjednodušení na konci má (poslední parametr metody update).

Odpovědět
12.4.2016 6:56
TruckersMP vývojář
Avatar
Martin Kapička:13.4.2016 13:20

má tu takový malý problém když se chci přihlásit tak mi to píše
Warning: PDO::prepare(): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'uzivatele_id' in 'field list' in C:\xampp\htdoc­s\jachting\Db­.php on line 60

Fatal error: Call to a member function execute() on boolean in C:\xampp\htdoc­s\jachting\Db­.php on line 61

a píše mi to pořád i když nic nezadám nebo zadám neexistujícího uživatele
stránku mam takto:

<?php
session_start();
require('Db.php');
Db::connect('127.0.0.1', 'jachting', 'root', '');

if (isset($_SESSION['uzivatel_id']))
{
        header('Location: admin.php');
        exit();
}

if ($_POST)
{
        $uzivatel = Db::queryOne('
                SELECT uzivatele_id, admin
                FROM uzivatele
                WHERE jmeno=? AND heslo=SHA1(?)
        ', $_POST['jmeno'], $_POST['heslo'] . "t&#ssdf54gh");
        if (!$uzivatel)
                $zprava = 'Neplatné uživatelské jméno nebo heslo';
        else
        {
                $_SESSION['uzivatel_id'] = $uzivatel['uzivatele_id'];
                $_SESSION['uzivatel_jmeno'] = $_POST['jmeno'];
                $_SESSION['uzivatel_admin'] = $uzivatel['admin'];
                header('Location: admin.php');
                exit();
        }
}
?>

samozdřeme podtím html s přihlašováním. díky za radu

Odpovědět
13.4.2016 13:20
Just because you can does not mean you should.
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Martin Kapička
Jan Lupčík:13.4.2016 16:26

Neexistuje sloupec uzivatele_id (metoda Db::queryOne()).

Odpovědět
13.4.2016 16:26
TruckersMP vývojář
Avatar
Odpovídá na Jan Lupčík
Martin Kapička:13.4.2016 19:53

supr diky uz to mam

Odpovědět
13.4.2016 19:53
Just because you can does not mean you should.
Avatar
Lukáš Hypša:22.5.2016 19:17

Do prihlaseni.php jsem zkopíroval oba zdrojáky z článku, po pokusu o přihlášeni (ať už se správným nebo špatným heslem) mi vyskočí tato chyba. Nevíte někdo co s tím? :(

 
Odpovědět
22.5.2016 19:17
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 10 zpráv z 119.