Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z SELECTEM
Forum PHP.pl > Forum > Przedszkole
krzesik
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.
b4rt3kk
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ć.
Niktoś
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?
krzesik
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....
nospor
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
krzesik
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
b4rt3kk
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']) {
Niktoś
  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>';
krzesik
niestety efekt taki sam, ale tak jak napisałem na wstępie, może coś z zapytaniem przy użyciu UNION skopałem?
Niktoś
Poprawiłem u góry-spróbuj wkleić kod jeszcze raz i daj znać czy działa.
krzesik
niestety....
Niktoś
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.
b4rt3kk
  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>';
Niktoś
  1. echo '<option value="" SELECTED= '.isPost().'>Wszystkie</option>';
  2. echo '<option SELECTED= '.isSelected($nt['animals']).' value="'.($nt['animals']).'">'.($nt['animals']).'</option>';

wink.gif
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.