Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] zmienna zalezna od roku
Forum PHP.pl > Forum > Przedszkole
eMatys
Wiedząć, że
  1. <?php
  2. date("L");
  3. ?>
wyświetala nam wartość logiczną 0 lub 1 w zależności od tego czy rok jest przestępny czy nie. Prosiłbym o pomoc w napisaniu funkcji, która wyświetlałaby dwie rózne zmienne w zależności od tego jaki jest rok. Tj:

Jeśli rok jest prestępny wartość logiczna jest równa 1 dlatego funkcja
  1. <?php
  2. $przestępny = 'przestępny';
  3. ?>

wysyła tą wartość do zmiennej
  1. <?php
  2. $wynik = '____';
  3. ?>


Jeśli rok jest nieprestępny wartość logiczna jest równa 0 dlatego funkcja
  1. <?php
  2. $nieprzestępny = 'nieprzestępny';
  3. ?>

wysyła tą wartość do zmiennej
  1. <?php
  2. $wynik = '____';
  3. ?>

Tak aby zmienna
  1. <?php
  2. echo $wynik ';
  3. ?>
Zwrócił nam informację czy rok jest przestępny czy nie.
tiraeth
A czy słyszałeś o instrukcjach warunkowych??

  1. <?php
  2. if ( date("L") == 1 )
  3. {
  4.  $wynik = 'Rok przestępny';
  5. }
  6. else
  7. {
  8.  $wynik = 'Rok nieprzestępny';
  9. }
  10.  
  11. echo $wynik;
  12. ?>
eMatys
Słyszeć słyszałem ale jak narazie raczkuję w tym. Dziękuję za pomoc, Pozdrawiam.
Cysiaczek
Od razu powiem. Pisze z NetCaffe i padniety po kilkunastu godzinach, więc jak bedzie błąd, to nie moja wina:/
  1. <?php
  2.  
  3. function getYear() {
  4. $year=date("L");
  5.  switch ($year){
  6.  case "1"; return "Przestępny";break;
  7.  case "0"; return "Nieprzestępny";break;
  8. default: break;
  9.  }
  10. }
  11.  
  12. print. 'Ten rok jest'.getYear();
  13.  
  14. ?>
eMatys
  1. <?php
  2.  
  3. $dzien_roku = date("z");
  4. $koniec = $jaki_rok - $dzien_roku;
  5. if ( date("L") == 1 )
  6. {
  7.  $jaki_rok = 366;
  8. }
  9. else
  10. {
  11.  $jaki_rok = 365;
  12. }
  13. print "$koniec";
  14. ?>

I mamy błąd... Wynik: - 136

Przy okazji również porusze może inny problem:
  1. <?php
  2.  
  3.  $tygodnia[0] = "niedziela";
  4.  $tygodnia[1] = "poniedzialek";
  5.  $tygodnia[2] = "wtorek";
  6.  $tygodnia[3] = "środa";
  7.  $tygodnia[4] = "czwartek";
  8.  $tygodnia[5] = "piątek";
  9.  $tygodnia[6] = "sobota";
  10. $dzien_tygodnia = $tygodnia[date("w",time())];
  11.  
  12. ?>

Ja zapisać zmienną
  1. <?php
  2. $tygodnia[date("w",time())];
  3. ?>
w zwyczajnej prostej zmiennej lub jak aby można było ją wykorzystać w innym dokumencie w takiej postaci
  1. <?php
  2. echo $dzien_tygodnia
  3. ?>
Cysiaczek
Nia mam pod ręką żadnego serwera, więc ciężko mi powiedzieć, dlaczego masz taki wynik, ale powiedz co wogóle chcesz siągnąć, bo nie bardzo rozumiem. Użyłeś innego argumentu dla 'date()' niz pisałeś wcześniej.

2. No już masz zapisaną w
  1. <?php
  2.  
  3. $dzien_tygodnia = $tygodnia[date("w",time())];
  4.  
  5. ?>
eMatys
Chce wyświetlic na stronie ze dany rok jest przestępny a zaraz dalej podać ile zostało do końca roku.
Cysiaczek
Musisz mieć dwie wartości.
wartosc1. ilośc dni w roku (to już masz)
wartosc2. aktualny dzień roku (musisz policzyć)

wartosc1-wartosc2=ilośc dni do końca roku

w twoim kodzie jest błąd i to POWAŻNY:

Zauważ, że najpierw odwołujesz się do zmiennej $jaki_rok
a dopiero potem deklarujesz ta zmienną. Najpierw musisz ją zadeklarować. Wstaw zatem instrucje warunkową na samej górze skryptu.

  1. <?php
  2.  
  3. if ( date("L") == 1 )
  4. {
  5.  $jaki_rok = 366;
  6. }
  7. else
  8. {
  9.  $jaki_rok = 365;
  10. }
  11.  
  12. $dzien_roku = date("z");
  13. $koniec = $jaki_rok - $dzien_roku;
  14.  
  15. print "$koniec";
  16.  
  17.  
  18. ?>
eMatys
Cytat(Cysiaczek @ 2006-05-17 16:35:41)
Musisz mieć dwie wartości.
wartosc1. ilośc dni w roku (to już masz)
wartosc2. aktualny dzień roku (musisz policzyć)

wartosc1-wartosc2=ilośc dni do końca roku

w twoim kodzie jest błąd i to POWAŻNY:

