Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Uložení a výpis PHP příkazu v databázi

Aktivity
Avatar
Matěj Trnka
Člen
Avatar
Matěj Trnka:12.4.2020 20:53

Zdravím,
potřeboval bych do databáze uložit PHP příkaz (konkrétně SELECT) a následně ho vypsat na stránce, ale aby byl aktivní a fungoval, jako bych ho vložil přímo do stránky.

Když obsah pole vyvolám pomocí echo(), php příkaz se sice na stránce nezobrazí, ale ani nefunguje. Zkoušel jsem to vyvolat s htmlspecialchars, htmlspecialchar­s_decode a zkoušel jsem i eval(), ale nic nefunguje.

Poradí mi někdo? Je nějaká jiná funkce, kterou to jde? Nebo máte příklad, jak kód zadat, aby to fungovalo? Nebo snad úplně jiné řešení?

Předem díky!

Chci docílit: Vytvářím menu, do kterého se budou načítat odkazy z databáze. Při kliknutí na jeden z odkazů se vyvolá funkce SELECT, z databáze se vybere příslušný záznam a ten se pak vypíše do určeného okna.

 
Odpovědět
12.4.2020 20:53
Avatar
Jan Stodůlka
Tvůrce
Avatar
Jan Stodůlka:12.4.2020 21:22

Předpokládám, že nechceš ukládat PHP příkaz, ale SQL příkaz SELECT? Pokud je to tak, tak ti echo nepomůže, to jen něco vypisuje do stránky.

Jestli to chápu správně, tak do stránky vypiš menu. Do položek menu dej odkaz na tu samou stránku a do URl odkazu přidej něco jako stanka.php?m=_id_ kde _id_ nahradíš id z menu.
Po kliku na menu si na serveru načteš to ID z url, vyhledáš v DB položku toho menu a k měnu ten select. Select pustíš a výsledek vypíšeš do okna.

Select je na úrovni PHP obyčejný text/string, který si načteš z DB a předáš je do funkce pro spuštění dotazu.

Nahoru Odpovědět
12.4.2020 21:22
Nechodím do hospody, protože doma programuji.
Avatar
Matěj Trnka
Člen
Avatar
Odpovídá na Jan Stodůlka
Matěj Trnka:12.4.2020 21:31

Ano, omlouvám se, je to tak. Chci SQL příkaz.

Děkuji za řešení, ale pokud jsem ho správně pochopil, tak budu muset položky menu vypsat do stránky pomocí html - to je ale věc, které se chci vyhnout. Rád bych, aby se nejdříve vykonal příkaz SELECT, který vypíše položky menu z databáze. Při kliknutí na jednu z položek se vykoná další příkaz SELECT, který podle id/jména položky v menu vytáhne z databáze obsah stránky a ta se následně načte. Pokud správně chápu tvůj návrh/řešení/radu, je to trochu něco jiného. Nebo ne?

 
Nahoru Odpovědět
12.4.2020 21:31
Avatar
Jan Stodůlka
Tvůrce
Avatar
Jan Stodůlka:12.4.2020 21:39

Na začátku musíš vypsat celé menu. Teprve po kliknutí na konkrétní položku menu můžeš spouštět ten select.
Ber to jako dvě oddělené věci.
Při paždém požadavku vypisuješ celé menu - pomocí jako html.
Když při požadavku máš v URL to ID, tak podle něj můžeš dohledat a spustit ten select, jehož výsledek vypíšeš do stránky (nejspiš pod menu).

Nahoru Odpovědět
12.4.2020 21:39
Nechodím do hospody, protože doma programuji.
Avatar
Matěj Trnka
Člen
Avatar
Odpovídá na Jan Stodůlka
Matěj Trnka:12.4.2020 22:20

Už asi rozumím... asi.

Můžeš mi, prosím, poslat jednoduchý příklad, ukázku kódu?

Předem díky

 
Nahoru Odpovědět
12.4.2020 22:20
Avatar
Jan Stodůlka
Tvůrce
Avatar
Jan Stodůlka:12.4.2020 22:35

To bohužel nemůžu neb dělám v C#.

Ale v HTML to bude vypadat ňák takto:
výpis jedné položky v menu

<a href="stranka.php?M=100">menu 100</a>

ve stránce php (neznám přesnou syntaxi, tak aspon slovně):

--nacist ID z url
$id = ...['M']
if ( pokud je něco v $id)
{
   nacist z db:   select sql_prikaz from tabulka where id = $id
      + osetrit aby v $id bylo číslo
  pokud to neco naslo, tak prikaz spustit a vypsat to do stranky
}
Editováno 12.4.2020 22:36
Nahoru Odpovědět
12.4.2020 22:35
Nechodím do hospody, protože doma programuji.
Avatar
Matěj Trnka
Člen
Avatar
Odpovídá na Jan Stodůlka
Matěj Trnka:12.4.2020 23:00

Už je mi vše jasné, děkuji.

Stejně to ale není úplně to, co jsem potřeboval, ale pokud není jiná možnost, udělám to takto.

Původně jsem chtěl, aby do menu šly přidávat položky přes formulář, tedy ukládat je do databáze a z té je pak vypisovat. Chtěl jsem se úplně vyhnout zásahu do celého kódu stránky a SQL příkaz pro výběr obsahu stránky, položku menu a obsah stránky (popř. ještě id) uložit do db a pak to vše jen vyvolávat, aniž by se zasáhlo do kódu. To tedy nejde?

 
Nahoru Odpovědět
12.4.2020 23:00
Avatar
Matěj Trnka
Člen
Avatar
Odpovídá na Matěj Trnka
Matěj Trnka:12.4.2020 23:14

Ještě takhle - chci mít v db tabulku stranky, v níž bude několik sloupců:

  • nějaký identifikátor
  • text, který se zobrazí jako položka v menu
  • obsah stránky
  • SQL příkaz

Z tabulky stranky nejdříve načtu SELECTem menu. Po načtení menu si kliknu na nějakou položku a podle zvolené položky se změní text na stránce.
Už jsem pochopil, že to takto udělat nejde. Mým záměrem je, aby se text, který se zobrazí jako položka v menu, a obsah stránky dal editovat a vkládat přes formulář a databázi.

 
Nahoru Odpovědět
12.4.2020 23:14
Avatar
Matěj Trnka
Člen
Avatar
Matěj Trnka:13.4.2020 16:44

Omlouvám se za vzniklou diskusi, už jsem se v radách od Jan Stodůlka zorientoval a svůj problém vyřešil - vše funguje tak, jak jsem chtěl. Takže díky, Jane.

Kdyby na toto vlákno někdo narazil a měl stejný problém, zde je sepsané řešení (vlastně je to to samé, jako napsal Jan):

Nejdříve z db vyvolám příkazem SELECT seznam položek menu. Ty vypíšu pomocí echo + doplním je tak, aby se zobrazily jako odkaz. V něm musí být stranka.php?sek­ce=XXX, přičemž místo XXX se načte identifikátor, díky kterému následně načteme obsah stránky. Při kliknutí na jednu z položek menu se v URL adrese zobrazí hodnota select=XXX. Následně použijeme isset, čímž zjistíme, zda je select "zaplněn" a má svou hodnotu. Což po kliknutí na jeden z odkazů má. Potom už jen podle identifikátoru (XXX) vytáhneme z db (také pomocí SELECT) jeden z obsahů stránky a za pomoci echo ho vypíšeme.

Toť vše! Děkuji, Jane, za pomoc.

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
13.4.2020 16:44
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 9 zpráv z 9.