Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Select-selected - kryterum dla kolejnego wyboru, 1 formularz 1 zapytanie Dynamiczne dane
Dafidov
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.07.2005
Skąd: Śląsk Bytom

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


Pewnie się wyda Wszystkim że temat jest juz wyczerpany, przejżałem forum i znalazłem kilka ciekawych topiców:
<option selected>
Przywrócenie wartości pola w form
Pobieranie z bazy mysql wartości dla pola select
i nawet ambitny bardzo pomysl z wykorzystaniem ajaxa

Niestety zasób tej wiedzy nie jest wystarczający aby pomóc mi z moim kłopotem.

Posiadam formularz w którym mam kilka pól wyboru i chciał bym aby każde kolejne pole zostało ograniczone przez wczesniejszego selecta, a ponieważ korzystam z takiej oto funkciji sprawdzającej czy dane zostały wprowadzone do formularza nie wiem czy da się to wogóle zrobić tak jak chce...
Oto funkcja:
  1. <?php
  2.  
  3. if (isset($_POST['submit'])) { // Obsłuż formularz.
  4. // Zarejestruj uzytkownika w bazie danych.
  5. require_once ('inc/mysql_connect.php'); // Połącz się z bazą danych.
  6.  
  7. // Utworz funkcję wstawiającą przed znakami specjalnymi znak odwrotnego ukośnika.
  8. function escape_data ($data) {
  9. global $dbc; // Potrzebujemy połączenia.
  10. if (ini_get('magic_quotes_gpc')) {
  11. $data = stripslashes($data);
  12. }
  13. return mysql_real_escape_string($data, $dbc);
  14. } // Koniec funkcji.
  15.  
  16. $message = NULL; // Utwórz nową, pustą zmienną.
  17.  
  18.  
  19. $sb = escape_data($_POST['id_kierunek']);
  20. $sc = escape_data($_POST['id_wydzial']);
  21. $sd = escape_data($_POST['id_rok_akad']);
  22. $se = escape_data($_POST['id_prz_pr_na']);
  23. $sf = escape_data($_POST['rok']);
  24. $sg = escape_data($_POST['id_pracownik']);
  25. $sh = escape_data($_POST['grupa']);
  26.  
  27. ?>


Pod zmiennymi wstawiam konkretne pola z formularza według których chcę dokonać ograniczeń.

Oto dwa przykładowe pola formularza wobec których chciał bym zastosować te ograniczenia:
  1. Rok studiów: <select name="rok" selected="<?php if (isset($_selected['rok'])) echo $_POST['rok']; ?>"/>
  2. <?php
  3. $query = "select distinct left(skrot,1) as rok from grupa";
  4. $result = mysql_query($query);
  5.  
  6. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  7. echo "<option value=\"{$row['rok']}\">{$row['rok']}</option>\n";
  8. }
  9. echo '</select>';
  10. ?><br /><br />
  11.  
  12. Wybierz grupę: <select name="grupa" selected="<?php if (isset($_selected['grupa'])) echo $_POST['grupa']; ?>"/>
  13. <?php
  14. $query = "select distinct id, skrot from grupa where skrot like '$sf%' and id_wydzial like '$sc' and id_kierunek like '$sb' and id_rok_akad like '$sd'";
  15. $result = mysql_query($query);
  16.  
  17. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  18. echo "<option value=\"{$row['id']}\">{$row['skrot']}</option>\n";
  19. }
  20. echo '</select>';
  21. ?><br /><br />


Tabela grupa wygląda tak:
(IMG:http://www.dafidov.is.net.pl/Grafa/grupa.gif)

Proszę o pomoc ponieważ nie mam już pomysłów i nie potrafie sam sobie poradzić z tym problemem (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Z góry dziękuję (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
phobos
post
Post #2





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 7.04.2006

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


a te zapytania nie zwracaja czasem wiecej niz jednego rezultatu (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Dafidov
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.07.2005
Skąd: Śląsk Bytom

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


Zapytania zwracają listę którą wykorzystuje w selekcie.
Z niej wybieram jedna wartosc i chce ja przekazac dalej, tylko nie wiem jak to zrobic i czy da sie to zrobic.

zapytanie
  1. $query = "select distinct left(skrot,1) as rok
  2. from grupa";
zwraca mi liste lat z ktorej wybierajac jeden rok chce aby organiczyl mi w zapytaniu
  1. SELECT DISTINCT id, skrot
  2. FROM grupa
  3. WHERE skrot LIKE '$sf%' AND id_wydzial LIKE '$sc' AND id_kierunek LIKE '$sb' AND id_rok_akad LIKE '$sd'
do jednego rekordu na podstawie wybranych wczesniej selektow.

Nie wiem czy jest to w 100% zrozumialem ale w razie niejasnosci postaram sie precyzyjniej okreslic co mam na mysli.
Moze w celu wyjasnienie jeszcze taka mala uwaga - skrot w tabeli grupa to dwie cyfry z ktorej pierwsza identyfikuje rok czyli mamy 11,12,13,14,21,22,23,24... itd (przykladowo po 4 grupy w roku) i dziki wyborze
  1. $query = "select distinct left(skrot,1) as rok
  2. from grupa";
a pozniej
  1. SELECT DISTINCT id, skrot
  2. FROM grupa
  3. WHERE skrot LIKE '$sf%' ...
wyselecjonuje dokladnie jednen rekord ktory potrzebuje - potrzebuje tylko do tego wiedziec jak przekazac wartosci selectow wczesniejszych tak aby mi w momencie ich wyboru zostaly zapamietywane pod moimi zmiennymi '$s*' i ograniczyly tego ostatniego selecta
  1. SELECT DISTINCT id, skrot
  2. FROM grupa
  3. WHERE skrot LIKE '$sf%' AND id_wydzial LIKE '$sc' AND id_kierunek LIKE '$sb' AND id_rok_akad LIKE '$sd'


Ma kos jakis pomysl jak rozwiazac ten problem?
Go to the top of the page
+Quote Post
060156
post
Post #4





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Columbus Georgia

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


Potrzebujesz,
sledzic stany przy kolejnych selectach ..
Uzyj php session, gdzie mozesz te informacje
zapamietywac i np. ich i database generowac
wlasciwe dane do web page ..
Go to the top of the page
+Quote Post
Dafidov
post
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.07.2005
Skąd: Śląsk Bytom

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


Szukałem i natrafiłem jeszcze na Classa Bee Selected ale ta Classa odwołuje się do dwóch selectów ja u siebie wykorzystuje 3 zapytnia zależne więc jest to bardziej kłopotliwe, myśle nawet o rzobiciu tego na dwa mniejsze kroki gdyż jest to mocno problematyczne wyłuskanie danych.

edit:

Zrobiłem to tak jak 060156 sugerowal - zapamietalem zmienne w zmiennych sesyjnych i zrobilem dwa formularze jedne wiarzacy jedne dane w prae drugi wybierajacy trzecia dana a potem wszystko wlanalem do jendej transakcji i w koncu smiga jak trzeba (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Dafidov 30.04.2006, 00:33:35
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 20:28