Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][sql] odpowiednie zapytanie bazy
Forum PHP.pl > Forum > Przedszkole
smerf
Witam mam wielkiego problema exclamation.gif
Pojechalem zbyt ambitnie z tematem pracy inz. (System magazynowy w firmie) i jakos stanalem w miejscu a obrona za miesiac.

Przejdzmy do konkretow:

mam baze danych towary ktora zawiera wieleeee tabel (kazdy dodany towar na magazyn to nowa tabela)
Kazda z tabel zawiera komorki:
Numer int(11) Tak NULL
Kod_towaru varchar(10) Tak NULL
Kategoria text Tak NULL
Nazwa text Tak NULL
Opis text Tak NULL
Ilosc int(11) Tak NULL
Jednostka text Tak NULL
Dostawca text Tak NULL
Minimum int(11) Tak NULL
Data date

Potrzebuje wyswietlic na stronie towar ktory mam przyjety na magazyn. Czyli nazwy tabel oraz do tego wartos komorki Ilosc (obok kazdej nazwy).
Nazwy towaru (czyli nazwy tabel) wyciagam za pomoca:
  1. <?php
  2. $baza="towary";
  3. $connection=mysql_connect('localhost', 'smerf', 'smerf');
  4. $result = mysql_list_tables($baza);
  5. $pokaz= "SELECT * FROM $result";
  6. $ile=mysql_num_rows($result); 
  7. echo"W bazie wystepują następujące towary, pozycji $ile: <br><br>";
  8. for ($i = 0; $i < mysql_num_rows($result); $i++)
  9. echo "kod: ". mysql_tablename($result, $i)," <br>";
  10. ?>

To wyswietla mi ladnie wszystkie nazwy tabel. Ale jak do tego wyciagnac jeszcze wartosc kmorki Ilosc.
A moze jest jakas prosciejsza metoda/rozwiazanie zapisu danych questionmark.gif

Prosze o pomoc bo moje inz. wisi na wlosku smile.gif

THX
Grzyw
  1. <?php
  2. $baza="towary";
  3. $connection=mysql_connect('localhost', 'smerf', 'smerf');
  4. $result = mysql_list_tables($baza);
  5. $pokaz= "SELECT * FROM $result";
  6. $ile=mysql_num_rows($result); 
  7. echo"W bazie wystepują następujące towary, pozycji $ile: <br><br>";
  8. for ($i = 0; $i < mysql_num_rows($result); $i++)
  9. {
  10. $sql = 'SELECT sum(ilosc) as ilosc FROM '.mysql_tablename($result, $i);
  11.  # Tu musisz wrzucić to zapytanie do bazy i wyciągnąć liczbę przez PHP
  12. }
  13. ?>
Kihol
Generalnie rozwiązanie, że każdy towar jest nową tabelą jest co najmniej niezbyt ładne. Jeśli obrona za miesiąc, to pewnie już za późno na takie zmiany, ale lepiej byłoby zrobić osobno tabelę towar, w której byłyby główne dane o towarach. W ogóle nie rozumiem koncepcji wielu tabel - skoro można by to trzymać w jednej i dużo łatwiej wyciągać wszystko selectami po tabeli a nie po wielu tabelach
noels
Ja takze uważam, że tworzenie osobnej tabeli dla każdego nowego towaru to porażaka jesli na magazynie bedzie 15.000 produktów to w bazie będziesz mial ponad 15.000 tabel .... to nie bedzie raczej optymalne dzialanie

Przy projektowaniu bazy danych nalezy rozbijac ja na logiczne czesci np:

Tabela Towary ma zawierac podstawowe informacje o towarze moga to byc pola np:

id_towaru
nazwa_towaru
cena_towaru
waga_towaru
id_dostawcy
id_kategorii

Tabela Dostawcy zawiera info o dostawcach:

id_dostawcy
nazwa

Tabela kategorie

id_kategorii
nazwa

w ten sposob jeden rekord bedzie w tabeli Towary bedzie symbolizowal jeden towar na magazynie, Tabela nie bedzie przechowywac nazw kategorii tylko jej identyfikator liczbowy dzieki czemu zmniejszy to objetosc bazy i przyspieszy operacje na niej podobnie jest z dostawcami itd...
smerf
Cytat(Kihol @ 1.02.2008, 11:28:37 ) *
Generalnie rozwiązanie, że każdy towar jest nową tabelą jest co najmniej niezbyt ładne. Jeśli obrona za miesiąc, to pewnie już za późno na takie zmiany, ale lepiej byłoby zrobić osobno tabelę towar, w której byłyby główne dane o towarach. W ogóle nie rozumiem koncepcji wielu tabel - skoro można by to trzymać w jednej i dużo łatwiej wyciągać wszystko selectami po tabeli a nie po wielu tabelach


Generalnie tez sie z tym zgadzam, nawet na poczatku tak robilem ale pozniej pojawil sie problem. Przy jednej tabeli towary mialem komorki:
kod, nazwa, dostawca ilosc

i tu rodzil sie problem, przy takim ukladzie nie da sie zrobic histori karty produkt.
Czyli jak mam produkt Obuwie robocze to mam podglad kiedy ile doszlo na stan a kiedy i ile bylo pobierane
Przy jednej tabeli ze wszystkimi towarami jest to malo realne, no chyba ze sie myle i oczyms nie wiem.
nowotny
Cytat(smerf @ 2.02.2008, 16:27:24 ) *
i tu rodzil sie problem, przy takim ukladzie nie da sie zrobic histori karty produkt.

Da się... wszystko się da... winksmiley.jpg

Cytat(smerf @ 2.02.2008, 16:27:24 ) *
Czyli jak mam produkt Obuwie robocze to mam podglad kiedy ile doszlo na stan a kiedy i ile bylo pobierane
Przy jednej tabeli ze wszystkimi towarami jest to malo realne, no chyba ze sie myle i oczyms nie wiem.

No to robisz dwie dodatkowe tabele 'przyjecia_towaru' i 'wydania_towaru' z kolumnami:
ID_tranzakcji
ID_towaru
sztuk
ID_dostawcy //w tablicy przyjęć
ID_odbiorcy //w tablicy wydań

+ ewentualnie jakieś dodatkowe kolumny i masz historię przyjęć i wydań towarów... smile.gif Potem to ładnie łączysz z tabelą samych towarów i dostawców/odbiorców i bez problemu wyświetlasz...
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.