Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zakres daty OD ... DO do wyszukania
maniek22
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 2.05.2007

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


Witam. Moze ktoś mi pomoże bo nie moge znalezc nigdzie jak zmodyfikowac moj skrypt zebym mogl wyszukiwac date z zakresu OD .. DO wpisanego w formularzu. Moze ktos wie jak zmienic skrypt.

Dzieki. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


  1. <?
  2. include_once("funkcje.php");
  3.  
  4. echo "<center><h2>Oto dane spełniajace kryteria wyszukiwania:</h2></center>";
  5.  
  6. $zapytanie = "select * from klienci";
  7. If ($Handlowiec<>""||$Data<>""||$Nr_umowy<>""||$Nazwisko<>""||$Miejscowosc<>""||$Towar<>""){
  8. $zapytanie=$zapytanie." where";
  9. if ($Handlowiec<>"") $zapytanie=$zapytanie." Handlowiec like '%$Handlowiec%' and";
  10. if ($Data<>"") $zapytanie=$zapytanie." Data like '%$Data%' and";
  11. if ($Nr_umowy<>"") $zapytanie=$zapytanie." Nr_umowy like '%$Nr_umowy%' and";
  12. if ($Nazwisko<>"") $zapytanie=$zapytanie." Nazwisko like '%$Nazwisko%' and";
  13. if ($Miejscowosc<>"") $zapytanie=$zapytanie." Miejscowosc='$Miejscowosc' and";
  14. if ($Towar<>"") $zapytanie=$zapytanie." Towar='$Towar' and";
  15. $zapytanie = substr($zapytanie, 0, -3);
  16. }
  17.  
  18. $zapytanie = $zapytanie." order by ID_Klienta";
  19.  
  20. wyswietl_klientow($zapytanie);
  21.  
  22. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


NIe napisales jaka baza danych.

jesli MySQL to zadziala na przyklad

  1. (...) WHERE DATA > '$data_od' AND DATA < '$data_do'


w PostgreSQL np:

  1. (...) WHERE DATA BETWEEN '$data_od' AND '$data_do'


PS:
  1. <?php
  2. if ($Data<>"") $zapytanie=$zapytanie." Data like '%$Data%' and";
  3. ?>


iLIKE do sprawdzania daty?? Czy kolumna `Data` jest chociaż typu Date?

Ten post edytował Cezar708 6.05.2007, 15:38:00
Go to the top of the page
+Quote Post
maniek22
post
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 2.05.2007

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


Tak baza jest na MySQL. Co do drugiego pytania to Kolumna z data jest typu Data.


Moze jakas podpowiedz jak zmodyfikowac ten skrypt, ew. co wyrzucic

Dzieki
Go to the top of the page
+Quote Post
Cezar708
post
Post #4





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


No jeśli chodzi o datę to juz wiesz,
Zamiast
  1. <?php
  2. if ($Data<>"") $zapytanie=$zapytanie." Data like '%$Data%' and";
  3. ?>

Wstawiłbym
  1. <?php
  2. if ($Data<>"") $zapytanie=$zapytanie." Data = '$Data' and";
  3. ?>

lub jeśli masz przedział to:
  1. <?php
  2. $zapytanie=$zapytanie." Data > '$data_od' AND Data < '$data_do' and";
  3. ?>

najlepiej żeby kolumna handlowiec była typu integer i była kluczem obcym do tabeli `Handlowcy`
więc zmieniłbym:
  1. <?php
  2. if (is_numeric($Handlowiec)) $zapytanie=$zapytanie." Handlowiec='$Handlowiec' and";
  3. ?>

podobnie z kolumnami Miejscowość i Towar.

Chciaż szczerze mówiąc zastanawiam się do czego służy Ci tabela `klienci` może zamiast niej lepsza byłaby tabela `zamowienia` a w niej klucz obcy do tabeli `klienci`??
Go to the top of the page
+Quote Post
Void(Null)
post
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 12.04.2007
Skąd: Błonie

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


Cytat(maniek22 @ 6.05.2007, 17:16:12 ) *
Tak baza jest na MySQL. Co do drugiego pytania to Kolumna z data jest typu Data.
Moze jakas podpowiedz jak zmodyfikowac ten skrypt, ew. co wyrzucic

Dzieki


  1. ...DATA LIKE '%$Data%'
- BTW: Metoda LIKE przy przeszukiwaniu dat to bardzo dobre rozwiązanie kiedy chcesz uzyskać rekordy z "częściowego" zakresu. Dla np. rekordów z Marca 2006 roku możesz do kwerendy przesłać ciąg 2006-03, dla samych "marców" -03-.

