Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z SELECTEM
krzesik
post 19.11.2012, 11:20:14
Post #1





Grupa: Zarejestrowani
Postów: 497
Pomógł: 1
Dołączył: 25.08.2012

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


Witam, proszę o pomoc w rozwiązaniu problemu. Mam poniższy kod pokazujący listę rozwijaną:
  1. echo 'Szukaj po gatunku zw.: ';
  2. echo '<select name="animals" onchange="submit();">';
  3. echo '<option value="">Wszystkie</option>';
  4. while($nt=mysql_fetch_array($wynanimalsy))
  5. {
  6. echo '<option '.($_POST['animals']==$nt['animals'] ? 'SELECTED=""' : '').' value="'.($nt['animals']).'">'.($nt['animals']).'</option>';
  7. }
  8. echo '</select>';

takie coś działa mi dobrze (konkretnie przy uruchomieniu skryptu w polu jest napis Wszystkie) przy poniższym zapytaniu do tabeli:
  1. $animalsy = "SELECT DISTINCT animals from $tabela ORDER BY animals ASC";
  2. $wynanimalsy = mysql_query ($animalsy);

jednak chcę pobrać trzy pola, więc pytam:
  1. $animalsy = "SELECT DISTINCT animals AS animals from $tabela
  2. UNION
  3. SELECT DISTINCT animals1 AS animals from $tabela
  4. UNION
  5. SELECT DISTINCT animals2 AS animals from $tabela ORDER BY animals ASC";
  6. $wynanimalsy = mysql_query ($animalsy);

Przy takim zapytaniu, napis Wszystkie znika i jest puste pole, lista jest wypełniona prawidłowo, w liście mam napis Wszystkie tak jak być powinno.
Go to the top of the page
+Quote Post
b4rt3kk
post 19.11.2012, 11:25:21
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Wyświetl sobie wynik takiego zapytania zwyczajnie, poprzez print_r.

  1. while($nt=mysql_fetch_array($wynanimalsy))
  2. {
  3. print_r($nt);
  4. }


I zobacz czy struktura tabeli odpowiada temu co chcesz wyświetlić.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
Niktoś
post 19.11.2012, 11:31:59
Post #3





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Kurcze ja czytam n-ty raz i nie widzę w czym problem.
Cytat
Witam, proszę o pomoc w rozwiązaniu problemu.
-jakiego?
Cytat
Mam poniższy kod pokazujący listę rozwijaną.....
.....takie coś działa mi dobrze

To w czym problem?
Cytat
jednak chcę pobrać trzy pola, więc pytam:
- nie widzę pytania.
Cytat
Przy takim zapytaniu, napis Wszystkie znika i jest puste pole, lista jest wypełniona prawidłowo, w liście mam napis Wszystkie tak jak być powinno.


I znów nasuwa się pytanie- w czym możemy Ci pomóc?

Ten post edytował Niktoś 19.11.2012, 11:32:14
Go to the top of the page
+Quote Post
krzesik
post 19.11.2012, 11:37:39
Post #4





Grupa: Zarejestrowani
Postów: 497
Pomógł: 1
Dołączył: 25.08.2012

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


Problem jest w tym że jak uruchamiam skrypt to nie mam napisu WSZYSTKIE ale lista jest wypełniona prawidłowo i tam napis wszystkie JEST.
Moj problem znika jeśli z zapytania usunę UNIONY....
Go to the top of the page
+Quote Post
nospor
post 19.11.2012, 11:41:31
Post #5





Grupa: Moderatorzy
Postów: 36 519
Pomógł: 6307
Dołączył: 27.12.2004




Cytat
to nie mam napisu WSZYSTKIE ale lista jest wypełniona prawidłowo i tam napis wszystkie JEST.

A ja nie mam samochodu audi ale go mam wink.gif

Piszesz że nie ma napisu "wszystkie" a dwa wyrazy później już piszesz że jednak jest. To jest czy go nie ma? Gdzie nie ma a gdzie jest. Twój post to jeden wielki mętlik. Weź pod uwagę, że nie czytamy ci w myślach, nie siedzie Tobie na kolanach i nie widzimy tego co ci się wyświetla na monitorze


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
krzesik
post 19.11.2012, 11:52:13
Post #6





Grupa: Zarejestrowani
Postów: 497
Pomógł: 1
Dołączył: 25.08.2012

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


Po uruchomieniu skryptu tak to wygląda a chciałbym aby w tym pustym polu był napis Wszystkie
1
Tak wygląda po rozwinięciu
2

