Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] [mysql] Kalendarz php i pole OPTION
Forum PHP.pl > Forum > Przedszkole
pavilion
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
kszychu
date('w', $data_do_ktorej_chcesz_sie_odwolac)
pavilion
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
nospor
  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
kszychu
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ł.
pavilion
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
nospor
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
pavilion
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 ?
nospor
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. ?>
pavilion
$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
nospor
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
pavilion
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.
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.