Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
Avatar
wilddragon
Člen
Avatar
wilddragon:16. července 2:34

Zdravím, nedávno som si vytvoril web a pridal som si tam administráciu rzp. editor článkov podľa tutorialu Databáze v PHP pro začátečníky a všetko mi ide akurát keď pridám viac článkov tak mi zobrazí len jeden a to ten s url uvod a neviem ako spraviť aby mi vypísalo na web všetky články, máte nejaké návrhy ako to spraviť.. za odpoveď vopred ďakujem.
Tu je kód

<?php

require('Db.php');
Db::connect('', '', '', '');

if (isset($_GET['clanek']))
        $url = $_GET['clanek'];
else
        $url = 'uvod';

$clanek = Db::queryOne('
        SELECT *
        FROM clanky
        WHERE url=?
', $url);
if (!$clanek)
{
        if ($url != 'chyba')
        {
                header('Location: index.php?clanek=chyba');
                exit();
        }
        else
                die('Nebyl nalezen chybovy clanek');
}

?>
html časť
      <article>
      <header>
      <h4><?= htmlspecialchars($clanek['titulek']) ?></h4>
      </header>
      <section>
       <?= $clanek['obsah'] ?>
      </section>
      <div class="cistic"></div>
      </article>
Odpovědět 16. července 2:34
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
Avatar
Odpovídá na wilddragon
Michal Štěpánek:16. července 10:22

Když budeš mít v tom dotazu podmínku

$clanek = Db::queryOne('
        SELECT *
        FROM clanky
        WHERE url=?
', $url);

která ti výsledek dotazu omezí jen na ten článek s "tím" URL, tak se ti jiné články zobrazit nemohou.

Nahoru Odpovědět  +1 16. července 10:22
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
wilddragon
Člen
Avatar
Odpovídá na Michal Štěpánek
wilddragon:16. července 13:03

Aha takže stačí keď tu podmienku zmažem takto ako to mám tu ? lebo keď som to skúsil takto tak sa mi žiadny článok nezobrazil.. vedel by si mi poradiť ako to správne zapísať.. za odpoveď ďakujem

<?php

require('Db.php');
Db::connect('', '', '', '');

if (isset($_GET['clanek']))
        $url = $_GET['clanek'];

?>
Nahoru Odpovědět 16. července 13:03
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
Avatar
Odpovídá na wilddragon
Michal Štěpánek:16. července 13:26

Podmínka je jen to

WHERE url =?
Nahoru Odpovědět 16. července 13:26
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
wilddragon
Člen
Avatar
Odpovídá na Michal Štěpánek
wilddragon:16. července 20:11

aha no ale keď odstránim "WHERE url=?" tak mi to zas vypíše že chybový článok nebol nájdený.. nemohol by si mi to prosím napísať presne ten kód ako na to fakt si neviem s tým rady..
momentálne to mám takto

<?php

require('Db.php');
Db::connect('', '', '', '');

if (isset($_GET['clanek']))
        $url = $_GET['clanek'];
else
        $url = 'uvod';

$clanek = Db::queryOne('
        SELECT *
        FROM clanky
', $url);
if (!$clanek)
{
        if ($url != 'chyba')
        {
                header('Location: index.php?clanek=chyba');
                exit();
        }
        else
                die('Nebyl nalezen chybovy clanek');
}

?>
Nahoru Odpovědět 16. července 20:11
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
Avatar
Lukáš Hornych
Redaktor
Avatar
Odpovídá na wilddragon
Lukáš Hornych:16. července 22:09

Pokud sis projel celý seriál jak píšeš, určitě si narazil na článek, který je věnovaný právě výpisu článků -> https://www.itnetwork.cz/…php-tutorial

Editováno 16. července 22:09
 
Nahoru Odpovědět 16. července 22:09
Avatar
wilddragon
Člen
Avatar
Odpovídá na Lukáš Hornych
wilddragon:16. července 22:47

No na tento som narazil ale neviem ako spraviť aby sa mi vypisovali všetky články a to som už toho skúsil dosť veľa fakt neviem čo mám spraviť aby mi to šlo.. skúsil som ešte niečo také ale to tiež nejde..

$clanky = Db::queryAll('
        SELECT *
        FROM clanky
        ORDER BY clanky_id DESC
');
?>
HTML
<article>
                                <header>
                                        <h1><?= htmlspecialchars($clanek['titulek']) ?></h1>
                                </header>

                                <section>
                                        <?= $clanek['obsah'] ?>
                                </section>
                                <div class="cistic"></div>
                </article>
Nahoru Odpovědět 16. července 22:47
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
Avatar
Lukáš Hornych
Redaktor
Avatar
Odpovídá na wilddragon
Lukáš Hornych:16. července 22:53

Když si ten článek projdeš ještě jednou, tak zjistíš, že na výpis všech článků potřebuješ použít funkci foreach, která ti projde pole se všemi články a každý zvlášť vypíše. Navíc v tomto kódu ani nepracuješ s tou příslušnou proměnou clanky.

 
Nahoru Odpovědět 16. července 22:53
Avatar
wilddragon
Člen
Avatar
Odpovídá na Lukáš Hornych
wilddragon:16. července 23:20

Tak už som to viac menej vyriešil už sa mi vypisujú všetky články, ale problém je v tom že sú v jednom bloku respektíve chcem aby každý mal svoj rám "section" aj aby mali svoj titul..

<article>
      <header>
 <?php
                                        foreach ( $clanky as $clanek ) {
echo ''.$clanek['titulek'];
}
                                ?>
      </header>
      <section>
<?php
                                        foreach ( $clanky as $clanek ) {
echo ''.$clanek['obsah'];
}
                                ?>
      </section>
      <div class="cistic"></div>
      </article>
Nahoru Odpovědět 16. července 23:20
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
Avatar
wilddragon
Člen
Avatar
wilddragon:16. července 23:56

Teda chcem aby sa každý vypísal tak ako si písal ty "zvlášť " a nie takto ako na screene..

Nahoru Odpovědět 16. července 23:56
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
Avatar
IT Man
Redaktor
Avatar
Odpovídá na wilddragon
IT Man:17. července 10:34

Tak uprav ten předchozí kód, ne? :)

<?php foreach ($clanky as $clanek) : ?>
        <article>
                <header><?= $clanek['titulek'] ?></header>
                <section><?= $clanek['obsah'] ?></section>
                <div class="cistic"></div>
        </article>
<?php endforeach ?>
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 17. července 10:34
Cokoliv a kdokoliv může jednou uspět.
Avatar
wilddragon
Člen
Avatar
Odpovídá na IT Man
wilddragon:17. července 15:23

Okej tak už mi to ide ako som chcel veľmi pekne ti ďakujem :)

Nahoru Odpovědět 17. července 15:23
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
Avatar
IT Man
Redaktor
Avatar
Odpovídá na wilddragon
IT Man:17. července 15:28

Není zač, snad všemu rozumíš. :)

Nahoru Odpovědět 17. července 15:28
Cokoliv a kdokoliv může jednou uspět.
Avatar
wilddragon
Člen
Avatar
Odpovídá na IT Man
wilddragon:18. července 1:20

No dá sa povedať že áno, a ešte mám jednu otázku ako spravím že mi bude ukazovať autora článku, za odpoveď ďakujem.

Nahoru Odpovědět 18. července 1:20
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
Avatar
dez1nd
Člen
Avatar
Odpovídá na wilddragon
dez1nd:18. července 6:55

Pokud je autor součástí článku stejně jako titulek a obsah článku tak jednoduše

<?= $clanek['autor'] ?>
Editováno 18. července 6:56
 
Nahoru Odpovědět  +2 18. července 6:55
Avatar
wilddragon
Člen
Avatar
Odpovídá na dez1nd
wilddragon:18. července 16:32

Ďakujem veľmi mi to pomohlo keďže som začiatočník v php tak neviem čo a ako, a ešte by som mal takú otázku že ako spravím aby sa autor nemusel podpisovať ale že by to automatiky vložilo autora podľa toho aký má nick.. za odpoveď ďakujem :)

