Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL][JAVA]aktywne pole wyboru select
Forum PHP.pl > Forum > Przedszkole
agamemnon
Witam
Tworzę w tej chwili formularz i w którym będę potrzebował wybrać kategorię do danego zgłoszenia. Kategorie są dostępne w bazie mysql

  1. CREATE TABLE `kategorie` (
  2. `numer` bigint(20) NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(100) NOT NULL DEFAULT '',
  4. `aktywne` tinyint(4) NOT NULL DEFAULT '0',
  5. `kat_matka` bigint(20) NOT NULL DEFAULT '0',
  6. `kolejnosc` bigint(20) NOT NULL DEFAULT '0',
  7. `wizytowka` text NOT NULL,
  8. `meta_tagi` text NOT NULL,
  9. PRIMARY KEY (`numer`),
  10. KEY `kat_matka` (`kat_matka`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=340 ;
  12.  
  13. --
  14. -- Zrzut danych tabeli `kategorie`
  15. --
  16.  
  17. INSERT INTO `kategorie` VALUES (28, 'kategoria glowna 1', 1, 0, 0, '', '');
  18. INSERT INTO `kategorie` VALUES (29, 'kategoria glowna 2', 1, 0, 0, '', '');
  19. INSERT INTO `kategorie` VALUES (30, 'kategoria glowna 3', 1, 0, 0, '', '');
  20. INSERT INTO `kategorie` VALUES (31, 'kategoria glowna 4', 1, 0, 0, '', '');
  21. INSERT INTO `kategorie` VALUES (32, 'podkategoria1', 1, 28, 0, '', '');
  22. INSERT INTO `kategorie` VALUES (33, 'podkategoria2', 1, 28, 0, '', '');
  23. INSERT INTO `kategorie` VALUES (40, 'podkategoria3', 1, 28, 0, '', '');
  24. INSERT INTO `kategorie` VALUES (41, 'podkategoria4', 1, 28, 0, '', '');
  25. INSERT INTO `kategorie` VALUES (42, 'podkategoria podkategori 1', 1, 32, 0, '', '');

Sprawa jest o tyle klopotoliwa ze kategorie są podzielone tez na podkategorie a te kolejno na kolejne podkategorie. Sa około 3 takie poziomy. Jak najlepiej byłoby wykonać coś takiego i gdzie mogę znaleźć jakąś informację na ten temat?
Kolejnym (jak dla mnie) utrudnieniem jest fakt ze ww formularz bedzie wpisywal do bazy jedynie numer ID danej kategorii a nie jej pelna nazwe i czy nie bedzie problemu z jego przeslaniem (metoda) Post?

Pozdrawiam
HellRider
Sprawa raczej prosta, o ile w tabeli będziesz trzymać jedynie kategorie, bez ich zawartości, możesz wszystkie trzymać razem.
Każda z nich musi mieć unikalne ID, które może śmiało być PRIMARY KEY z auto_increment.
Masz już kolumny:
  1. `numer` bigint(20) NOT NULL AUTO_INCREMENT,
  2. `kat_matka` bigint(20) NOT NULL DEFAULT '0'


tak jak powinno być, musisz odczytywać kategorie według "numer" i potem podkategorie według "kat_matka" = "numer".

O to chodziło? smile.gif

EDIT: Nie powinno być problemu z formularzem i POST, wysłanie samego ID ("numer") wystarczy, skrypt odbiorczy może wykonać zapytanie z warunkiem
  1. WHERE numer="numer"
agamemnon
Witam zrobilem cos takiego: (zdaje sobie sprawę że to jest mało czytelne i bardzo na "około" tak więc bardzo proszę o poprawę i pokazanie gdzie można było to lepiej zrobić będę mógł na przyszłość nie robić takich błędów:

  1. <?php
  2. include 'config2.php';
  3. include 'polaczeniezdb.php';
  4.  
  5.  
  6. echo '<select name="kategoria">
  7.        <option>';
  8.        
  9.        $wynik = mysql_query("SELECT * FROM kategorie WHERE kat_matka='0' ORDER BY nazwa")
  10.        or die("Błąd w zapytaniu!");
  11.        
  12.      
  13.    
  14.    // wyświetlany wyniki zapytania
  15.    while($rek = mysql_fetch_array($wynik)) {
  16.        echo '<option>';
  17.        echo $rek['nazwa']."</option><br />";
  18.        $id=$rek['numer'];
  19.        
  20.        $wynik2 = mysql_query("SELECT * FROM kategorie WHERE kat_matka='.$id.' ORDER BY nazwa")
  21.        or die("Błąd w zapytaniu!");
  22.    while($rek2 = mysql_fetch_array($wynik2)) {
  23.       $id=$rek2['numer'];
  24.        echo '<option>';
  25.        echo '...'; //nie mogę się uporać by wstawić tutaj jeden lub dwa puste znaki tak samo nizej :/
  26.        echo $rek2['nazwa']."</option><br />";
  27.        
  28.        
  29.        $wynik3 = mysql_query("SELECT * FROM kategorie WHERE kat_matka='.$id.' ORDER BY nazwa")
  30.        or die("Błąd w zapytaniu!");
  31.    while($rek3 = mysql_fetch_array($wynik3)) {
  32.        echo '<option>';
  33.        echo ' <.......>';
  34.        echo $rek3['nazwa']."</option><br />";
  35.        
  36.        }
  37.        }
  38.        
  39.    }
  40.    
  41. echo '</select>';
  42. ?>


Czy chcąc odczytać tylko i wyłącznie ID (numer) wybranej kategorii i przeslanej przez formularz musze w docelowym pliku zrobic oddzielne zapytanie ktore odpowie mi jaki ID (numer) ma wybrana kategoria - ciąg znaków ?
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.