Autor | Zpráva | ||
---|---|---|---|
Kos112567 Profil |
#1 · Zasláno: 3. 4. 2015, 17:07:56
Ahoj,
měl bych problém s databází - připojuji ke stránce index tabulky z názvem "novinky" a ostatní články jsou z tabulky "clanky" - clanky fungují Nicméně když si vytvořím nějakou novinky v tabulce "novinky", nepropisuje se mi její obsah do section Zde je připojení: <?php require('Db.php'); Db::connect('127.0.0.1', 'sokolmilicincz1', '', ''); 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::queryAll(' SELECT * FROM novinky WHERE url = ? ', 'novinky'); $titulek = "Vítejte na stránkách TJ Sokol Miličín"; } else { $clanek = Db::queryOne(' SELECT * FROM clanky WHERE url = ? ', $url); // Uložení do dvou proměnných $titulek = $clanek['titulek']; $obsah = $clanek['obsah']; } if (!$obsah) { if ($url != 'chyba') { header('Location: index.php?stranka=chyba'); exit(); } else die('Nebyl nalezen chybovy clanek'); } $stranka = isset($_GET["stranka"]) ? $_GET["stranka"] : ""; ?> A zde samotné zobrazení: <section> <h3><?= htmlspecialchars($titulek) ?></h3> <?= $obsah?> </section> Nevíte někdo, co tam mám blbě? Předem díky za rady! :) |
||
Alphard Profil |
#2 · Zasláno: 3. 4. 2015, 18:01:13
Novinky vabrané z databáze jsou uloženy do
$uvod , ale dále se s touto proměnnou nikde nepracuje.
|
||
Kos112567 Profil |
#3 · Zasláno: 3. 4. 2015, 18:06:41
Jo, máš pravdu...zkopíroval jsem to sem než jsem to upravil, nicméně když to mám takto
if ($url == 'index') { $clanek = Db::queryAll(' SELECT * FROM novinky WHERE url = ? ', 'novinky'); $titulek = "Vítejte na stránkách TJ Sokol Miličín"; |
||
Tomáš123 Profil |
#4 · Zasláno: 3. 4. 2015, 18:13:00
Kos112567:
Nikde nenapĺňaš premennú $obsah , takže na riadku 32 (v prvom príklade) sa vždy skočí do bloku podmienky. Ako sa to vyhodnotí už nie je podstatné. Pridaj do podmienky to, čo sa máš na riadku 28 a 29.
|
||
Kos112567 Profil |
#5 · Zasláno: 3. 4. 2015, 18:26:44
Nenaplňuji? Vždyť právě řádky 28 a 29 již podmínce jsou a ty právě naplňují $obsah, nebo ne?
Nebo jakou podmínku konkrétně máš na mysli? Tu na řádku 12? |
||
Tomáš123 Profil |
#6 · Zasláno: 3. 4. 2015, 18:37:36
Kos112567:
Na riadku 28 a 29 napĺňaš podmienku, do ktorej sa vstúpi ak sa url != 'index' . V bloku url == 'index' ti toto priradenie chýba.
Z tvojej vety v prvom príspevku som vydedukoval, že články fungujú, teda, že ich obsah sa zobrazuje správne: „připojuji ke stránce index tabulky z názvem "novinky" a ostatní články jsou z tabulky "clanky" - clanky fungují“ Ďalej píšeš: „Nicméně když si vytvořím nějakou novinky v tabulce "novinky", nepropisuje se mi její obsah do section“. Predpokladal som, že novinky sa vypisujú na indexovú stránku (t.j. blok podmienky na riadku 12, kde ti chýba priradenie do premennej $obsah ).
Navyše na tvojej stránke sa napríklad článok archívu normálne načíta. |
||
Kos112567 Profil |
#7 · Zasláno: 3. 4. 2015, 19:07:31
Jo, říkáš to dobře - články fungují, ale novinky (které se vypisují na ten index) ne
Asi jsem blbej, ale pořád tě jaksi nepobírám... :D Na řádcích 28 a 29 naplňuji proměnné, protože se vyplní if ($url == 'index') |
||
Tomáš123 Profil |
#8 · Zasláno: 3. 4. 2015, 19:19:32
Kos112567:
Tu je zjednodušený model priraďovania obsahu do premenných: if ($url == 'index') { //ak ide o indexovú stránku $titulek = "Vítejte na stránkách TJ Sokol Miličín"; //nastavený titulok, ale chýba definícia obsahu } else { $titulek = $clanek['titulek']; //nastavený titulok $obsah = $clanek['obsah']; //nastavený obsah } |
||
Kos112567 Profil |
#9 · Zasláno: 3. 4. 2015, 20:44:15
Aha, už tě asi chápu :)
takže takto? if ($url == 'index') { $clanek = Db::queryAll(' SELECT * FROM novinky WHERE url = ? ', 'novinky'); $obsah = $clanek['obsah']; $titulek = "Vítejte na stránkách TJ Sokol Miličín"; } else { $clanek = Db::queryOne(' SELECT * FROM clanky WHERE url = ? ', $url); // Uložení do dvou proměnných $titulek = $clanek['titulek']; $obsah = $clanek['obsah']; bohužel to stále nefunguje... |
||
Alphard Profil |
#10 · Zasláno: 3. 4. 2015, 21:15:37
Lepší, ale hádám, že
queryAll() vrátí na rozdíl od queryOne() vícerozměrné pole.
|
||
Kos112567 Profil |
#11 · Zasláno: 3. 4. 2015, 21:21:16
Myslel jsem, že queryAll() vrací všechny řádky v tabulce...
|
||
Časová prodleva: 5 dní
|
|||
Kos112567 Profil |
#12 · Zasláno: 8. 4. 2015, 12:45:09
Alphard:
Jak jsi teda myslel více rozměrné pole? Nějak takhle? $clanky = Db::queryAll(' SELECT * FROM clanky WHERE url IN (?, ?, ?) ', $url1, $url2, $url3); A pak to zobrazím tak? Článek 1: <?= $clanky[0]['obsah'] ?> Článek 2: <?= $clanky[1]['obsah'] ?> To mi asi nepřijde jako úplně nejlepší řešení - když těch novinek bude 20, tak budu mít 20 proměnných? |
||
Tomáš123 Profil |
#13 · Zasláno: 8. 4. 2015, 13:22:28
Kos112567:
Môžeš to pole prejsť cyklom. Budeš naraz zvyšovať ukazateľ v poli a číslo článku. |
||
Kos112567 Profil |
#14 · Zasláno: 9. 4. 2015, 14:58:04
For teda bude i v tom ifu?
Nebo nebyl bys tak hodný a neukázal by jsi mi to? Nějak se v tom ztrácím... :D |
||
Tomáš123 Profil |
Kos112567:
$i = 1; while($clanky = mysqli_fetch_array(mysqli_query($connection, $sql))) { echo "Článok $i: $clanky[$i]['obsah']"; $i++ } mysqli_fetch_array() . Snáď je z toho vidieť môj zámer. Pre prípadné problémy s prerábaním sa, prosím, obráť na ostatných členov fóra. Ospravedlňujem sa.
|
||
juriad Profil |
#16 · Zasláno: 9. 4. 2015, 15:47:37
Tomáš123:
Chyba. Nesmíš spouštět mysqli_query opakovaně. $i = 1; $vysledek = mysqli_query($connection, $sql); while($clanky = mysqli_fetch_array($vysledek)) { echo "Článok $i: " . $clanky[$i]['obsah']; $i++ } |
||
Časová prodleva: 8 dní
|
|||
Kos112567 Profil |
#17 · Zasláno: 17. 4. 2015, 11:05:35
A kam konkrétně mám tyto řádky umístit do kódu? :)
|
||
lionel messi Profil |
#18 · Zasláno: 17. 4. 2015, 14:03:03
Kos112567:
„A kam konkrétně mám tyto řádky umístit do kódu?“ Tam, kde chceš realizovať výpis. Čiže po pripojení k db a ďalšej logike na to potrebnej (napr. až po zostavení SQL dotazu $sql ). Ak stále netušíš, koľká bije, ukáž celý kód.
|
||
Časová prodleva: 5 dní
|
|||
Kos112567 Profil |
#19 · Zasláno: 22. 4. 2015, 17:43:18
Bohužel ne :/
Kód vypadá takto: <?php require('Db.php'); Db::connect('127.0.0.1', 'sokolmilicincz1', 'sokolmilicin.cz', 'heslo'); 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') { $clanek = Db::queryAll(' SELECT * FROM novinky WHERE url = ? ', 'novinky'); $obsah = $clanek['obsah']; $titulek = "Vítejte na stránkách TJ Sokol Miličín"; } else { $clanek = Db::queryOne(' SELECT * FROM clanky WHERE url = ? ', $url); // Uložení do dvou proměnných $titulek = $clanek['titulek']; $obsah = $clanek['obsah']; } if (!$obsah) { if ($url != 'chyba') { header('Location: index.php?stranka=chyba'); exit(); } else die('Nebyl nalezen chybovy clanek'); } $stranka = isset($_GET["stranka"]) ? $_GET["stranka"] : ""; ?> <!DOCTYPE html> <html lang="cs-cz"> <head> <meta charset="utf-8" /> <meta name="description" content="<?= htmlspecialchars($clanek['popisek']) ?>" /> <meta name="keywords" content="<?= htmlspecialchars($clanek['klicova_slova']) ?>" /> <link rel="stylesheet" href="styl.css" type="text/css" /> <link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" /> <script src="js/jquery-1.7.2.min.js"></script> <script src="js/jquery-ui-1.8.18.custom.min.js"></script> <script src="js/jquery.smooth-scroll.min.js"></script> <script src="js/lightbox.js"></script> <title>Web o TJ Sokol Miličín</title> </head> <body> <!-- kontejner --> <div id="kontejner"> <div id="hlavicka"> <header> <a href="index.php"><div id="logo" ><h1>Sokol Miličín</h1></div></a> <nav> <ul> <li<?php if($stranka == "index") echo " class=\"aktivni\""?>><a href="index.php">Domů</a></li> <li<?php if($stranka == "dok") echo " class=\"aktivni\""?>><a href="index.php?stranka=dok">Dokumenty</a></li> <li<?php if($stranka == "sport") echo " class=\"aktivni\""?>><a href="index.php?stranka=sport">Sport</a></li> <li<?php if($stranka == "kul") echo " class=\"aktivni\""?>><a href="index.php?stranka=kul">Kultura</a></li> <li<?php if($stranka == "foto") echo " class=\"aktivni\""?>><a href="index.php?stranka=foto">Fotogalerie</a></li> <li<?php if($stranka == "hist") echo " class=\"aktivni\""?>><a href="index.php?stranka=hist">Historie</a></li> <li<?php if($stranka == "arch") echo " class=\"aktivni\""?>><a href="index.php?stranka=arch">Archiv</a></li> </ul> </nav> </header> </div> <article> <div id="levy_prvek"> <header> <h1>Header</h1> <div class="contacts"> <h2 class="kontakty">Kontakty</h2> <p>asdasdasd</p> <p>asdasdasd</p> <p>asdasdasd</p> <p>asdasdasd</p> <p>asdasdasd</p> </div> </header> </div> <div id="obsah"> <div id="centrovac"> <section> <h3><?= htmlspecialchars($titulek) ?></h3> <?= $obsah?> </section> </div> <div class=" pravy_prvek"> <iframe src="https://www.google.com/calendar/embed?showTitle=0&showPrint=0&showTabs=0&showCalendars=0&showTz=0&height=260&wkst=2&hl=cs&bgcolor=%23cccccc&ctz=Europe%2FPrague" style=" border:solid 1px #777 " width="210" height="260" frameborder="0" scrolling="no"></iframe> </div> <div class="cistic"></div> </article> </div> </div> <div id="paticka"> <footer> Copyright © 2015<br> <a href="administrace.php">Administrace</a> Michal Koreš </footer> </div> </body> </html> |
||
Časová prodleva: 9 let
|
0