Nahoru Odpovědět 18. července 16:32
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
Avatar
wilddragon
Člen
Avatar
wilddragon:18. července 18:46

Tak už som to vyriešil a to tak že som danému riadku nastavil vlastnosť "hidden" a do value som napísal

<input type="hidden" name="autor" value="<?= htmlspecialchars($_SESSION['uzivatel_jmeno']) ?><?= htmlspecialchars($clanek['autor']) ?>" /><br />
Nahoru Odpovědět 18. července 18:46
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
Avatar
jakubho
Člen
Avatar
Odpovídá na wilddragon
jakubho:26. července 19:14

Nevím, jak máš postavený zbytek webu, ale nedávno jsem řešil také systém článků a vyřešil jsem to způsobem, že mám databázi, ve které je titulek, článek samotný, bla bla bla a mimo jiné se tam uloží také jméno přihlášeného autora, který ten článek uložil (ten tahám ze SESSION, autor se musí přihlásit).

Jak vidím nahoře, tak to máš přes skrytý input, což mi nepřipadá úplně ideální... Určitě tam máš nějaký kód, který vezme vstup z inputů a uloží jej do do databáze, něco jako:

INSERT INTO tvojedatabáze (obsah, autor, datum) VALUES (?, ?, ?)

S tím, že obsah těch otazníků taháš z toho formuláře na webu pomocí něčeho jako $_POST["obsah"]. Pokud máš ale uživatele přihlášeného (což evidentně asi máš), nemusíš používat jen proměnné POST a GET, ale také můžeš otazník dosadit ze session, něco jako $_SESSION["user_na­me"]