Ten post edytował krzesik 19.11.2012, 11:53:16
Go to the top of the page
+Quote Post
b4rt3kk
post 19.11.2012, 11:59:21
Post #7





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Tak więc dodaj do pola WSZYSTKIE selected i po sprawie?

  1. echo '<option value="" selected>Wszystkie</option>';


Masz tam ifa, który dodaje selected dla pola wysłanego POST, ale masz także pustą wartość, tak więc:

  1. $_POST['animals']==$nt['animals']


warunek jest spełniony dla pustego pola, bo bez przesłania danych POST, pole $_POST['animals'] jest puste. Dodaj do warunku isset().

  1. if (isset($_POST['animals']) AND $_POST['animals']==$nt['animals']) {


Ten post edytował b4rt3kk 19.11.2012, 12:00:39


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
Niktoś
post 19.11.2012, 12:01:03
Post #8





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


  1. echo '<option value="">Wszystkie</option>';
  2.  
  3. while($nt=mysql_fetch_array($wynanimalsy))
  4.  
  5. {
  6.  
  7. echo '<option '.($_POST['animals']==$nt['animals'] ? 'SELECTED=""' : '').' value="'.($nt['animals']).'">'.($nt['animals']).'</option>';
  8.  
  9. }
  10.  
  11. echo '</select>';

Spróbuj tak:
  1. echo '<option value="" '.(isset($_POST)== true? 'SELECTED=""' : "SELECTED").'>Wszystkie</option>';
  2.  
  3. while($nt=mysql_fetch_array($wynanimalsy))
  4.  
  5. {
  6.  
  7. echo '<option '.($_POST['animals']==$nt['animals'] ? 'SELECTED="SELECTED"' : '').' value="'.($nt['animals']).'">'.($nt['animals']).'</option>';
  8.  
  9. }
  10.  
  11. echo '</select>';


Ten post edytował Niktoś 19.11.2012, 12:30:12
Go to the top of the page
+Quote Post
krzesik
post 19.11.2012, 12:10:01
Post #9





Grupa: Zarejestrowani
Postów: 497
Pomógł: 1
Dołączył: 25.08.2012

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


niestety efekt taki sam, ale tak jak napisałem na wstępie, może coś z zapytaniem przy użyciu UNION skopałem?
Go to the top of the page
+Quote Post
Niktoś
post 19.11.2012, 12:14:32
Post #10





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Poprawiłem u góry-spróbuj wkleić kod jeszcze raz i daj znać czy działa.
Go to the top of the page
+Quote Post
krzesik
post 19.11.2012, 12:17:25
Post #11





Grupa: Zarejestrowani
Postów: 497
Pomógł: 1
Dołączył: 25.08.2012

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


niestety....
Go to the top of the page
+Quote Post
Niktoś
post 19.11.2012, 12:39:14
Post #12





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Myślę, że nie są to błędy wynikające z zapytania sql lecz z ustawieniem flagi selceted dla właściwości SELECTED dla poszczególnych przypadków. Miałem błedy z apostrofami -teraz powinno być ok.Kiedy użytkownik prześle formularz to flaga powinna być ustawiona na opcję ze zwierzęciem kiedy nie prześle powinno w polu select zostać wybrana opcja wszystkie.
Chyb że coś jeszcze naskrobałem, gdyż pisze z palca nie testując tego.

Ten post edytował Niktoś 19.11.2012, 12:46:48
Go to the top of the page
+Quote Post
b4rt3kk
post 19.11.2012, 12:50:26
Post #13





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


  1. function isSelected($field) {
  2. if (isset($_POST['animals'] AND $_POST['animals'] == $field) $foo = ' selected'; else $foo = '';
  3. return $foo;
  4. }
  5. function isPost() {
  6. if ($_SERVER['REQUEST_METHOD'] == 'POST') $foo = ''; else $foo = ' selected';
  7. return $foo;
  8. }
  9.  
  10. echo 'Szukaj po gatunku zw.: ';
  11. echo '<select name="animals" onchange="submit();">';
  12. echo '<option value="" '.isPost().'>Wszystkie</option>';
  13. while($nt=mysql_fetch_array($wynanimalsy))
  14. {
  15. echo '<option '.isSelected($nt['animals']).' value="'.($nt['animals']).'">'.($nt['animals']).'</option>';
  16. }
  17. echo '</select>';


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
Niktoś
post 19.11.2012, 13:05:21
Post #14





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


  1. echo '<option value="" SELECTED= '.isPost().'>Wszystkie</option>';
  2. echo '<option SELECTED= '.isSelected($nt['animals']).' value="'.($nt['animals']).'">'.($nt['animals']).'</option>';

wink.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 Wersja Lo-Fi Aktualny czas: 21.09.2024 - 06:22