Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zmiana ikonki zależnie od pory
Forum PHP.pl > Forum > Przedszkole
ShamY
Witam,
prosiłbym o radę ponieważ nie wiem jak to ugryźć. Chodzi o to, że chciałbym, aby ikonka zmieniała się zależnie od tego czy jest dzień czy noc. Za tą zmiane odpowiada dodawanie przed "${icon}.jpg" formuły "nt_". Oto kod:
  1. <?php
  2. $json_string = file_get_contents("link");
  3. $parsed_json = json_decode($json_string);
  4. $icon = $parsed_json->{'current_observation'}->{'icon'};
  5. echo "${icon}.jpg";
  6. ?>


Jak go zmodyfikować, aby na przykład po zachodzie (15.43) dodawało "nt_${icon}.jpg", a po wschodzie (7.58) wracało do "${icon}.jpg"?

Pozdrawiam
Damonsson
Pseudokod:
  1. if(15.43 > date < 7.58) {
  2. echo "nt_${icon}.jpg"
  3. } else {
  4. echo "${icon}.jpg"
  5. }


Ale ja bym jeszcze pobierał JS czas od usera, bo jak ktoś z Australii wejdzie to nie bardzo będzie mu się zgadzać ikonka.
ShamY
Dzięki za kod. Jak go wstawiłem na strone to wywala mi błąd "Parse error: syntax error, unexpected '<"

  1. <?php
  2. $json_string = file_get_contents("link");
  3. $parsed_json = json_decode($json_string);
  4. $icon = $parsed_json->{'current_observation'}->{'icon'};
  5. if(15.43 > date < 7.58) {
  6. echo "nt_${icon}.jpg"
  7. } else {
  8. echo "${icon}.jpg"
  9. };
  10. ?>


Co do pobierania czasu odwiedzającego jest to niepotrzebne, bo ma to pokazywac aktualną ikonkę tylko dla Polski.
Damonsson
http://pl.wikipedia.org/wiki/Pseudokod
ShamY
Ok już zrobiłem, dzięki za pomoc smile.gif

Edit: Niestety wyświetla się tylko pierwszy obrazek:
  1. $czas= getdate();
  2. $h = $czas['hours'];
  3. if($h >= 7.58 && $h < 15.42){
  4. echo "${icon}.jpg";
  5. } else if($h > 15.43 && $h < 7.57){
  6. echo "nt_${icon}.jpg";
  7. }
Turson
$czas['hours'] zwraca Ci aktualną godzinę, samą godzinę, czyli np. teraz 10.
użyj $czas = date('h.i');
ShamY
Zmieniłem i niestety też nie działa
Turson
Zauważ, że nie ma takiej liczby, która mieściłaby się w zakresie 15.43-7.57, więc zapis to inaczej:

  1. $czas = date('G.i');
  2. if($czas >= 7.58 && $czas < 15.42){
  3. echo "aktualny czas w przedziale 7.58-15.42";
  4. } else{
  5. echo "aktualny czas w przedziale 15.43-7.57";
  6. }
ShamY
JESTEŚ WIELKI smile.gif Działa smile.gif Dziękuje bardzo wink.gif

Cześć,
wymyśliłem sobie połączenie skryptu w/w z pobieraniem ikonki w jednej ze stron, całość skryptu:
  1. <?
  2. $czas = date('G.i');
  3. if($czas >= 7.58 && $czas < 15.42){
  4. echo "<img src='/images/background/<?php
  5. $icoJsonData = file_get_contents("link");
  6. $icoData = json_decode($icoJsonData)[0];
  7. echo '' . $icoData->Icon;
  8. ?>'.png width='195' height='195' ";
  9. } else{
  10. echo "<img src='/images/background/night/<?php
  11. $icoJsonData = file_get_contents("link");
  12. $icoData = json_decode($icoJsonData)[0];
  13. echo '' . $icoData->Icon;
  14. ?>'.png width='195' height='195' ";
  15. }
  16. ?>


coś tutaj jest źle, po prostu nie potrafi wyświetlić mi numeru ikonki, gdy klikam pokaż adres obrazka, to w miejscu gdzie powinien być numer ikonki jest cały kod php nie odkodowany.
Ktoś ma jakieś rozwiązanie tego?
Turson
Otwierasz kolejne <?PHP w otwartym już <?PHP, samo kolorowanie składni powinno dać ci do myślenia
ShamY
No własnie dało i nie wiem jak temu zaradzić...
Turson
Mniej więcej
  1. <?
  2. $czas = date('G.i');
  3. if($czas >= 7.58 && $czas < 15.42){
  4. echo "<img src='/images/background/".
  5. $icoJsonData = file_get_contents("link");
  6. $icoData = json_decode($icoJsonData)[0];
  7. echo '' . $icoData->Icon;
  8. ."'.png width='195' height='195' ";
  9. } else{
  10. echo "<img src='/images/background/night/".
  11. $icoJsonData = file_get_contents("link");
  12. $icoData = json_decode($icoJsonData)[0];
  13. echo '' . $icoData->Icon;
  14. ."'.png width='195' height='195' ";
  15. }
  16. ?>
markuz
  1. <?php
  2.  
  3. $czas = date('G.i');
  4. if($czas >= 7.58 && $czas < 15.42)
  5. {
  6. echo "<img src='/images/background/";
  7. $icoJsonData = file_get_contents("link");
  8. $icoData = json_decode($icoJsonData)[0];
  9. echo $icoData->Icon.".png width='195' height='195'";
  10. }
  11. else
  12. {
  13. echo "<img src='/images/background/night/";
  14. $icoJsonData = file_get_contents("link");
  15. $icoData = json_decode($icoJsonData)[0];
  16. echo $icoData->Icon.".png width='195' height='195'";
  17. }
  18.  
  19. ?>


A tutaj małe poprawki optymalizacyjne:

  1. <?php
  2.  
  3. $czas = date('G.i');
  4. $icoJsonData = file_get_contents("link");
  5. $icoData = json_decode($icoJsonData)[0];
  6.  
  7. if($czas >= 7.58 && $czas < 15.42)
  8. {
  9. $folder = '';
  10. }
  11. else
  12. {
  13. $folder = 'night/';
  14. }
  15.  
  16. echo "<img src='/images/background/".$folder.$icoData->Icon.".png width='195' height='195'";
  17.  
  18. ?>
ShamY
Super! Działa, dzięki, sam bym na to nigdy nie wpadł smile.gif
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.