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 12.06.2013, 11:05:36
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 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
Go to the top of the page
+Quote Post
nospor
post 12.06.2013, 11:09:32
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ćquestionmark.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
SzalonyInformaty...
post 12.06.2013, 11:50:40
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 12.06.2013, 12:25:28
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

Go to the top of the page
+Quote Post
b4rt3kk
post 12.06.2013, 12:51:48
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.
Go to the top of the page
+Quote Post
mmmmmmm
post 12.06.2013, 13:02:46
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 12.06.2013, 13:16:01
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 wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 02:00