Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MySQL] Kategorie i podkategorie oraz link do zdjęcia zapisany w bazie.
Forum PHP.pl > Forum > PHP
arlid
Witajcie. Potrzebuje wykonać formularz dodawania produktu. O ile dodawanie nazwy, czy jakiegoś opisu to nie problem, to spotkałem na razie 2 zagwozdki.

1. Kategorie i podkategorię. W planach miałoby to wyglądać tak, że podczas dodawania produktu wybieram kategorię, a potem podkategorię (wyświetlają się tylko podkategorie danej wybranej przez użytkownika kategorii) za pomocą listy wyboru. Teraz pytanie jak tego dokonać. Bazę kategorii/podkategorii mogę wgrać "na stałe", a same tabele to myślę coś w tym stylu: Kategorie (ID_kat, nazwa_kt), Subkategorie(Id_subkat, ID_kat, nazwa_subkat) i spiąć to poprzez kategorie.id_kat=subkategorie.id_kat,. Tylko jak dokonać teraz wspomnianego wygoru podczas dodawania produktu i zapisać to w tabeli "produkty"?

2. Zdjęcie produktu. pomyślałem, że będzie wgrywane poprzez tradycyjny upload z wyborem pliku, tylko chciałbym zapisać w bazie adres do tego pliku i go odczytać. Coś na wzór - wybieram zdjęcie - trafia ono do zadanego katalogu z nazwą powiedzmy ID danego produktu, a link jest przechowywany w bazie. Z bazy pobieram link i wyświetlam zdjęcie. Wygląda prosto, ale nie mam pojęcia jak się za to zabrać żeby przenosiło zdjęcie i nazywało je poprzez ID. Musiałbym najpierw mieć to ID, więc pomyślałem, że po prostu wybór największej liczby z pola ID_produktu i dodanie +1 - tak powstanie nowa nazwa odpowiadająca kolejnemu ID.

Będę wdzięczny za wszelką pomoc.

Pozdrawiam
blahy
1. Jezeli do produktu nie mozna wybrac kategorii glownej, tylko subkategorie to jest ok tak jak napisales.
Wtedy do tablei Produkty dodajesz kolumne Subkategoria (relacja do Subkategorie.id_subkat).
W Kazdym produkcie bedziesz mial dostep do id Subkategorii.

Jesli jednak mozna wybrac kategorie glowna, a nie tylko subkategorie, albo mozna przypisac inne kategorie jakiejs subkategorii (drzewo kategorii) to bedziesz musial zrobic taka strukture:
Kategorie (id, name, parent_id);

Wtedy mozesz miec, np:
1, Samochody, null <- glowna kategoria, brak kategorii nadrzednej
2, Osobowe, 1 <- subkategoria kategorii Samochody
3, Ciezarowe, 1 <- kolejna subkategoria kategorii samochody
4, Uzywane, 2 <- subkategoria subkategorii Osobowe.

Oczywiscie mozna tutaj walidowac rozne rzeczy i dalej zachowac strukture kategoria/subkategoria jesli sie chce.

Co do wyswietlania wyboru. Pokazujac formularz Produktu wyciagamy wszystkie kategorie glowne (z Twojego rozwiazania dane z tabeli Kategorie, z mojego - Kategorie z parent_id = null).
Na zmianie w tym selekcie javascriptem wywolujemy zadanie ajax (mozna poszukac dependent fields w google) do aplikacji o pobranie wszystkich podkategorii dla podanej kategorii (/subkategorie/1 np. zwroci rekordy 2,3 (wszystkie, ktore maja parent_id 1)). Jesli zmienisz w tym selekcie kategorie na inna (to dostaniesz inne subkategorie). Te subkategorie trzeba wyswietlic w kolejnym selekcie i tam mozna wybrac podkategorie.

Po submitowaniu takiego formularza produktu mamy wybrana kategorie, ktorej id zapisujemy w Produkcie (do kolumny, ktora przechowuje id kategorii).

2. Tradycyjny upload jest ok. Nie musisz znac id produktu. Najepiej jest zrobic tak, ze masz tabele Zdjecia, i tam kolumny: id, id_produktu, sciezka, nazwa, rozmiar itp.
Uploadujac plik dostajesz $_FILES['file'] a w nim name, tmp_name, size itp.

robisz
move_uploaded_file($_FILES['file']['tmp_name'], 'twojKatalogUploads', $sciezka=rand(1000,100000)."-".$_FILES['file']['name']); // czyli zapisujesz plik w katalogu uploads z Twoja nazwa pliku (oryginalna nazwe zapiszesz w bazie z $_FILES['file']['name'] jesli jest to potrzebne). Mozesz zamiast tego rand uzyc nawet tmp_name, cokolwiek losowego.

Majac juz fizycznie plik zapisujesz sobie informacje o nim w w bazie:
"INSERT INTO Zdjecia(id_produktu, sciezka, nazwa, rozmiar) VALUES({id produktu masz, bo to formularz edycji produktu, albo dodawania juz po zapisaniu Produktu}, $sciezka, $_FILES['file'][''name], $_FILES['file']['size'])"

Teraz jak chcesz wyswietlic zdjecia dla produktu robisz select ze Zdjec z odpowiednim id_produktu, iterujesz i wypisujesz img tag z Zdjecie['sciezka'].
Cos podobnego jak tu: http://cleartuts.blogspot.com/2014/12/file...-and-mysql.html
arlid
Dzięki za pomoc. Czyli troszkę dobrze myślałem. Postaram się w weekend to obgarnąć i zobaczę jak mi to wyjdzie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.