Autor | Zpráva | ||
---|---|---|---|
Trickle Profil |
Ahoj prosím o pomoc. Učím se oop programování. Tvořím redakční system a v administraci mám nastavení ve kterém se bude měnit Název stránky, administrace a patičky zatím. Změna v <title> ale funguje jen když jsem aktivní v nastaveni.php pak když se překliknu třeba napsat novinku tak je titulek už notifikován že není nadefinována proměná a neplatný foreach. To je logické když je definován jinde. Ale jak docílit abych měl pořád titulky zobrazené v jakémkoliv souboru?
zobrazená chyba v jiné částí administrace třeba napsat novinku : Notice: Undefined variable: nastaveni in D:\server\root\admin\sablony\vkladane\zahlavi.php on line 4 Warning: Invalid argument supplied for foreach() in D:\server\root\admin\sablony\vkladane\zahlavi.php on line 4 zahlavi.php <!DOCTYPE html> <html lang="cs"> <head> <meta charset="UTF-8" /> <title>CSLP s.r.o. | Administrace</title> <meta name="viewport" content="width=device-width", initial-scale=1.0" /> <link href="/verejne/css/bootstrap.min.css" rel="stylesheet" media="screen" /> <link href="/verejne/css/Markdown.css" rel="stylesheet" media="screen" /> <link href="/verejne/css/base.css" rel="stylesheet" media="screen" /> </head> <body> <table cellpadding=0 cellspacing=0 border=0> <tr> <td WIDTH=125 valign=top> <img src="../images/1px.gif" width=125 height=1 vspace=2><br><br><br><br><br> <?php if(!empty($navigace)): ?> <nav class="navbar navbar-default" role="navigation"> <div class="container-fluid"> <center><b><u>Nastaveni</u></b><br></center> <a href="<?php echo $this->zaklad->url . 'nastaveni.php'; ?>" class="bnt btn-sm"><span class="glyphicon glyphicon-plus"></span> Nastavení</a> <?php if ($navigace == 'nastaveni'): ?> <?php endif; ?> <br><br> <center><b><u>Novinky</u></b><br></center> <a href="<?php echo $this->zaklad->url . 'novinky.php?akce=pridej'; ?>" class="bnt btn-sm"><span class="glyphicon glyphicon-plus"></span> Přidat Novinku</a> <?php if ($navigace == 'novinky'): ?> <?php endif; ?> <br> <a href="<?php echo $this->zaklad->url . 'novinky.php'; ?>"> <span class="glyphicon glyphicon-list"></span> Příspěvky</a> <?php if ($navigace == 'komentare'): ?> <?php endif; ?> <br> <a href="<?php echo $this->zaklad->url . 'komentare.php'; ?>"> <span class="glyphicon glyphicon-comment"></span> Komentáře</a> <br><br><br> <a href="<?php echo $this->zaklad->url . 'prihlaseni.php?stav=odhlasit'; ?>"> <span class="glyphicon glyphicon-log-out"></span> Odhlasit</a> </div> </nav> </td> <?php endif; ?> nastaveni.php <?php require_once('administrace.php'); require_once('../funkce/MarkdownInterface.php'); require_once('../funkce/Markdown.php'); class Nastaveni extends Administrace { public function __construct() { parent::__construct(); if (!empty($_GET['akce'])){ switch ($_GET['akce']){ case 'uloz': $this->ulozNastaveni(); break; default: $this->vypisNastaveni(); break; } } else { $this->vypisNastaveni(); } } public function vypisNastaveni() { $nastaveni = $this->db->vyber('nastaveni', array('*')); require_once 'sablony/sprava-nastaveni.php'; } public function upravNastaveni() { if (!empty($_GET['id']) && is_numeric($_GET['id'])) { $nastaveni = $this->db->vyber('nastaveni', array('*'), array('id' => $_GET['id'])); $nastavena = $nastaveni[0]; require_once 'sablony/sprava-nastaveni.php'; } } public function ulozNastaveni() { $data = array(); $podminka = array(); if (!empty($_POST['nastavena'])) { $nastavena = $_POST['nastavena']; } if (!empty($nastavena['nazev_stranky'])){ $data['nazev_stranky'] = $nastavena['nazev_stranky']; } if (!empty($nastavena['nazev_administrace'])) { $data['nazev_administrace'] = $nastavena['nazev_administrace']; } if (empty($podminka)){ $ulozeno = $this->db->aktualizuj('nastaveni', $data); } else { $ulozeno = $this->db->aktualizuj('nastaveni', $data, $podminka); } if ($ulozeno !==false){ $oznameni = 'Nastavení bylo úspěšně uloženo.'; header('Location: ' . $this->zaklad->url . 'nastaveni.php?oznameni=' . urlencode($oznameni)); exit(); } else { $chyba = 'Nepodařilo se uložit nastavení.' + 'Zkuste to prosím později.'; require_once 'sablony/sprava-nnastaveni.php'; } } } $adminNastaveni = new Nastaveni(); ?> |
||
Trickle Profil |
Trickle:
sprava-nastaveni.php <?php $navigace = 'nastaveni'; require_once('vkladane/zahlavi.php'); ?> <form action="<?php echo $this->zaklad->url . 'nastaveni.php?akce=uloz'; ?>" method="post" class="form-horizontal" role="form"> <td valign=top width=7><img src="../images/1px.gif" width=7 height=1></td> <td WIDTH="100%" valign=top> <img src="../images/1px.gif" width=1 height=5><br> <table class="table table-striped" > <thead> <tr> <td><b><u>Titulek: </u></b></td> <td><b><u>Editace </u></b></td> <td><b><u> </u></b></td> </tr> </thead> <tbody> <?php require_once('../funkce/sablony/oznamovaci-oblast.php'); ?> <?php foreach ($nastaveni as $nastavena): ?> <tr> <td><h4><?php echo (!empty($nastavena['nazev_stranky']) ? htmlspecialchars($nastavena['nazev_stranky']) : 'nazev_stranky #' . $nastavena['nazev_stranky']); ?> </h4></td> <td> <div class="form-group"> <div class="col-md-6"> <label for="nadpis">Nadpis</label> <input type="text" name="nastavena[nazev_stranky]" id="nazev_stranky" value="<?php echo $nastavena['nazev_stranky']; ?>" class="form-control" placeholder="Název stránky" /> </div> </div></td> <td> </td> </tr> <tr> <td><h4><?php echo (!empty($nastavena['nazev_administrace']) ? htmlspecialchars($nastavena['nazev_administrace']) : 'administrace #' . $nastavena['nazev_administrace']); ?> </h4></td> <td> <div class="form-group"> <div class="col-md-6"> <label for="nadpis">Nadpis</label> <input type="text" name="nastavena[nazev_administrace]" id="nazev_administrace" value="<?php echo $nastavena['nazev_administrace']; ?>" class="form-control" placeholder="Název administrace" /> </div> </div></td> <td> </td> </tr> <tr> <td><h4><?php echo (!empty($nastavena['paticka']) ? htmlspecialchars($nastavena['paticka']) : 'paticka #' . $nastavena['paticka']); ?> </h4></td> <td> <div class="form-group"> <div class="col-md-6"> <label for="nadpis">Nadpis</label> <input type="text" name="nastavena[paticka]" id="paticka" value="<?php echo $nastavena['paticka']; ?>" class="form-control" placeholder="Nadpis patičky" /> </div> </div></td> <td> </td> </tr> <?php endforeach; ?> </tbody> </td></tr> </table> <button type="submit" class="btn btn-default">Uložit novinku</button> <div class="col-md-5" style="padding-left: 20px; border-left: 1px solid #eee;"> <div id="wmd-preview" class="wmd-panel wmd-preview"></div> </div> </div> </form> </td> </tr> </table> <?php require_once('vkladane/zapati.php'); ?> |
||
Amunak Profil |
#3 · Zasláno: 13. 5. 2018, 12:35:07
Nechci tě úplně odrazovat od tvého přístupu, ale když se snažíš o OOP měl bys možná nastudovat i jak se "běžně" (MVC) frameworky na stavění redakčních systémů a podobných věcí vytváří.
Když to hodně zjednoduším, hodně by ti pomohlo kdybys používal jen jeden vstupní soubor (typicky nějaký app.php nebo index.php) který přijímá všechny requesty, má v sobě require_once na nastavení a podobné "nutné" věci, a podle parametrů které dostane pak načte konkrétní stránku. Nemusel bys pak řešit že ti třeba nastavení nebo něco podobného někde chybí.
Součástí takového systému pak většinou bývá i nějaký autoloader na automatické načítání tříd (to se v OOP docela hodí) a nějaký správce servis (dependency injection) který ti umožní prakticky kdekoliv načíst funkcionalitu (třídu) kterou potřebuješ; tzn. když máš třeba třídu na generování titulků, prakticky kdekoliv ji můžeš získat a titulek nechat vygenerovat. |
||
Časová prodleva: 15 dní
|
|||
Trickle Profil |
#4 · Zasláno: 28. 5. 2018, 16:37:54
Amunak:
Díky za reakci. Vyřešil jsem to i když asi ne programátorsky správně. Vytvořil jsem si novou třídu Nastavení v té získávám informace z db ohledně Názvu stránky, Názvu administrace a popisu v patičce. Odkud následně posílám do vzhledu indexu nebo administrace. No zatím je pro mě důležité že to funguje. |
||
Kcko Profil |
#5 · Zasláno: 28. 5. 2018, 16:50:21
Trickle:
Čím víc budeš dělat složitější věci, tím víc Ti toho nebude fungovat. Tohle cos stvořil s OOP nemá moc společného (něco málo sis zabalil jakože do objektu), ale je to ošklivá špagetárna. Dej na doporučení a podívej se jak se to skutečně dělá viz [#3] Amunak |
||
Časová prodleva: 6 let
|
0