Pozdr
Go to the top of the page
+Quote Post
maniek22
post
Post #6





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 2.05.2007

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


Zmodyfikowałem tak jak radziłes skrypt ale niestety przy wpisywaniu zakresu od .. do w formularzu wyswietla mi wszystkie rekordy bez wzgledu na to co wpisalem w pola daty. Nie wiem co moze byc tego powodem.


  1. <?
  2. include_once("funkcje.php");
  3.  
  4. echo "<center><h2>Oto dane spełniajace kryteria wyszukiwania:</h2></center>";
  5.  
  6. $zapytanie = "select * from klienci";
  7. If ($Handlowiec<>""||$Data<>""||$Nr_umowy<>""||$Nazwisko<>""||$Miejscowosc<>""||$Towar<>""){
  8. $zapytanie=$zapytanie." where";
  9. if ($Handlowiec<>"") $zapytanie=$zapytanie." Handlowiec like '%$Handlowiec%' and";
  10. if ($Data<>"") $zapytanie=$zapytanie." Data > '$Data_od' AND Data < '$Data_do' and";
  11. if ($Nr_umowy<>"") $zapytanie=$zapytanie." Nr_umowy like '%$Nr_umowy%' and";
  12. if ($Nazwisko<>"") $zapytanie=$zapytanie." Nazwisko like '%$Nazwisko%' and";
  13. if ($Miejscowosc<>"") $zapytanie=$zapytanie." Miejscowosc='$Miejscowosc' and";
  14. if ($Towar<>"") $zapytanie=$zapytanie." Towar='$Towar' and";
  15. $zapytanie = substr($zapytanie, 0, -3);
  16. }
  17.  
  18. $zapytanie = $zapytanie." order by ID_Klienta";
  19.  
  20. wyswietl_klientow($zapytanie);
  21.  
  22. ?>



--
napisałeś dwa razy to samo - poprawiłem
~siemakuba


Ten post edytował siemakuba 7.05.2007, 20:56:15
Go to the top of the page
+Quote Post
miska
post
Post #7





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 23.11.2003

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


... a co pozostanie z twojego zapytania gdy jedna ze zmiennych tj. $towar okaże sie pusta (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ... baza się wywali ...

Ten post edytował miska 7.05.2007, 22:30:42
Go to the top of the page
+Quote Post
maniek22
post
Post #8





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 2.05.2007

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


Nie jeżeli nie wprowadze zadnej wartosci w formularzu to wyswietla mi wszystkie rekordy, mozna tez wpisac jedno kryterium , dwa lub wiecej. Tylko nie dziala mi nadal ten zakres daty od.. do i nie wiem co jest tego przczyczyna.
Go to the top of the page
+Quote Post
miska
post
Post #9





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 23.11.2003

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


Cytat(maniek22 @ 8.05.2007, 18:38:47 ) *
Nie jeżeli nie wprowadze zadnej wartosci w formularzu to wyswietla mi wszystkie rekordy, mozna tez wpisac jedno kryterium , dwa lub wiecej. Tylko nie dziala mi nadal ten zakres daty od.. do i nie wiem co jest tego przczyczyna.


  1. <?php
  2. $zapytanie = substr($zapytanie, 0, -3);
  3. }
  4. ?>
sorry nie zauważyłem tego (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

a nie lepiej przenieść AND na początek każdej $zapytanie i masz jedna linijkę kodu mniej ?
Go to the top of the page
+Quote Post
Kicok
post
Post #10





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Cytat
a nie lepiej przenieść AND na początek każdej $zapytanie i masz jedna linijkę kodu mniej ?

Wtedy może wyjść zapytanie typu:
SELECT * FROM klienci WHERE AND towar = '$Towar'

Naprawienie tego zapytania to też jedna linijka kodu, w dodatku bardziej skomplikowana ;]
Go to the top of the page
+Quote Post
prond
post
Post #11





Grupa: Zarejestrowani
Postów: 254
Pomógł: 10
Dołączył: 8.11.2006
Skąd: Warszawa

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


A może zrzucać warunki do tablicy, a potem implode :
  1. <?php
  2. $arrConditions = array();
  3.  
  4. if ($Handlowiec<>"") $arrConditions[] = " Handlowiec like '%$Handlowiec%'";
  5. if ($Data<>"") $arrConditions[] = " Data > '$Data_od' AND Data < '$Data_do'";
  6. if ($Nr_umowy<>"") $arrConditions[] = " Nr_umowy like '%$Nr_umowy%'";
  7. if ($Nazwisko<>"") $arrConditions[] = " Nazwisko like '%$Nazwisko%'";
  8. if ($Miejscowosc<>"") $arrConditions[] = " Miejscowosc='$Miejscowosc'";
  9. if ($Towar<>"") $arrConditions[] = " Towar='$Towar'";
  10.  
  11. $strConditions = (empty($arrConditions)) ? '' : "where ".implode(' and ', $arrConditions);
  12. ?>
