Bättre variant på switch sats

PHPportalen Forum Index » PHP Mjukstart
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
marre



Medlem i: 5431 dagar

Status: Offline



#742273
Inlägg Skrivet: 2018-08-20 20:29      Ämne: Bättre variant på switch sats Citera

Hej! Jag har fastnat i vinkelvolten.
Jag har ett API som hämtar live resultat från svenska spel. Problemet är att dom har ett nytt omgångsnr varje vecka.
Jag har löst det med en switch beroende vecka så kommer rätt omgångnr.
blir lite mycket med 52 veckor sen måste det göras om nästa år med rätt omgångsnr.

Man kan iof sig tänka sig att sätta rätt omgångsnr och öka med 1 efter varje ny vecka hur man gör det?


KOD:
1:
switch ($week) {
2:
    case "34":
3:
        $omgang="4559";
4:
        break;
5:
    case "35":
6:
        $omgang="4560";
7:
        break;
8:
    case "36":
9:
         $omgang="4561";
10:
        break;
11:
}
12:
 
13:
 
14:
 
15:
}
16:
//Hämtar liveresultatsom börjar 16.00 lördag $dag6=lördag timme=16:00
17:
if (($dag == 6) && ($timme>=16)){
18:
$url = @file_get_contents('https://xxxxx/XXXXXXl/xxxx/xxxx/xxxx/'.$omgang.'/');



Nästa problem är att det börjar inte att fungera förrän efter 16:00 annars blir det ett felmeddelande pga att det inte finns något värde. löste det med if sats men det fungera bara fram till 24:00 sen blir det 01 och då försvinner resultatet.

Tacksam för lite ideer i rätt riktning.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4531 dagar
Från: Tavesta
Status: Offline



#742274
Inlägg Skrivet: 2018-08-20 23:35      Ämne: Citera

Om det alltid är en omgång varje vecka borde det enklaste sättet att räkna fram rätt omgång vara att använda en unix timestamp, och dela den med 604800 ( = antalet sekunder per vecka).
För att det skall bli rätt tal kan du addera eller subtrahera med ett lämpligt tal.
Resultatet du får kan du runda till heltal med t.ex floor().
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
marre



Medlem i: 5431 dagar

Status: Offline



#742275
Inlägg Skrivet: 2018-08-22 19:04      Ämne: Citera

Den här algoritmen borde fungera.

Då tar den hänsyn till 1 i januari och ett nytt år.
KOD:
1:
$omgang=4524+$week+($year-2018)*52;
2:
 
3:
}
4:
 
5:
 

Nästa problem öka omgången med ett när kl är 16.00 på lördag håll det omgångsnr fram till 16:00 nästa lördag får inte riktigt till det.


Något förslag?
KOD:
1:
//om lördag klockan 16:00 eller dag=söndag öka omgången med 1
2:
if (($day==6 && hour>=16) || $day==0) {
3:
$omgang++;
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4531 dagar
Från: Tavesta
Status: Offline



#742276
Inlägg Skrivet: 2018-08-22 23:11      Ämne: Citera

Din formel kan nog få problem av flera skäl:
Ett år består inte alltid av 52 veckor, och veckonummer stämmer inte alltid med kalenderårtalet.

Jag skulle nog fortfarande rekommendera att använda att använda en unix timestamp istället, som jag föreslog förut.
Det borde kunna lösa båda problemen. Det enda det inte löser är sommartidsproblemet: Klockan 16 är inte samma sak när sommartid tillämpas.

Om jag inte räknat galet borde den här formeln kunna fungera:
PHP:
1:
 $omgång floor((time()+1222077600)/604800); 
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Emerald



Medlem i: 4671 dagar

Status: Offline



#742277
Inlägg Skrivet: 2018-08-24 02:48      Ämne: Citera

En helt annan approach på problematiken vore att kolla om result finns tillgängliga för nästkommande vecka. Om ja så gör den +1 på vecka/omgång. Om nej så stannar den kvar på den nuvarande.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP Mjukstart
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic