Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Okazje - warunek
Forum PHP.pl > Forum > Przedszkole
SzalonyInformatyk
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 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 smile.gif
nospor
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ćquestionmark.gif
SzalonyInformatyk
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?
nospor
W petli co dane pobierasz to tam rób sprawdzanie
b4rt3kk
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.).
mmmmmmm
O kurde, dopiero teraz zobaczyłem że ma 3 liczby na rok, miesiac i dzień...
Q: JAK ON FILTRUJE??
A: W PHP!
nospor
Czepiasz się.... przecież od dawna wiadomo że stosowanie pola datowego to przeżytek wink.gif
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.