Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Okazje - warunek, Wyświetlanie banneru - określony dzień
SzalonyInformaty...
post
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)
Go to the top of the page
+Quote Post
nospor
post
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ć(IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
SzalonyInformaty...
post
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
Go to the top of the page
+Quote Post
nospor
post
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
Go to the top of the page
+Quote Post
b4rt3kk
post
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.).
Go to the top of the page
+Quote Post
mmmmmmm
post
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!
Go to the top of the page
+Quote Post
nospor
post
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 (IMG:style_emoticons/default/wink.gif)
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: 15.09.2025 - 15:44