NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Složitější? výpis z MySQL

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
kom72
Člen
Avatar
kom72:25.2.2016 21:23

Ahoj,
chtěl bych vás požádat o pomoc s nasměrováním, jak zprovoznit výpis fotek z databáze (obsazene v tabulce FOTOGRAFIE) vypsane pomocí

WHERE

dle definované kategorie v teto tabulce. To je navázané na generovaném odkaze, který se vypisuje z jiné tabulky (KATEGORIE). Neumím to lépe popsat.

Mám stranku: kategorie.php, kam se vypisují z MySQL kategorie fotek. Po kliknutí na nějakou "Kategorii" fotek, se mi načte dalsi stranka: kategorie_vypis­.php, kde bych chtel, at se zobrazí pomoci dotazu

WHERE

zvolena kategorie fotek.

Problem je, ze odkaz na jednotlive kategorie je generovany, tedy jen jeden a neumim na nej navazat vice dotazu na vice kategorií... Snad to rozumne vysvetluji.

<h1>
    <?php echo $row_kategorie_vypis['kategorie_nazev']; ?>
</h1>
<p class="kategorie_popis">
    <?php echo $row_kategorie_vypis['kategorie_popis']; ?>
</p>

    <?php do { ?>
      <img class="fotogalerie stin" src="fotky/<?php echo $row_kategorie_fotky['kategorie']; ?>/<?php echo $row_kategorie_fotky['fotka']; ?>_nahled.jpg" alt="">
      <?php } while ($row_kategorie_fotky = mysql_fetch_assoc($kategorie_fotky)); ?>

živý náhled: http://www.kom72.cz/index.php?…

 
Odpovědět
25.2.2016 21:23
Avatar
Odpovídá na kom72
Neaktivní uživatel:26.2.2016 14:42

Takže chceš vypsat fotografie z více kategorií?

Nahoru Odpovědět
26.2.2016 14:42
Neaktivní uživatelský účet
Avatar
kom72
Člen
Avatar
Odpovídá na Neaktivní uživatel
kom72:26.2.2016 16:04

nee, jen z jedné. vzdy z te na kterou se klikne. otevre se stranka kategorie_vypis­.php, coz ted normalne funguje, ale ja do te jedne šablonové stranky neumim priradit prislusne fotky z kategorie. Ted jsou tam vypsane vsechny co mam zatim zkusebne v DB.

Editováno 26.2.2016 16:07
 
Nahoru Odpovědět
26.2.2016 16:04
Avatar
kom72
Člen
Avatar
kom72:26.2.2016 16:12

puvodne jsem to mel tak, ze jsem mel v kategorie. php natvrdo pres html vytvorene vsechny kategorie a odkazama na ne, jsem volal stranku napr. alpy.php nebo ceske_stredoho­ri.php atd... Vypis fotek na těhle strankach podle kategorie uz nebyl problem.
/Problem je, kdyz to mam delat vse na jedne strance. Netusim, jestli to co chci je spravne, ale prijde mi logicke, ze by to melo jít vse generovat na te jedne strance kategorie_vypis.php

 
Nahoru Odpovědět
26.2.2016 16:12
Avatar
Odpovídá na kom72
Mark Vajšbejn:26.2.2016 17:39

Na té stránce kategorie.php vypisuješ názvy kategorie, tak než půjdu dál, tak bych rád podotknul, že by bylo super si do tabulky s KATEGORIEMI přidat nějaké to pole 'systémový název kategorie' nebo využívat ID dané kategorie - taky možnost a následně k odkazu na danou kategorii (odkaz na kategorie_vypis­.php) si přidat na konec ?nazev_katego­rie=dane_id_ne­bo_"systemovej_na­zev"_kategorie a následně na stránce kategorie_vypis­.php pomocí $_GET-u na ['nazev_katego­rie'] požadovat požadovanou (jo je to divně napsaný :-D) kategorii a pomocí ní vytvořit dotaz na fetch obrázků

WHERE 'systémový název kategorie' = $_GET['nazev_kategorie']