Go to the top of the page
+Quote Post
Sopnet
post
Post #12





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 28.03.2004
Skąd: Poznań

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


  1. <?php
  2. $zapytanie = "select * from klienci WHERE 1";
  3. if ($Handlowiec<>"") $zapytanie .= " AND Handlowiec like '%$Handlowiec%' ";
  4. if ($Data<>"") $zapytanie .= " AND Data > '$Data_od' AND Data < '$Data_do' ";
  5. ?>

itd (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Co do daty to nie wiem co zawieraja zmienne $Data. $Data_od i $Data_do

Ja bym sprawdzal datay. Czy np nie sa takie same, czy $Data_do nie jest mniejsza od $Data_od, itd. Moze sprobuj "Data BETWEEN $Data_od AND $Data_do.
Go to the top of the page
+Quote Post
maniek22
post
Post #13





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 2.05.2007

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


Zmodyfikowalem skypt tak jak radziles ale niestety dalej wyswietla mi wszystkie rekordy.

  1. <?
  2. include_once("funkcje.php");
  3.  
  4. echo "<center><h2>Oto dane spełniajace kryteria wyszukiwania:</h2></center>";
  5.  
  6. $zapytanie = "select * from klienci WHERE 1";
  7. if ($Handlowiec<>"") $zapytanie .= " AND Handlowiec like '%$Handlowiec%' ";
  8. if ($Data<>"") $zapytanie .= " Data BETWEEN '$Data_od' AND '$Data_do'";
  9. if ($Nr_umowy<>"") $zapytanie .= " AND Nr_umowy like '%$Nr_umowy%' ";
  10. if ($Nazwisko<>"") $zapytanie .= " AND Nazwisko like '%$Nazwisko%' ";
  11. if ($Miejscowosc<>"") $zapytanie .= " AND Miejscowosc like '%$Miejscowosc%' ";
  12. if ($Towar<>"") $zapytanie .= " AND Towar like '%$Towar%' ";
  13.  
  14.  
  15.  
  16. $zapytanie = $zapytanie." order by ID_Klienta";
  17.  
  18. wyswietl_klientow($zapytanie);
  19.  
  20. ?>


Moze dodam jeszcze jakie mam kolumny w mysql: Id_klienta, Handlowiec, Nr_umowy, Nazwisko, Imie, Miejscowosc, Adres, Telefon, Raty, Towar, Ilosc, Cena, Wartosc, Data

A formularz wyszukiwania ma takie pola: Handlowiec, Data_od, Data_do, Nr_umowy, Miejscowosc, Towar


Moze to troche rozjasni sytuacje i ktoś bedzie wiedział co zle mam napisane?
Go to the top of the page
+Quote Post
aguirre
post
Post #14





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 10.05.2007

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


Cytat
if ($Data<>"") $zapytanie .= " Data BETWEEN '$Data_od' AND '$Data_do'";


Jesli w formularzu masz Data_od i Data_do to nie wiem po co jest w ogole zmienna $Data.

Inne uwagi:

1. Byc moze sensownie byloby podzielic kazda z dat (Data_od i Data_do) na Data_od_rok, Data_od_ms, Data od_dzien, Data_do_rok, Data_do_ms, Data_do_dzien; dla kazdej stowrzyc osobe pole SELECT z domyslnie wybrana odpowiednio najstarasza i dzisiejsza data. Wtedy w ogole nie musialoby byc pogrubionego warunku bo obie (sklejone juz) daty nie moglyby byc puste.

2. Jesli jeden klient moze dostarczac wiecej niz jeden towar, pewnie sensowanie byloby stworzyc osobna tabele Towary z kluczem obcym Id_klienta.
Go to the top of the page
+Quote Post
maniek22
post
Post #15





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 2.05.2007

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


Probowałem juz różnych kombinacji ale niestety nie dzialaja. Moze ktos juz mial podobny problem i moglby sie podzielic rozwiazanie bo nie moge sobie poradzic.

Wielkie dzieki!

Widze ze moj temat chyba umarl.

Wykonując skrypt w mysql wszystko ladnie dziala i wyswietla mi daty z zadanego zakresu ale w php nie chce (wyswietla wszystkie daty), nie wiem co moze byc nie tak juz roznych mozliwosci probowalem.
Prosze o jakas pomoc.
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 - 23:33