![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 28.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich! Mam kilka pytań, otóż przygotowałem kod do wyświetlania przypomnienia okazji która ma się wydarzyć za 7 dni. Struktura wygląda następująco:
Baza MySQL: Table name: Okazje ID(int) | Dzień (int) | Miesiąc(int) | Nazwa_wydarzenia(varchar) | Banner(varchar) Tak jak widzicie kolumny dzień i miesiąc są przygotowane na (int), wiem może nie jest to idealny sposób, ale dla początkującego całkiem wygodny ![]() Kod PHP: <?php include 'connect.php'; $select = mysql_query("SELECT * FROM `Okazje`") or die(mysql_error()); while($row=mysql_fetch_array($select)) { $liczba1 .= $row['dzień']; $liczba2 .= $row['miesiąc']; $wydarzenie .= $row['nazwa_wydarzenia']; $banner .= $row['banner']; } $dzien = date('j'); $miesiac = date('n'); if((($dzien + 7)==$liczba1)&&($miesiac==$liczba2)) { echo $wydarzenie.' za 7 dni'.'<img src='.$banner.'><br>'; } else if((($dzien + 6)==$liczba1)&&($miesiac==$liczba2)) { echo $wydarzenie.' za 6 dni'.'<img src='.$banner.'><br>'; } else if((($dzien + 5)==$liczba1)&&($miesiac==$liczba2)) { echo $wydarzenie.' za 5 dni'.'<img src='.$banner.'><br>'; } else if((($dzien + 4)==$liczba1)&&($miesiac==$liczba2)) { echo $wydarzenie.' za 4 dni'.'<img src='.$banner.'><br>'; } else if((($dzien + 3)==$liczba1)&&($miesiac==$liczba2)) { echo $wydarzenie.' za 3 dni'.'<img src='.$banner.'><br>'; } else if((($dzien + 2)==$liczba1)&&($miesiac==$liczba2)) { echo $wydarzenie.' za 2 dni'.'<img src='.$banner.'><br>'; } else if((($dzien + 1)==$liczba1)&&($miesiac==$liczba2)) { echo $wydarzenie.' już jutro'.'<img src='.$banner.'><br>'; } else if(($dzien==$liczba1)&&($miesiac==$liczba2)) { echo $wydarzenie.' Świętujemy! '.'<img src='.$banner.'><br>'; } dalsza część skryptu PHP... ?> tak to mniej więcej wygląda i teraz mam pytania: 1. Czy w/w warunek można bardziej zoptymalizować gdybym miał 50 dni do sprawdzenia to tych else if() było by od groma. Pewnie pętlą wyświetlać tylko za bardzo nie wiem jak miałbym dni do końca sprawdzać, tak jak to ręcznie napisałem. 2. Załóżmy że jest więcej niż jedno wydarzenie tego samego dnia, to już nie chce mi wyświetlać, pewnie kwestia gdzieś nie postawionego operatora przypisania? 3. Tak z innej beczki, nie działają mi rodzaje odstępów "\n", "\t" wiecie czy może w php.ini nie odpowiada za to jakaś komenda, bo nie chciałem mieszać kodu html z php, ale nie działają mi w tej formie odstępy. Z góry dzięki za wszystkie odpowiedzi i proszę o wyrozumiałość dla początkującego ![]() |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
W kodzie html enter czy tabulator nie działają. To są podstawy HTML
Umieszczaj kod php w BBCODE PHP ad2) wyswietl sobie co zawiera $liczba1 a zrozumiesz czemu ci warunki nie działają. Czy tak trudno samemu tak prostą analizę zrobić ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 28.05.2013 Ostrzeżenie: (0%) ![]() ![]() |
Sory tam nie powinno być kropki w pętli, nie zdążyłem poprawić, a poza tym jeśli jest kilka zgodnych informacji ze sobą w bazie danych to wyświetla mi ostatnią pozycję, a jak miałbym to zrobić aby zwracane były wszystkie prawidłowe rekordy?
Ten post edytował SzalonyInformatyk 12.06.2013, 11:51:23 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
W petli co dane pobierasz to tam rób sprawdzanie
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Jest prostszy sposób. Przechowuj datę wydarzenia w tabeli bazy danych jako TIMESTAMP. Porównaj pobraną datę z obecną (funkcja time()). Odejmij jedno od drugiego, otrzymasz różnicę, którą sformatuj jako dni (funkcja date('d', $roznica)). I już nie będziesz potrzebował tylu ifów. Jedynie sprawdzasz czy liczba to 1, czy tam 0 (wtedy końcówka dzień, czy tam piszesz, że to już jutro, itd.).
-------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
O kurde, dopiero teraz zobaczyłem że ma 3 liczby na rok, miesiac i dzień...
Q: JAK ON FILTRUJE?? A: W PHP! |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Czepiasz się.... przecież od dawna wiadomo że stosowanie pola datowego to przeżytek
![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 02:00 |