Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] [mysql] Kalendarz php i pole OPTION, czyli jak odwołać się do dnia tygodnia
pavilion
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 10.03.2006

Ostrzeżenie: (0%)
-----


Witam serdecznie,

Mam dość skomplikowany problem (jak dla mnie) ale spróbuję opisać go jak dokładniej potrafie.

Otóż mam taki oto kalendarz ...

(jeśli zdjęcia nie widać to można zobaczyć je tu My Webpage
... gdzie pole option generowane jest w ten sposób
  1. <?php
  2. if($span1 > 0 && $i == 1)
  3. echo '<td colspan="'.$span1.'" class="calendar_3">&nbsp;</td>';
  4. endif;
  5. echo '<td nowarp align="center" valign="middle" width=100 height=80 class="calendar_'.$class.'">'.$i.'<p align="right"> <form action="danetest.php" method="POST">
  6.  
  7.            <SELECT name="'.$i.'"  size="1">
  8.            <OPTION value="off"> DAY OFF</OPTION>
  9.            <OPTION value="BT111/2"> BT111/2</OPTION>
  10.            ...
  11.            ...
  12.           </SELECT></p>
  13.            </td>';
  14.  
  15. ?>

uzyskawszy taką tablicę
  1. <?php
  2. Array ( [1] => off [2] => BT111/2 [3] => off [4] => off [5] => off [6] => off [7] => off [8] => off [9] => off [10] => off [11] => off [12] => off [13] => off [14] => off [15] => off [16] => off [17] => off [18] => off [19] => off [20] => off [21] => off [22] => off [23] => off [24] => off [25] => off [26] => off [27] => off [28] => off [29] => off [30] => off ) 
  3. ?>


przipisałem zmienne (tu pomógł mi kolaga bim2) w ten sposób :
  1. <?php
  2. foreach ($_POST as $dzien => $wartosc) { 
  3. ?>

i tu pojawia się mój problem:
Chciałem aby każdą zmienną $dzien pozyskaną z tablicy odwołać do dnia tygonia (od 0 do 6).
czyli naprzykład : formularz1 ma wartość off i jest to dzień tygodnia piątek (5)
formularz2 ma wartość BT111/2 i jest to sobota (6) - weekend

Próbowałem to zrobić w ten sposób
  1. <?php
  2. if ($dzien == (date("w") == '0' || date("w") == '6')) {
  3. lub tak
  4.      if ($dayofweek == (date("w") == '0' || date("w") == '6')) {
  5.  
  6. ?>

ale niestety zwracany jest faktyczny dzień tygonia a nie ten do którego odwołuje się formularz option.

ufff mam nadzieję że któś się połapie w tym co tu chciałem opisać.
Z góry bardzo dziękuje

Ten post edytował pavilion 12.04.2006, 19:23:29
Go to the top of the page
+Quote Post
kszychu
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

Ostrzeżenie: (0%)
-----


date('w', $data_do_ktorej_chcesz_sie_odwolac)


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
pavilion
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 10.03.2006

Ostrzeżenie: (0%)
-----


Kszychu, dziekuje bardzo za odpowiedź tyle że nie o to mi chodziło. Fakt, napisałem to tak zawile że nic dziwnego, zatem spróbuje jeszcze raz.

Jak z liczb od 1 do 31 wskazać że jest to sobota lub niedziela w danymn miesiącu questionmark.gif
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




  1. <?php
  2. $rok=2006;
  3. $miesiac=4;
  4. for ($i=1; $i<=31; $i++){
  5. echo "$rok-$miesiac-$i dzien tygodnia: ".date('w', strtotime("$rok-$miesiac-$i")).'<br />';
  6. }
  7.  
  8. ?>
Ty juz se tylko dorob warunki

ps: i prosze poprawic tytul o wlasciwy znacznik


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

"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
kszychu
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

Ostrzeżenie: (0%)
-----


Cytat(pavilion @ 2006-04-10 11:34:35)
Kszychu, dziekuje bardzo za odpowiedź tyle że nie o to mi chodziło. Fakt, napisałem to tak zawile że nic dziwnego, zatem spróbuje jeszcze raz.

Jak z liczb od 1 do 31 wskazać że jest to sobota lub niedziela w danymn miesiącu questionmark.gif

To Ty mnie źle zrozumiałeś. Żeby określić jakim dniem tygodnia jest określony dzień miesiąca musisz znać miesiąc i rok, czyli datę. I tę datę podajesz jako drugi argument funkcji date(). Poza Tym nospor już Ci to ładnie rozpisał.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
pavilion
post
Post #6





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 10.03.2006

Ostrzeżenie: (0%)
-----


Kszychu, nospor - dziękuję i przepraszam.
Chory jestem i coś mi mózg nie pracuje. Pół godziny zastanawiałem się o co chodzi nospor z tym znacznikiem w tytule winksmiley.jpg teraz jeszcze kilka miesięcy i dojde o co chodzi z tymi warunkami.

Tak czy inaczej bardzo Wam dziękuje i cieszę się że są na świecie tacy ludzie jak Wy.

Pozdrawiam
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




Cytat
Pół godziny zastanawiałem się o co chodzi nospor z tym znacznikiem w tytule
powiedzmy ze to moja wina. powinienem byl napisac:
" i prosze poprawic tytul o wlasciwy znacznik zgodny z zasadami panującymi na forum PRzedszkole" winksmiley.jpg

Cytat
teraz jeszcze kilka miesięcy i dojde o co chodzi z tymi warunkami.
No bo chciales by ci wyswietlil tylko te dni, które są sobotą lub niedzielą. Musisz więc na to dac warunek. Ja ci wyswietlam wszystko niezależnie od dnia tygodnia smile.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
pavilion
post
Post #8





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 10.03.2006

Ostrzeżenie: (0%)
-----


Już łapie, łapie złapałem smile.gif
o rany ale się popisałem, faktycznie nic mi głowa nie pracuje.
Ale właśnie oto mi chodziło, Panowie jesteście rewelacja, brak mi słów.

Jeszcze tylko mam ostatnie pytanko...
Mając coś takiego :
2006-4-1 dzien tygodnia: 6
2006-4-2 dzien tygodnia: 0
2006-4-3 dzien tygodnia: 1
itd.
mam zmienną $dzien uzyskaną poprzez
  1. <?php
  2. foreach ($_POST as $dzien => $wartosc) { 
  3. ?>

zrobiłem warunek
  1. <?php
  2. if ($dzien == (date('w',strtotime("$year-$month-$day")) == '0' || date('w',strtotime("$year-$month-$day")) == '6')) {
  3. $numer_bt = $wartosc;
  4. $zapytanie = "SELECT bt, freq, std, sta FROM summer WHERE bt like '%".$numer_bt."%' AND freq like '%7%'";
  5. ?>

i to nie działa sad.gif

Próbowałem tez przypisać zmienną do tych ostatnich cyfr
2006-4-1 dzien tygodnia: 6
2006-4-2 dzien tygodnia: 0
  1. <?php
  2. $weekend = date('w', strtotime("$rok-$miesiac-$i"));
  3. echo "<i><b><font>$weekend</font></b></i>";
  4. ?>

ale wyskakuje mi 2
Da się to filtrować w ten sposób bazę czy nie tędy droga ?
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




a co u CIebie zawiera zmienna $dzien? Daj se echo przed ifem i zobacz co tam masz:
  1. <?php
  2.  echo "$dzien $year-$month-$day <br />";
  3. ?>


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

"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
pavilion
post
Post #10





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 10.03.2006

Ostrzeżenie: (0%)
-----


$dzien dostaje z pola option generowanego razem z kalendarzem.

  1. <?php
  2.  if($i != $today):
  3. $fontcolor = $defaultfontcolor;
  4. $class = '3';
  5. endif;
  6. if($i == 1 || $dayofweek == 0):
  7. echo '<tr>';
  8. if($span1 > 0 && $i == 1)
  9. echo '<td colspan="'.$span1.'" class="calendar_3">&nbsp;</td>';
  10. endif;
  11. echo '<td nowarp align="center" valign="middle" width=100 height=80 class="calendar_'.$class.'">'.$i.'<p align="right"> <form action="danetest.php" method="POST">
  12.  
  13.  <SELECT name="'.$i.'" size="1">
  14.  <OPTION value="off"> DAY OFF</OPTION>
  15.  <OPTION value="BT111/2"> BT111/2</OPTION>
  16.  ...
  17.  ...
  18. <OPTION value="BT335"> BT335/6</OPTION>
  19.  </SELECT></p>
  20.  </td>';
  21. ?>

  1. <?php
  2. foreach ($_POST as $dzien => $warto) {
  3. ?>

Jak dałem echo to wyskoczyło
1 2006-04-10
2 2006-04-10
3 2006-04-10
...
...
29 2006-04-10
30 2006-04-10
Go to the top of the page
+Quote Post
nospor
post
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zauważ, ze date('w') zwraca ci dzien tygodnia, czyli wartosci od 0 do 6, a ty porównujesz to z wartosciami od 1 do 30. Troche nieteges, nieprawdaz ? winksmiley.jpg
Jakoś cięzko mi się teraz przebic przez Twoją logikę, więc na obecny stan sprawy i Twojego opisu nic ci więcej nie powiem. Moze ktoś inny sprobuje, albo ty sam sprobujesz winksmiley.jpg


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

"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
pavilion
post
Post #12





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 10.03.2006

Ostrzeżenie: (0%)
-----


Panowie w Was tylko nadzieja, siedzę już kolejny dzień i nic.
Jedyne co mam narazie to plan tylko wydaję się być troche za skomplikowany.

Mając zmienną $dzien (od 1 do 30 lub 31 w zaleznosci od aktualnego miesiąca) jak postawic zapytanie do bazy aby wyselekcjonować tylko te wyniki zależne od dnia tygodnia ?
  1. <?php
  2. $zapytanie = "SELECT bt, freq, std, sta FROM summer WHERE bt like '%".$numer_bt."%' AND freq like ''%".date('w',strtotime("$rok-$miesiac-$dzien")) == '0' || date('w',strtotime("$rok-$miesiac-$dzien")) == '6'."%'";
  3. ?>

Czy to jest wogóle realne questionmark.gif
P.S. Struktura bazy wygląda tak :
bt freq std sta id
BT111/2 0,1,2,3,4,5 14:45:00 19:15:00 1
BT111/2 6 15:30:00 20:00:00 2
BT155/6 1 2 3 4 5 6 03:55:00 09:55:00 3
BT155/6 7 03:55:00 09:50:00 4

Z góry bardzo dziękuje.
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 Aktualny czas: 20.08.2025 - 10:35