![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 0 Dołączył: 4.01.2005 Ostrzeżenie: (0%) ![]() ![]() |
mam problem ze sformuowaniem zapytania ...
mam dwie tabele: 1. kategorie - id - kategoria (np. 'niemiecki', 'programy') 2. download - id - kategoria (numery odpowiadajace dla kategorie.id) - plik (nazwa pliku) - nazwa (opis pliku) - wielkosc chcialbym teraz za pomoca najchetniej jednego zapytania, jezeli sie nie da, to dwoch (przypuszczam, ze petla w petli) wyswietlic to w takiej formie: Kod nazwa_kategorii1: i tak dalejnazwa_pliku | opis_pliku | wielkosc_pliku nazwa_kategorii2: nazwa_pliku | opis_pliku | wielkosc_pliku czyli podzielic najpierw na kategorie i pod nazwa kazdej kategorii wyswietlic pliki nalezace do tej kategorii. probowalem, ale nie wychodzi. wszystko bylo dobrze, dopoki mialem jedna tabele - kategorie i zamiast wartosci liczbowych w kolumnie kategorie mialem nazwy kategorii. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Wiekszosc zadan mozna wykonac na wiele roznych sposobow. Dobrze jest jezeli masz zoptymalizowany kod, ale jeszcze lepiej jesli to jest Twoj kod - nawet gdy nie jest w pelni profesjonalny. Piszac cos samemu uczysz sie o wiele szybciej niz wtedy gdy kozystasz z gotowych, cudzych rozwiazan.
Co do zademonstrowanego przez Ciebie fragmentu kodu mam jednak kilka uwag.
Wykonywanie wbudowanej funkcji count() na kluczu podstawowym z uzyta klauzula GROUP BY na tym samym parametrze mija sie z celem poniewaz, jak w dym mozesz przyjac ze wyjdzie 1 (w koncu wartosci klucza podstawowego sa unikalne), no chyba, ze tabela jest pusta. Co za tym idzie warunek "if ($download_ilosc > 0)" jest bez sensu bo jesli tylko zapytanie zwroci wynik to ten warunek jest zawsze prawdziwy. Proponuje to zastapic kodem
Jesli zamiast MYSQL_NUM uzylbys MYSQL_ASSOC dzialal by zapis: $kategorie[] = $wynik3['id']; Jesli uzylbys MYSQL_BOTH, ktory jest wartoscia domyslna oba zapisy moglbys stosowac zamiennie, jak wygodniej. Musisz koniecznie ale to naprawde koniecznie popracowac nad wlasciwym nadawaniem nazw funkcji i zmiennym bo w przeciwnym razie szybko sie pogubisz w swoim wlasnym projekcie.
Nazwa funkcji powinna zawierac jakis czasownik bo przeciez funkcja cos robi, a ta konkretna funkcja tworzy link. Nazwij ja wiec np. tworzLink(). Poza tym co przechowuja zmienne: $zmienna1, $zmienna2, $zmienna3? Nazwa zmiennej powinna odzwierciedlac jej zawartosc.
Rozumiem, ze tablice w ktorej przechowujesz identyfikatory kategorii nazwales $kategorie ale dlaczego uzyles nazwy $pokaz dla zmiennej, ktora przechowuje pojedynczy identyfikator kategorii? Poza tym Twoj komentarz jest nieprawdziwy bo ty nie pobierasz nazw kategorii tylko identyfikatory kategorii, a tak na marginesie gdybys mial dobrze dobrane nazwy zmiennych to akurat w tym wypadku komentarz bylby zbedny. Ten post edytował bigZbig 6.04.2005, 08:02:53 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 10:42 |