Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Relacje w tabelach, j.w
Raffal
post
Post #1





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 19.06.2006

Ostrzeżenie: (0%)
-----


Witam
mam taki dylemat

chce stworzyc proste wyświetlanie produktów które mozna podzielic na grupy , długo zastanawiałem sie czy oprzec to na formie plików czy baz danych no ale skusilem sie na baze i tu wystapil moj problem stworzylem sobie dwie tabele i chcialbym zeby wszystkie produkty byly w jednej tablei natomiast zeby byla mozliwosc podzielenie jej na kategorie
  1. CREATE TABLE `kategoria` (
  2. `id_produktu` int(11) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(100) NOT NULL,
  4. `data` date NOT NULL,
  5. PRIMARY KEY (`id_produktu`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


oraz

  1. CREATE TABLE `produkty` (
  2. `id` int(100) NOT NULL AUTO_INCREMENT,
  3. `id_produktu` int(11) NOT NULL,
  4. `size` varchar(100) NOT NULL,
  5. `screw` varchar(100) NOT NULL,
  6. `code` varchar(100) NOT NULL,
  7. `box` varchar(100) NOT NULL,
  8. `Price` varchar(100) NOT NULL,
  9. PRIMARY KEY (`id`)
  10. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


no ale mam problem tzn nie umiem tworzyc relacji , gdy probowalem skorzystac z tego co wyczytalem w NECIE to wyrzucalo mi potrzezne bledy z brakiem jakiejkolwiek składni , aha i korzystam z PHPmyAdmin smile.gif Jezeli ktos bylby wstanie wytłumaczyc mi jak stworzyc to polaczenie w tym przypadku bylbym wdzieczny
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Marr
post
Post #2





Grupa: Zarejestrowani
Postów: 103
Pomógł: 1
Dołączył: 19.08.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Dla Twojego zastosowania wystarczy, że w obu tabelach kolumny id_produktu zmienisz sobie na id_kategorii (bo tak jak jest teraz jest mylace). Później listując zawartość kategorii w php wystarczy, że skonstruujesz zapytanie do mysql'a w klauzula WHERE - w Twoim przypadku np: 'SELECT * FROM produkty WHERE id_kategorii = "2";' i w ten sposób będziesz miał wybrane wszystkie produkty z 2 kategorii. Więcej filozofii na tym etapie wg mnie nie trzeba.

btw. używając operacji złączenia (JOIN) możesz sobie w jednym zapytaniu pobrać nazwy kategorii do której należy dany produkt listując wszystkie produkty - tak jakbyś chciał sobie zrobić też poza kategoriami, ale to tak poza konkursem.
Go to the top of the page
+Quote Post
Raffal
post
Post #3





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 19.06.2006

Ostrzeżenie: (0%)
-----


tzn chyba troszke uproscilem swoj problem dokladnie wyglada to tak:

mam foldery z ktorych wybieram jedna opcje , wczytuja sie produkty a po kliknieciu w ktorys z nich otwiera mi sie plik do danego produktu. Jakbys to proponowal zrobic?
Go to the top of the page
+Quote Post
Marr
post
Post #4





Grupa: Zarejestrowani
Postów: 103
Pomógł: 1
Dołączył: 19.08.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


no to jezeli chodzi o tabele to wg mnie spokojnie wystarczy w Twoim przypadku.

"folder" - to u Ciebie tabela `kategoria`
folder zawiera pliki - `kategoria` zawiera `produkty`

,a więc robisz działając w php, robisz sobie plik np. kategoria.php gdzie pobierasz sobie elementy należące do danej kategorii (id kategorii możesz przekazać jako parametr np. metodą GET). Robisz sobie zapytanie w stylu
  1. <?php
  2. $zapytanie = mysql_query('SELECT * FROM produkty WHERE id_kategorii = "$_GET['kategoria']";');
  3. while ($rekord = mysql_fetch_assoc($zapytanie){
  4. // odwolujesz sie do danego pola w mysqlu w sposob $rekord['nazwa_pola']
  5. // listujesz sobie wszystkie elementy z tej kategorii, mozesz sobie od razu podlinkowac je odpowiednio np.
  6. // echo '<a href="/produkty/$rekord['id'].doc">link do pliku .doc o id takim jak w bazie w folderze produkty</a>';
  7. }
  8. ?>


i dzieki temu masz listowanie produktow nalezacych do danej kategorii - jak elementy kategorii sa linkami do plików mozesz to listowanie zrobic na wzór mojego przykładu.. Możesz też zmodyfikować link w sposób by kierował do pliku php , który realizuje pobranie i wyświetlenie szczegółów nt. elementu - robisz sobie link np <a href="info.php?id=$rekord['id']">nazwa_linku</a> i w pliku info.php pobierasz sobie informacje z tabeli produkty WHERE id="rekord['id]"...

btw.. wiem, że troche gmatwam i można byłoby czytelniej to napisać ale po ciężkim dniu ledwo myśle...
Go to the top of the page
+Quote Post
Raffal
post
Post #5





Grupa: Zarejestrowani
Postów: 111
Pomógł: 0
Dołączył: 19.06.2006

Ostrzeżenie: (0%)
-----


prubuje to zrobić własnie tym sposobem co napisales , no i widze to tak.

wczytuja sie odpowiednie kategorie
  1. "SELECT * FROM kategorie"

i sa wyswietlana klikajaca je przesylana jest w adresie zmiena do nastepnego pliku gdzie wykonywane jest zapytanie sql

  1. "SELECT * FROM produkty where id_kategorii="$id_kategorii


czy oto dokładnie Ci chodziło?

Ten post edytował Raffal 7.03.2009, 21:42:41
Go to the top of the page
+Quote Post
Marr
post
Post #6





Grupa: Zarejestrowani
Postów: 103
Pomógł: 1
Dołączył: 19.08.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


no tak, w tym drugim pliku bierzesz sobie zmienna $id_kategorii z $_GET'a lub $_POST'a - w zależności od tego jak przesłałeś tą zmienną. powinno załatwić sprawę, jak coś nie działa, to pokaż odpowiednie kody smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 05:26