Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyszukiwarka+combobox z bazy
Forum PHP.pl > Forum > PHP
misty
Witam.
tworze prosta wyszukwarke.tj uzytkownik ma 3 pola (combobox) z ktorych wybiera co chce szukac i zakresy(daty od -do). Daty pobierane sa automatycznie z bazy danych. Moj problem jest nastepujacy: gdy uzykownik wybierze date od i date do zawsze pojawia mi sie ostatnia w bazie data, tj. powiedzmy ze ostatnia jest 25-10-07, user wybierze zas 12-10-07 to mimo to wybierana jest ostatnia. Fragemencik mojego kodu:
  1. <?php
  2. $szukaj=$_POST['szukaj'];
  3. $opcja=$_POST['opcja'];
  4. $data_od_id=$_POST['data_od_id'];
  5. $data_od=$_POST['data_od'];
  6.  
  7. $pobierz_daty=pg_query($polaczenie, "select * from t_data;");
  8. echo "<table border><tr><td>Opcja</td><td>Data od</td></tr><form action='test.php' method='POST'><tr><td>
  9. <select name='opcja'>
  10. <option>opcja 1</option>
  11. <option>opcja 2</option></select></td>
  12. <td><select name='data_id'>";
  13. while ($row=pg_fetch_array($pobierz_daty)) {
  14. foreach($row as $data)
  15. $data_id=$row['id'];
  16. $data_od=$row['data'];
  17. echo "<option>$data_od</option>";
  18. }
  19. echo "</select></td><td><input type='submit' name='szukaj' value='szukaj'></td></tr></form></table>";
  20.  
  21. //uzytkownik wybiera jakas opcje i date i jesli kliknie na szukaj ma sie pojawic w
    ybrana opcja i data
  22. if($szukaj){
  23. echo "$opcja i $data_od<br>";
  24. }
  25. ?>

Problem wlasnie w tym, ze opcja sie zawsze wyswietla taka jaka wybral uzytkownik, natomiast data (czy data_id) zawsze pokazuje sie ostatnia w bazie. Ma ktos z Was moze pomysl gdzie mam blad?
Pzdr!
Tibod
Jeżeli dobrze zrozumiałem chcesz filtrować po dacie. Wszystko fajnie, tylko że w Twoim zapytaniu SQL nie ma żadnego filtrowania. Poczytaj może o WHERE
misty
nie, nie rozumiesz mnie. filtrowaniem sie nie przejmuje, mam juz odpowiednie zapytania stworzone. chodzi o to, ze jak user wybierze date np. sprzed 3 dni i da 'szukaj' to zmienna $data_od ma miec wartosc daty sprzed 3 dni. a skrypt, zmienna $data_od przyjmuje zawsze ostatnia date w bazie, a wlasciwie to ostatnia wyciagnieta z bazy. jak widzisz daty sa wyciagniete za pomoca zapytania, ladnie sie pokazuja na stronie w postaci combo boxa. ale jakby wogole nie rozumial tego, ze $data_od moze przyjmowac rozne wartosci, w zaleznosci od tego co wybierze user. tu jest gdzies blad po str skryptu. wyszukiwanie to krok nastepny, na razie musze miec sczytywane odpowiednie wartosci (z czym wlasnie jest problem) wg ktorych pozniej bede dokonywac filtracji. mam nadz ze teraz wyjasnilam lepiej o co mi chodzi
Cezar708
Nie wiem czy ja dobrze zrozumiałem, ale Ty chcesz pobrać z bazy danych wszystkie występowanie dat po to aby potem wyświetlić je w swoim combo. potem użytkownik sobie je wybierze i to będzie służyło do jakiejś tam filtracji...

To może tak zrób popraw odpowiedni fragment kodu:
  1. <?php
  2. while ($row=pg_fetch_array($pobierz_daty)) {
  3. foreach($row as $data)
  4. $data_id=$row['id'];
  5. $data_od_w_foreach=$row['data'];
  6. echo "<option value='$data_od_w_foreach'>$data_od_w_foreach</option>";
  7. }
  8. ?>


ponieważ wcześniej nadpisywałeś zmienną $data_od, dlatego była ta ostatnia z bazy.
misty
no pewnie gdzies nadpisuje.. tylko akurat nie widze zadnej roznicy pomiedzy Twoim framgentem skryptu, a moim..
Cezar708
Twój fragment:
  1. <?php
  2. while ($row=pg_fetch_array($pobierz_daty)) {
  3. foreach($row as $data)
  4. $data_id=$row['id'];
  5. $data_od=$row['data'];
  6. echo "<option>$data_od</option>";
  7. }
  8. ?>

Mój fragment:
  1. <?php
  2. while ($row=pg_fetch_array($pobierz_daty)) {
  3. foreach($row as $data)
  4. $data_id=$row['id'];
  5. $data_od_w_foreach=$row['data'];
  6. echo "<option value='$data_od_w_foreach'>$data_od_w_foreach</option>";
  7. }
  8. ?>


różnice:
1. zamieniłem nazwę $data_od na $data_od_w_foreach
2. dodałem do <option> parametr value='$data_od_w_foreach'

Jak widać różnice są tongue.gif i zmienna $data_od nie jest już nadpisywana
misty
tej, ale na prawde roznicy nie ma-teraz za to jest nadpisywana zmienna '$data_od_w_foreach'. i efekt jest ten sam, to widac na pierwszy rzut oka. ale dla pewnosci wrzucilam Twoj fragment i tak jak mowilam-to jest to samo. czyli nadal nie dziala:/
Cezar708
hmm... w takim razie nie zrozumiałem,

to może błąd masz tutaj:
  1. <select name='data_id'>


generujesz formatkę, która zawiera pole o nazwie `data_id` a poprzez POST pobierasz `data_od`
Cytat
  1. <?php
  2. $data_od=$_POST['data_od'];
  3. ?>


być może jak poprawisz nazwę to Ci pomoże.
misty
nee, probowalam tez pobierac $data_od_id ale takze pojawia sie ostatnie id. o co mi chodzi, to rozumiesz dobrze:) tylko wlasnie nie wychodzi rozwiazanie problemu :/ generalnie stosowalam identyczny zapis kiedys w przypadku innego formularza. tylko tam pola nie byly w tabeli, tylko normalnie,tj.
opcja [combobox]
daty [combobox]
szukaj

i wtedy dzialalo.
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.