No, snad jsem pobral co jsi chtěl. :D
Jinak.. tvůj poslední komentář - ano, je 100% lepší mít vše na jedné stránce. Je to flexibilní - jen se něco přidá do databáze (viz. uváděný systémový název kategorie) a výpis funguje furt stejně, jen s políčkem na víc. :)

 
Nahoru Odpovědět
26.2.2016 17:39
Avatar
kom72
Člen
Avatar
Odpovídá na Mark Vajšbejn
kom72:26.2.2016 18:31

samozrejme systemovy nazev kategorie u fotek mam.

kategorie = labske_piskovce, alppy, ceske_stredohori

atd...
ten kod mam dat k mysql dotazu?
takhle nejak?

WHERE 'kategorie' = $_GET['sem mám vypsat vsechny kategorie?']
Editováno 26.2.2016 18:32
 
Nahoru Odpovědět
26.2.2016 18:31
Avatar
Odpovídá na kom72
Mark Vajšbejn:26.2.2016 18:50

Ano, takto nějako, k tomu kódu, který po následné exekuci předává do proměnné $kategorie_fotky.

Ale do toho daného $_GET-u který přebírá názvy hodnot z odkazů a následně jejich hodnoty (www.itnetwork.cz/index.php?… bla bla bla&nazev2=hodno2 bla bla bla&nazev3=...) si vpiš právě to systémové jméno kategorie, kterou budeš žádat. Nepiš tam všechny kategorie. To by prostě nefungovalo. PS: Ten get je vždy statický, jak jsi už určitě snad pochopil - protože se mi zdá, že s $_GET-em moc zkušeností nemáš, pouze jeho hodnota se 'vždy' mění.

Editováno 26.2.2016 18:50
 
Nahoru Odpovědět
26.2.2016 18:50
Avatar
kom72
Člen
Avatar
kom72:26.2.2016 19:06

já nemám žádne zkušenosti s PHP :-) Jak tam mohu vepsat systemove jmeno kategorie, kdyz nevim, jakou kategorii kdo zavola? Jako pochopim, ze tohle udelam na jednu kategorii, kterou nekam natvrdo napisu, ale ja to potrebuju implementovat treba na 10 kategorii...

 
Nahoru Odpovědět
26.2.2016 19:06
Avatar
Odpovídá na kom72
Mark Vajšbejn:26.2.2016 19:39

To jsem ti již psal. :)

Ale tak, trochu to teda rozepíšu ještě jednou..
na té stránce, kde vypisuješ všechny kategorie, tak tam k tomu odkazu přidej i toto:

odkaz . cz / kategorie_vypis.php?systemove_jmeno_kategorie=vypis_systemoveho_jmena_dane_kategorie_z_databaze

a následně na stránce s výpisem kategorie žádej z $_GET-u proměnnou systemove_jme­no_kategorie :)
.. A ještě si přidej na té stránce s výpisem takovou podmínku:

if(!isset($_GET['systemove_jmeno_kategorie'])) {
        $kategorie = 'nejaká základní kategorie, která se zobrazí když není kategorie nastavena';
} else {
        $kategorie = $_GET['systemove_jmeno_kategorie'];
}

A k tomu to bych také rád podotknul, že následně už vůbec nepracuj s $_GET-em, ale pouze s proměnnou $kategorie.

PS: Data které přebíráš vůbec nejsou zabezpečena. Tzn. že by toho mohl někdo využít, ale to ti zde doopravdy popisovat nebudu, protože sám nevím, jak je to s aktuální verzí PHP-čka a za druhé - takové věci nepoužívám. Ptej se např. v dalším topicu, který si můžeš otevřít. :)

 
Nahoru Odpovědět
26.2.2016 19:39
Avatar
kom72
Člen
Avatar
kom72:26.2.2016 23:14

Vyreseno, diky Marku. Jen se bojim, ze tohle neni posledni z mych stupidnich dotazu :-)

 
Nahoru Odpovědět
26.2.2016 23:14
Avatar
Odpovídá na Mark Vajšbejn
Neaktivní uživatel:27.2.2016 12:18