Tvůj postup není ideální z toho důvodu, že i skryté inputy lze ve vývojářských nástrojích zobrazit a upravovat, a dalo by se to zneužít, prostě to není dobrá metoda, co jsem zatím tak pochytil. Ale nejsem žádný dobrý programátor, tak mě když tak někdo opravte, jestli se pletu.

Nahoru Odpovědět  +2 26. července 19:14
Chyba-Jediná jistota v životě programátora.
Avatar
wilddragon
Člen
Avatar
Odpovídá na jakubho
wilddragon:2. srpna 3:24

Zdravím, za tvou odpověď děkuji a máš tedy pravdu že to není ideální způsob jsem si to sám zkusil přepsat jméno v vývojářských nástrojích a fakt se to dá zneužít a třeba nevím jak bych to vyřešil jak si psal že to máš udělané ty, ale zatím mi to stačí mám to jen tak pro zábavu a také jsem začátečník v php takže nevím co a jak dělat nejlépe a za upozornění určitě děkuji.

Nahoru Odpovědět 2. srpna 3:24
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
Avatar
jakubho
Člen
Avatar
Odpovídá na wilddragon
jakubho:2. srpna 15:18

Nemáš zač :) Možná by jsi měl zkusit to opravit, chápu že ti to přijde ze začátku složité, ale to opravdu není. Prostě do toho SQL dotazu vlož proměnnou rovnou ze SESSION a zbytečně ji nescpi do POST nebo GET. Kdyby sis nevěděl rady sám a se strejdou Googlem, tak napiš a podíváme se na to ;-)

Nahoru Odpovědět  +1 2. srpna 15:18
Chyba-Jediná jistota v životě programátora.
Avatar
wilddragon
Člen
Avatar
Odpovídá na jakubho
wilddragon:8. srpna 3:53

No jako teď jsem dlouho nepracoval s php, takže jsem se v tom nějak ztratil, a nevím, jak by to mělo zhruba vypadat, co píšeš, když budeš tak hodný tak vlož zde kod, jak to má alespoň přibližně vypadat, za odpověď děkuji.

Nahoru Odpovědět 8. srpna 3:53
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
Avatar
wilddragon
Člen
Avatar
Odpovídá na jakubho
wilddragon:24. srpna 3:46

Zdravím, už jsem to vyřešil, ani jsem nevěděl, že je to také snadné, stačilo přepsat z kodu

$_POST['titulek']
na
$_SESSION['uzivatel_jmeno']

a všechno jde tak, jak jsem chtěl, a děkuji moc za varování. :)

Nahoru Odpovědět  +1 24. srpna 3:46
Život by byl mnohem snazší, kdybychom k němu měli zdrojové kódy.
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 22 zpráv z 22.