Autor Zpráva
Kos112567
Profil
Ahoj,

pokouším se vytvářet svůj vlastní "redakční systém"(neobjektový), v databázi mám tabulku "clanky", které pak umisťuji na web, potřebuji ale, aby na stránce "index.php" bylo více článků a v ostatních stránkách pouze jeden článek, sesmolil jsem (s pomocí) toto:

<?php

  require('Db.php');
  Db::connect('127.0.0.1', 'sokol_db', 'root', '');

  if (isset($_GET['stranka']))
          $url = $_GET['stranka'];
  else
          $url = 'index'; //když nebude definovan klic stranka, pouzije se index

 // Rozhodne se, co se má získat
      if ($url == 'index') {
          $uvod = Db::queryOne('
                  SELECT *
                  FROM clanky
                  WHERE url = ?
          ', 'uvod');
          $novinky = Db::queryOne('
                  SELECT *
                  FROM clanky
                  WHERE url = ?
          ', 'novinky');

          // Uložení do dvou proměnných
          $titulek = "Hlavní stránka webu.";
          $obsah = $uvod['obsah'] . "<br>" . $novinky['obsah']; // Zde dojde ke sloučení dvou článků
     } else {
          $clanek = Db::queryOne('
                  SELECT *
                  FROM clanky
                  WHERE url = ?
          ', $url);

          // Uložení do dvou proměnných
          $titulek = $clanek['titulek'];
          $obsah = $clanek['obsah'];
     }

  if (!$clanek)
  {
          if ($url != 'chyba')
          {
                  header('Location: index.php?stranka=chyba');
                  exit();
          }
          else
                  die('Nebyl nalezen chybovy clanek');
  }

  $stranka = isset($_GET["stranka"]) ? $_GET["stranka"] : "";
  ?>

nicméně když si vytvořím nový článek s url uvod nebo novinky, tak v indexu se mi propisuje pořád pouze článek 404 (chybové hlášení), ostatní stránky (kde je pouze jeden článek) fungují bez problémů...

Nemáte někdo tipy, co tam mám špatně?

Předem díky za odpovědi :)
petr 6
Profil
A kde prosim definujes promennou $clanky?
juriad
Profil
Na 39. řádku máš podmínku na proměnnou $clanky. Tu nikde nenastavuješ; takže !$clanky bude vždy true, tedy se vykoná blok řádků 40-48. Když jsi na indexu, tak se nerovná řetězci chyba a tedy se provede přesměrování na 43. řádku.

Proč to funguje na stránkách článků netuším. Hádám, že nám něco zatajuješ.
Kos112567
Profil
Pardon, má tam být samozřejmě $clanek, já ho tam mám akorát chyba při kopírování :)

Nicméně problém, který popisuju je s proměnnou $clanek
juriad
Profil
Pokud jsi na indexu, tak se proměnná $clanek nikdy nenastaví a zbytek je stejný, jako píšu výše.
Kos112567
Profil
Jakto že ne?

if ($url == 'index') {
          $uvod = Db::queryOne('
                  SELECT *
                  FROM clanky
                  WHERE url = ?
          ', 'uvod');
          $novinky = Db::queryOne('
                  SELECT *
                  FROM clanky
                  WHERE url = ?
          ', 'novinky');

zde bych měl mít napsané, že pokud url stránky je index, měli by z db vzít články z indexem uvod a novinky, ne?
juriad
Profil
Ano, ale proměnnou $clanek v té větvi ifu nikde nenastavuješ. Pracuješ jen s něčím, co ty nazýváš článek, ale PHP to nazývá pole jménem $uvod a pole jménem $novinky.
Kos112567
Profil
Jasně, už to chápu...tedy akorát stačilo místo $clanek poupravit na $obsah... :)

Díky moc!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: