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 (IMG:style_emoticons/default/smile.gif) 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 (IMG:style_emoticons/default/smile.gif) |
|
|
|
![]() |
Post
#2
|
|
|
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.).
|
|
|
|
SzalonyInformatyk [MySQL][PHP] Okazje - warunek 12.06.2013, 11:05:36
nospor W kodzie html enter czy tabulator nie działają. To... 12.06.2013, 11:09:32
SzalonyInformatyk Sory tam nie powinno być kropki w pętli, nie zdąży... 12.06.2013, 11:50:40
nospor W petli co dane pobierasz to tam rób sprawdzanie 12.06.2013, 12:25:28
mmmmmmm O kurde, dopiero teraz zobaczyłem że ma 3 liczby n... 12.06.2013, 13:02:46
nospor Czepiasz się.... przecież od dawna wiadomo że stos... 12.06.2013, 13:16:01 ![]() ![]() |
|
Aktualny czas: 27.12.2025 - 18:47 |