![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 298 Pomógł: 0 Dołączył: 10.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie,
Mam problem ze sprawdzenie roku i miesiąca i nie wiem czy dobrze kieruje zapytanie aby podmienił ceny w bazie na statystyki. Mój skrypt wygląda tak Skrypt który sprawdza czy miesiąc i rok jest w bazie jeśli jest to uaktualnia ceny w bazie.
A tu formularze które pobierają cenę netto brutto i date i dodają do bazy
to że dodaje do bazy to działa ale nie działa mi UPDATE do bazy nie wiem co jest nie tak. Proszę o pomoc. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Sprawdź w dokumentacji co jest drugim argumentem funkcji date.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 298 Pomógł: 0 Dołączył: 10.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Drugim argumentem funkcji dat() jest timestamp.
I no co muszę zrobić żeby to uzyskać czyli sprawdzanie czy rok i miesiąc jest aktualny (IMG:style_emoticons/default/questionmark.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Podstawić timestamp.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 298 Pomógł: 0 Dołączył: 10.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ma możesz pokazać przykład jak mam to zrobić (IMG:style_emoticons/default/questionmark.gif)
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A zescie sie uczepili bez sensu tego timestamp chlopaka... .Przeciez widac ze wklada tam timestamp...
Przeciez ma ewidentnie inne bledy takie jak: 1) if($rok >= $rok) powaznie? Jesli 2 jest wieksze lub rowne 2? To chyba zawsze jest prawda co nie? 2) data='".date("Y/m", $_POST['data'])."'" A nie robi update z tego powodu. Porownujesz date timestamp do daty w formacie RRRR/MM - no nie ma szans by byly rowne. Temu nie robi update bo nie znajduje rekordu do update. Powinno byc poprostu data='".$_POST['data']."'" 3) No i generalnie pomijajac te nieszczesne warunki w zapytaniu, to ten kod $result = dbquery($link,"SELECT data FROM ".$db_prefix."zamowien WHERE data='".date("Y/m", $_POST['data'])."'"); $data = dbarray($result); $rok=date("Y/m", $data['data']); if($rok >= $rok){ Nie ma zadnego sensu... Pobierasz z bazy date, ktora jest rowna dacie z forma a potem sprawdasz czy jest rowna dacie z forma. Gdzie tu logika? Skoro sie pobralo z bazy dla tego warunku znaczy ze jest rowna no nie? A jesli chciales sprawdzic czy istnieje rekord z ta data i jesli nie to go wlozyc to wystarczy wlasnie sprawdzic obecnosc tego rekordu. ps: przenosze |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 298 Pomógł: 0 Dołączył: 10.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Pozmieniałem i jeszcze nie jest to tego czego chce bo za każdym razem dodaje mi nową kolumnę w bazie i nie edytuje tej z miesiącem i rokiem 2019/02 taki format chce uzyskać przy sprawdzaniu aby skrypt wiedział ze mamy luty 2019.
Tak teraz wygląda mój kod
W czymś jest jeszcze błąd (IMG:style_emoticons/default/questionmark.gif) p.s bo w bazie zapisuje mi w ten sposób 1549463022 |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
ZAWSZE sprawdzaj co dostajesz na danym etapie, np
$data = dbarray($result); var_dump($data); Cytat .s bo w bazie zapisuje mi w ten sposób 1549463022 Tak, to jest timestamp tak jak juz mowilem w poprzednim poscie edit: no dobra, zle powiedzialem z tym nie formatowaniem. zapomnialem ze ty tam w input wstawiasz akutalny timestamp, ktory z racji definicji za kazdym razem jest inny wiec o to data='".$_POST['data']."' nigdy nie bedzie prawda. W tym zapytaniu jak porownujesz to musisz w mysql sformatowac data do formatu Y/m oraz $_POST['data'] do formatu Y/m - w celach porownania. Bo teraz jak masz to te dwa czasy moga sie roznich chocby o sekunde i juz nie bedzie porownania |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 298 Pomógł: 0 Dołączył: 10.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Podaje mi bool(false) czyli nie dociera mi nic z bazy i nie jest sprawdzane.
|
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Spraswdz moj EDIT z poprzedniego posta
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 298 Pomógł: 0 Dołączył: 10.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Robiłem tak jak mówisz ale nadal mam bool(false)
zobacz sam że zmieniłem
|
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Wydaje mi sie ze dosc wyraznie napisalem, ze obie strony porownania masz skonwertowac do formaty Y/m. Zarowno po stronie mysql jak i php
ps: No ale tego $rok=date("Y/m", $data['data']); if($rok){ juz miales nie zmieniac. Mialo byc to porownanie co bylo wczesniej. |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 298 Pomógł: 0 Dołączył: 10.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o zapis do bazy żeby był 2019/2 (IMG:style_emoticons/default/questionmark.gif)
|
|
|
![]()
Post
#15
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
WHERE data='".date("Y/m", $_POST['data'])."'");
To DATA ktore jest zaraz po WHERE masz przed porownanie skonwertowac do formatu Y/m. Przeciez aktualnie jest jako timestamp wiec nie jestes w stanie bez konwersji tego porownac, czyz nie? manual mysql-> funkcje daty i czasu -> formatowanie timestamp |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 298 Pomógł: 0 Dołączył: 10.01.2014 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem coś takiego ale chyba jeszcze nie oto chodziło.
Edit Po przeczytaniu kilkadziesiąt razy zrozumiałem o co chodzi i teraz mi dział tak jak powinno. A zrobiłem to tak
To jest moja funkcja
Ten post edytował pawel06281990 6.02.2019, 22:12:52 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.09.2025 - 10:48 |