Jenom ne takhle proboha. Tohle je nejlepší cesta k tomu si nechat smazat nebo vyprázdnit databázi. Ideálně použij "modernější" přístup k databázi přes ovladač PDO. Tam si předepíšeš dotaz

SELECT column, anothercolumn FROM `Table` WHERE CategoryId = :categoryId

a pak dosadíš hodnoty tak, že PDO předáš pole a ono si zjistí, co je to za hodnoty a správně je odescapuje, což se v předchozím případě rozhodně nedělo.

Pole co pak bude vypadat takto

[
        ":categoryId" => $categoryId
]

Není špatné zkontrolovat, jestli ti přišlo číslo nebo hodnota co opravdu měla přijít a případně skript zaříznout :)

Editováno 27.2.2016 12:20
Nahoru Odpovědět
27.2.2016 12:18
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Mark Vajšbejn:27.2.2016 12:20

Jirko,
já bych mu to nejradši taky řekl, ale tenhle člověk s tím nemá zkušenosti na takové úrovni, aby ještě pobíral PDOčko.. podívej se prosimtě na jeho kód a následně reaguj. Jsem s ním v kontaktu a o tomhle jsem mu již říkal.

 
Nahoru Odpovědět
27.2.2016 12:20
Avatar
Odpovídá na Mark Vajšbejn
Neaktivní uživatel:27.2.2016 12:21

Jeho úroveň je irelevantní, nemůžeš ho učit hned od začátku jednu z největších chyb.

Nahoru Odpovědět
27.2.2016 12:21
Neaktivní uživatelský účet
Avatar
Odpovídá na Mark Vajšbejn
Neaktivní uživatel:27.2.2016 12:24

Navíc na práci s databází v PDO je tu celkem fajn třída, tou byste mohli začít.

Nahoru Odpovědět
27.2.2016 12:24
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Mark Vajšbejn:27.2.2016 12:25

Nebudu to komentovat, zbytečná ztráta času. Jen bych se tu s tebou hádal.

 
Nahoru Odpovědět
27.2.2016 12:25
Avatar
Odpovídá na Mark Vajšbejn
Neaktivní uživatel:27.2.2016 12:28

Dobře. Pak už jen zbývá jen doufat, že nebudeš učit podobné věci víc lidí ... :D

Nahoru Odpovědět
27.2.2016 12:28
Neaktivní uživatelský účet
Avatar
kom72
Člen
Avatar
kom72:27.2.2016 12:43

Chlapi, nehádejte se tu kvůli mě :-) Jestli se jedná o bezpečnost/na­padnutelnost kodu, chystam se zalozit dalsi vlakno a tam se muzete vyřádit. Samozrejme, nez to trosku nastuduju.
Pokud jsem spravne pochopil, co jsem málo stihnul precist, melo by to byt tak, ze bych nekde mel mit (zjednodusene receno) definovany nazvy stranek, ke kterym se da pristupovat...

Editováno 27.2.2016 12:43
 
Nahoru Odpovědět
27.2.2016 12:43
Avatar
Odpovídá na kom72
Neaktivní uživatel:27.2.2016 13:20

To už máš v podstatě v databázi, je potřeba je už jenom bezpečně vybírat a zobrazovat.

Nahoru Odpovědět
27.2.2016 13:20
Neaktivní uživatelský účet
Avatar
kom72
Člen
Avatar
Odpovídá na Neaktivní uživatel
kom72:27.2.2016 13:44

mám založit nové vlákno nebo to probereme tady?

 
Nahoru Odpovědět
27.2.2016 13:44
Avatar
Odpovídá na kom72
Neaktivní uživatel:27.2.2016 22:51

Jestli chceš poradit, tak ti doporušuji si to celé promyslet, vzít si něco z této diskuse a založit nové vlákno, kde to můžeš trochu uceleněji popsat a vyjádřit se, jak bys to chtěl udělat. Uvidíme, jestli to bude dobré nebo se to případně poladí :)

Editováno 27.2.2016 22:51
Nahoru Odpovědět
27.2.2016 22:51
Neaktivní uživatelský účet
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 20 zpráv z 20.