Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Zobrazovanie článku

PHP PHP Zobrazovanie článku American English version English version

Aktivity (1)
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
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
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
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
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
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
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
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
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
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
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 17 zpráv z 17.