Zauważ, że najpierw odwołujesz się do zmiennej $jaki_rok
a dopiero potem deklarujesz ta zmienną. Najpierw musisz ją zadeklarować. Wstaw zatem instrucje warunkową na samej górze skryptu.

  1. <?php
  2.  
  3. if ( date("L") == 1 )
  4. {
  5.  $jaki_rok = 366;
  6. }
  7. else
  8. {
  9.  $jaki_rok = 365;
  10. }
  11.  
  12. $dzien_roku = date("z");
  13. $koniec = $jaki_rok - $dzien_roku;
  14.  
  15. print "$koniec";
  16.  
  17.  
  18. ?>

a jak policzyć wartosc2??
Cysiaczek
O.o :/
Trochę ciężko :/
przydałby się kalendarz. Nie policzę Ci teraz, bo nie mam głowy do funkcji. poszukaj na google, albo w jakichś skryptach i stamtąd zerżnij. Przyznam się szczerze, że nigdy tego nie liczyłem, bo nie potrzebowałem :/
Po prostu poszukaj algorytmu. Nawet niekoniecznie musi być z php Zajrzyj na strony JavaScript. jak na coś wpadnę, to napiszę.
nospor
Cytat
a jak policzyć wartosc2??
blink.gif
Ten kod co podales ty to napisales? Przeciez masz:
  1. <?php
  2. $dzien_roku = date("z");
  3. ?>
i to jest Twoja wartosc2...
Cysiaczek
Nie. ja tylko dawałem ogólne wskazówki pomocne rozwiązaniu tego problemu. kod nie jest mój, tylko kolegi smile.gif
Po prostu nie uzyłem QUOTE
tiraeth
date" title="Zobacz w manualu php" target="_manual - przeczytaj...

  1. <?php
  2. # Ilość dni w roku - taka skrótowa forma instrukcji warunkowej
  3. $yearDays = ( date('L') == 1 ) ? 366 : 365;
  4. # Aktualny dzień roku
  5. $dayOfYear = date("z");
  6.  
  7. # No i liczymy...
  8. $dayToNextYear = $yearDays - $dayOfYear;
  9. ?>


Cysiaczek: masz chyba problem z logicznym myśleniem smile.gif Przecież wartosc2 to $dzien_roku...a tą wartość obliczasz wywołując funkcję date() z argumentem "z" tongue.gif
nospor
@tiraeth to nie klopot z logicznym mysleniem, a poprostu nie znajomosc manuala. ot wszystko. nie ma co jechac.

@Cysiaczek a wczesniejsze pytanie nie kierowalem do ciebie a do eMatysa smile.gif
Cysiaczek
Masz racje O.o jestem, zmeczony, co pisałem na poczatku, a poza tym jakbyś przez kilkanaście godzin oglądał UML, to być też zapomniał jak się nazywasz.
Na marginesie, to nigdy nie wywoływałem tej funkcji z tym parametrem, bo nie miałem potrzeby. Ja tu tylko sobie piszę, bo się nudzę, a nie chce mi się iść spać.
Fakt jednak faktem. Powinienem wiedzieć.:///
eMatys
Cytat(tiraeth @ 2006-05-17 17:01:14)
date" title="Zobacz w manualu php" target="_manual - przeczytaj...

  1. <?php
  2. # Ilość dni w roku - taka skrótowa forma instrukcji warunkowej
  3. $yearDays = ( date('L') == 1 ) ? 366 : 365;
  4. # Aktualny dzień roku
  5. $dayOfYear = date("z");
  6.  
  7. # No i liczymy...
  8. $dayToNextYear = $yearDays - $dayOfYear;
  9. ?>


Cysiaczek: masz chyba problem z logicznym myśleniem smile.gif Przecież wartosc2 to $dzien_roku...a tą wartość obliczasz wywołując funkcję date() z argumentem "z" tongue.gif

Dziękuję serdecznie za pomoc! LEcz jednak pozostaje jeden malutki szczegół. Przed wynikiem pojaiwa sie zna "-" (minus) jak moge się go pozbyc??

Chciałbym też przypomnieć o mojej drugiej prośbie:
"Przy okazji również porusze może inny problem:
  1. <?php
  2.  
  3.  $tygodnia[0] = "niedziela";
  4.  $tygodnia[1] = "poniedzialek";
  5.  $tygodnia[2] = "wtorek";
  6.  $tygodnia[3] = "środa";
  7.  $tygodnia[4] = "czwartek";
  8.  $tygodnia[5] = "piątek";
  9.  $tygodnia[6] = "sobota";
  10. $dzien_tygodnia = $tygodnia[date("w",time())];
  11.  
  12. ?>

Ja zapisać zmienną
  1. <?php
  2. $tygodnia[date("w",time())];
  3. ?>
w zwyczajnej prostej zmiennej lub jak aby można było ją wykorzystać w innym dokumencie w takiej postaci
  1. <?php
  2. echo $dzien_tygodnia
  3. ?>
"
E-d
  1. <?php
  2. $dayToNextYear = str_replace("-","",($yearDays - $dayOfYear));
  3. ?>
nospor
Cytat(E-d @ 2006-05-18 12:40:56)
  1. <?php
  2. $dayToNextYear = str_replace("-","",($yearDays - $dayOfYear));
  3. ?>

smile.gif
@E-d a nie lepiej tak:
  1. <?php
  2. $dayToNextYear = abs($yearDays - $dayOfYear);
  3. ?>

a na powaznie:
poprawnie zapisanie tego: $yearDays - $dayOfYear nie powinno dac minusa, gdyż liczba dni w roku jest >= od aktualnego dnia roku smile.gif

@eMatys pokaz dokladnie jeszcze raz kod jakiego uzywasz do tego. wlacznie z wypisanie wyniku na ekran
eMatys
Przepraszam popełniłem błąd - nie wysłałem pliku na serwer.

Jeszcze raz dziękuję za poświęcony czas i pomoc. Pozdrawiam
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.