Autor Zpráva
andy_99
Profil
ahoj. mám na vás jednu zaujímavú otázku .. Ide o toto: Mám stránku napr: index.php. pomocou .htaccess som si vytvoril pravidlá na pekné url. sú tu dve url : localhost/e-shop/nejaky_typ_produktu a localhost/e-shop/nejaky_typ_produktu/a_jeho_detail_id . V menu mám odkazy na rôzne typy produktov a následne po kliknutí na nejaký odkaz sa mi zobrazí viacero produktov, ktoré podliehajú tomu typu. To všetko síce spravené mám, no neviem či správne .. robil som to pomocou switch case. A ten hlavný problém: ako vyriešiť, že po kliknutí už na nejaký odkaz na konkrétny produkt aby sa mi zobraziil samostatne tento produkt. Dúfam že to je jasne napísané lebo jasnejšie som to už asi nevedel ani napísať ďakujem za rady.
Tori
Profil
andy_99:
V menu mám odkazy na rôzne typy produktov a následne po kliknutí na nejaký odkaz sa mi zobrazí viacero produktov, ktoré podliehajú tomu typu. [...] robil som to pomocou switch case.
Typy produktů jsou totéž jako kategorie, předpokládám. Jak máte navrženou databázi, že musíte používat switch? Většinou se název, ID a další údaje o kategorii čtou z DB podle části URL (buď ID, nebo celý text "nejaky_typ_produktu") - je potřeba mít ty části URL uložené u každé kategorie a zajistit, aby se nemohly opakovat. Potom podle ID kategorie načtete z DB všechny produkty, co do ní patří (+ stránkování, řazení,...).
juriad
Profil
andy_99:
Takže máš zatím jedinou stránku index.php, která může a nemusí dostat parametr typ-produktu.
Pokud ho nedostane, zobrazí se úvodní stránka.
Pokud jej dostane, provede se jedna větev switche a úvod se nezobrazí.

Tedy něco jako:
switch($_GET['typ-produktu']) {
case 'hrnicky':
  ... stránka kategorie hrníčky
  break;
case 'holinky':
  ... stránka kategorie holínky
  break;
case 'hromosvody':
  ... stránka kategorie hromosvody
  break;
default:
  ... úvodní stránka
  break;
}
Jde jen o ukázku - tento kód bude vyhazovat ošklivou Notice.

Zaprvé, zapomeň na .htaccess, přepisování adres se dá udělat kdykoli později.
Zadruhé, měl jsi začít přemýšlet nad těmi produkty než jsi začal cokoli programovat.

Kolik těch produktů máš?
Jak často se budou měnit?
Je přípustná nutnost změny PHP při změně/přidání prodktu?
Co vše se bude v čase měnit?

Podle odpovědí (raději detailnějších) se rozhodneš jakou technologii použiješ.
Pokud nejsou velké nároky, může každý mít jednu stránku, kterou budeš includovat, podle názvu produktu.
V opačném případě je skoro chybou nepoužít databázi a vše včetně stránek kategorií a úvodní stránky řešit přes ní.

Zbastlit to můžeš třeba tak, že každý case bude obsahovat další swicth:

case 'hrnicky':
  switch($_GET['produkt']) {
  case 'se slunickem':
    ... stránka hrníčku se sluníčkem
    break;
  case 's hrochem':
    ... stránka hrníčku s hrochem
    break;
  default:
    ... stránka kategorie hrníčky (nebyl zadán, nebo byl zadán chybný produkt)
  }
  break;
andy_99
Profil
skúsim to takto ešte raz napísať takto: z DB som si vybral všetky kategórie a uložil do premennej $cat . túto premennú som pomocou foreach($cat as $c) prebehol
    echo'<a href="/e-shop/'.$c['category'].'/'.$c['id'].'">'.$c['category'].'</a>';
po kliknutí na niektorý linkov z menu nás presmeruje povedzme na localhost/e-shop/whiskey. Ale už toto mám problém spraviť nejak tak aby sa mi to pozdávalo. Pretože už pri switch neviem ako Postupovať..
switch($_GET['category]) a čo ďalej ?? aký case tam vložím keď nepoznám všetky možnosti?.. ja neviem aké kategórie ešte do časti case pribudnú alebo ubudnú?! a ručne to písať všetky kategórie nechcem.
juriad
Profil
andy_99:
Zapomeň na přepisování adres, začni tím, že eshop vytvoříš s hnusnými adresami - alespoň budeš vědět, o který skript se jedná.

Po svém eshopu tedy chceš tři různé akce
1) zobrazit titulní stránku se seznamem kategorií
2) zobrazit seznam produktů na stránce kategorie
3) zobrazit detail produktu

Každá z těchto akcí bude mít svou stránku - právě jednu.
index.php - nechce žádné parametry
category.php - chce parametr id kategorie - pokud ho nedostane přesměruje na index.php
product.php - chce jeden nebo dva parametry (záleží na tobě) - pokud chce jen id produktu a nestane jej, přesměruje na index.php (nebo na category.php, pokud je kategorie známá)

A teď zkus vytvořit jednu jedinou obecnou stránku produktu. Začni tím, že podle zadaného id (jako parametr v URL) vypíše název a vlastnosti. Pak přidáš výpis relevantních fotek, pak komentářů, pak hodnocení, pak dostupnosti v různých skladech. Všechny tyto informace získáš z databáze univerzálními SELECTy, které budou mít jako parametr ID produktu.

Vytvoř si tedy úplně nezávisle na tom co už máš skript product.php
andy_99
Profil
presne tomuto som sa chcel vyhnúť :) .. ak dobre chápem na každej tejto stránke bude nejaká časť kódu ktorá sa bude opakovať na každej z týchto troch stránok.? ci mýlim sa?
juriad
Profil
Ano bude. Každý z těchto skriptů bude obsahovat stejnou hlavičku, patičku, menu. Ale o to teď nejde. Ty hlavně potřebuješ udělat stránku, která bude zobrazovat data.
andy_99
Profil
Ešte pre info. existuje aj iný spôsob či toto je jediný ako podobnú stánku vytvoriť? a ďakujem za rady
Joker
Profil
andy_99:
existuje aj iný spôsob či toto je jediný ako podobnú stánku vytvoriť?
To uvedené je jeden z hromady způsobů, jak se to dá udělat.

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: