Fixní řazení koncertů a festivalů

Novinky a oznámení boardu

Moderátor: Moderátoři

Fixní řazení koncertů a festivalů

Příspěvekod sheVcza » 5. září 2008, 23:53

Koncerty a Festivaly mají od teď fixní řazení, a to následovně:

Aktuální akce :arrow: Vzestupně (od akce co je časově nejblíž)
Proběhlé akce :arrow: Sestupně (od naposledy proběhlé akce)

Řazení probíhá díky datumu v hranaté závorce v názvu topicu, ve formátu [RRRR-MM-DD].
Dále přibyla možnost psaní popisu topicu, což využijeme k vypsání pár kapel (u festivalů) a místa konání (u koncertů).

Více o založení nové akce čtěte zde (festivaly) a zde (koncerty).
Uživatelský avatar
sheVcza
Administrátor
Administrátor
 
Pohlaví: Muž Muž
Věk: 36
Bydliště: Vizovice
Příspěvky: 4669
Blog: Zobrazit blog (6)
Registrován: 16. listopad 2007, 20:09
Aktivní v kapele: Vyzj

Re: Fixní řazení koncertů a festivalů

Příspěvekod Oskar999 » 18. leden 2009, 14:28

nejak to spatne pocita dny do koncertu
Přísahám věčnou věrnost Umbrtkovi a skartokratickému státnímu zřízení!
Uživatelský avatar
Oskar999
Dominus Metallum
Dominus Metallum
 
Pohlaví: Muž Muž
Věk: 37
Bydliště: od Plzně
Příspěvky: 2419
Registrován: 27. listopad 2007, 23:26

Re: Fixní řazení koncertů a festivalů

Příspěvekod sheVcza » 18. leden 2009, 14:46

Dny do koncertu to počítá dobře, ne? Sem si teď přepočítal "5.2.2009 - Za 18 dní" a je to správně. Ale dny proběhlých akcí to počítá špatně jak vidím.. Někde jsem udělal chybu :D Du na to mrknout.
Uživatelský avatar
sheVcza
Administrátor
Administrátor
 
Pohlaví: Muž Muž
Věk: 36
Bydliště: Vizovice
Příspěvky: 4669
Blog: Zobrazit blog (6)
Registrován: 16. listopad 2007, 20:09
Aktivní v kapele: Vyzj

Re: Fixní řazení koncertů a festivalů

Příspěvekod Oskar999 » 18. leden 2009, 14:52

tak ze by to zobrazovalo spatne jen u me? :D
Obrázek
me se nezda, ze by vsechny tyhle koncerty byly za 21dni
Přísahám věčnou věrnost Umbrtkovi a skartokratickému státnímu zřízení!
Uživatelský avatar
Oskar999
Dominus Metallum
Dominus Metallum
 
Pohlaví: Muž Muž
Věk: 37
Bydliště: od Plzně
Příspěvky: 2419
Registrován: 27. listopad 2007, 23:26

Re: Fixní řazení koncertů a festivalů

Příspěvekod Matajon » 18. leden 2009, 14:53

Oskar999: potvrzuju, není to jen u tebe :)

//edit: Screenshoty v jpegu? Ale notak, lidi :)
Tato zpráva neobsahuje škodlivé chemikálie a nebyla testována na zvířatech ... nicméně při jejím přenosu bylo ošklivě zmrzačeno několik nevinných elektronů.
Uživatelský avatar
Matajon
Erastes Metallum
Erastes Metallum
 
Pohlaví: Muž Muž
Věk: 34
Bydliště: Dobruška <-> Brno
Příspěvky: 556
Registrován: 8. červen 2008, 13:01

Re: Fixní řazení koncertů a festivalů

Příspěvekod sheVcza » 18. leden 2009, 14:58

Ajo už to vidím. :D No menší chybka v algoritmu na výpočet, teď ji jen najít. :D
Ale zajímavé že to dělá jen někde..
Uživatelský avatar
sheVcza
Administrátor
Administrátor
 
Pohlaví: Muž Muž
Věk: 36
Bydliště: Vizovice
Příspěvky: 4669
Blog: Zobrazit blog (6)
Registrován: 16. listopad 2007, 20:09
Aktivní v kapele: Vyzj

Re: Fixní řazení koncertů a festivalů

Příspěvekod Matajon » 18. leden 2009, 15:01

Kdyžtak můžeš dát ten zdroják sem, uděláme skupinový lov :D
Tato zpráva neobsahuje škodlivé chemikálie a nebyla testována na zvířatech ... nicméně při jejím přenosu bylo ošklivě zmrzačeno několik nevinných elektronů.
Uživatelský avatar
Matajon
Erastes Metallum
Erastes Metallum
 
Pohlaví: Muž Muž
Věk: 34
Bydliště: Dobruška <-> Brno
Příspěvky: 556
Registrován: 8. červen 2008, 13:01

Re: Fixní řazení koncertů a festivalů

Příspěvekod sheVcza » 18. leden 2009, 15:10

Ok, když se v tom někdo vyzná, já sám už v tom mám bordel. :D
script
Kód: Vybrat vše
//Rozluštění datumu akce
    sscanf($row['topic_title'], "[%d-%d-%d] %[^*]",
        $akce['year'],
        $akce['month'],
        $akce['day'],
        $akce['title']
    );
    $row['topic_title'] = $akce['title'];
    $datumakce = MkTime(23, 59, 59, $akce['month'], $akce['day'], $akce['year']);
    $datumakce2 = date("j.n.Y",($datumakce));

// Datum dnes, zítra a včera
    $datumted = MkTime();
    $datumzitra = MkTime() + 86400;    
    $datumvcera 
= MkTime() - 86400;    
    

    sscanf
(($datumakce - $datumted) / 86400, "%[^.]", $dny);
    sscanf(($datumted - $datumakce) / 86400, "%[^.]", $dny2);
    
// Výpočet dní
    if($datumakce2 == date("j.n.Y")) $kdy = '<b>Dnes</b>';
    elseif($datumakce2 == date("j.n.Y",(MkTime() + 86400))) $kdy = '<b>Zítra</b>';
    elseif($datumakce2 == date("j.n.Y",(MkTime() + 172800))) $kdy = '<b>Pozítří</b>';
    elseif($datumakce2 == date("j.n.Y",(MkTime() + 259200))) $kdy = '<b>Za 3 dny</b>';
    elseif($datumakce2 == date("j.n.Y",(MkTime() + 345600))) $kdy = '<b>Za 4 dny</b>';
    elseif($datumakce2 == date("j.n.Y",(MkTime() + 432000))) $kdy = '<b>Za 5 dní</b>';
    elseif($datumakce2 == date("j.n.Y",(MkTime() + 518400))) $kdy = '<b>Za 6 dní</b>';
    elseif($datumakce2 == date("j.n.Y",(MkTime() + 604800))) $kdy = '<b>Za týden</b>';
    elseif($datumakce2 > date("j.n.Y",(MkTime() + 604800))) $kdy = '<b>Za ' . $dny . ' dní</b>';
    
    if
($dny == 0) $kdy = '<b>Včera</b>';
    elseif($dny < 0) $kdy = '<b>Před ' . ($dny2 + 1) . ' dny</b>';
    
    if
($dny <= 0) $old = '<b><i><font color="red">Již proběhlá akce</font></i></b>';
    else $old = NULL; 
Uživatelský avatar
sheVcza
Administrátor
Administrátor
 
Pohlaví: Muž Muž
Věk: 36
Bydliště: Vizovice
Příspěvky: 4669
Blog: Zobrazit blog (6)
Registrován: 16. listopad 2007, 20:09
Aktivní v kapele: Vyzj

Re: Fixní řazení koncertů a festivalů

Příspěvekod Matajon » 18. leden 2009, 15:45

Tak jsem to přepsal jako funkci v (alespoň pro mě) přijatelnějším a přehlednějším tvaru:

script
Kód: Vybrat vše
function DnyDoAkce($topic)
  {
    //kontrola správného formátu + vytažení informací o datu
    if (preg_match('/^\[(\d{4})-(\d{2})-(\d{2})\] (.+)$/', $topic, $matches))
    {            
      
//timestamp konání akce a aktuální timestamp
      $timestamp = mktime(0, 0, 0, $matches[2], $matches[3], $matches[1]);
      $now = time();
      
      
//doba do akce, spočítání dnů
      $diff = $timestamp - $now;      
      $days 
= ceil($diff / (60*60*24));      
      
      
//textová reprezentace dnů
      $text = '';
      switch ($days)
      {
        case -1:
          $text = 'Včera';
          break;
        case 0:
          $text = 'Dnes';
          break;
        case 1:
          $text = 'Zítra';
          break;
        case 2:
          $text = 'Pozítří';
          break;
        case 3:
          $text = 'Za 3 dny';
          break;
        case 4:
          $text = 'Za 4 dny';
          break;
        case 5:
          $text = 'Za 5 dní';
          break;
        case 6:
          $text = 'Za 6 dní';
          break;
        case 7:
          $text = 'Za týden';
          break;
        default:
          if ($days > 0)
          {
            //akce v budoucnosti
            $text = 'Za '.$days.' dní';
          }
          else
          
{
            //akce v minulosti
            $text = 'Před '.(-$days).' dny';
          }
          break;
      }
            
      return 
'<b>'.$text.'</b>';
    }
    else
    
{
      //špatný formát názvu topicu
      return NULL;
    }
  } 
Tato zpráva neobsahuje škodlivé chemikálie a nebyla testována na zvířatech ... nicméně při jejím přenosu bylo ošklivě zmrzačeno několik nevinných elektronů.
Uživatelský avatar
Matajon
Erastes Metallum
Erastes Metallum
 
Pohlaví: Muž Muž
Věk: 34
Bydliště: Dobruška <-> Brno
Příspěvky: 556
Registrován: 8. červen 2008, 13:01

Re: Fixní řazení koncertů a festivalů

Příspěvekod sheVcza » 18. leden 2009, 19:04

No jo že já to neudělal hned přes switch. :) Ten jsem si z toho tvého kódu vzal, ten zbytek jsem nechal jak mám.. funkci z toho nedělám protože to celé je zvlášť soubor, který importouju do viewforum.php pod podminkou, pokud jde o forum koncertu nebo festivalu. Zaokrouhlení na výpočet dnů taky použít nejde, tím by do půlky dne bylo u akce třeba "Zítra" a v další půlce dne by se to zaokrouhlilo nahoru a bylo by "Dnes", přitom by to bylo až zítra. :) Proto to zaokrouhluju jen dolů tak, že odstraním to co je za tečkou. :)
No a další věc, kterou jsem ještě s tím switchem nevyřešil. Ono nemůžu použít jednu proměnnou pro budoucí akce a pro proběhlé jen změnit znaménko, jelikož je tam odchylka jeden den. :D Proto jsem v tom mém starém scriptu u starých akci přičítal jedničku, aby se to navýšilo o jeden den. Nevim jak jinak se té odchylky zbavit.
Uživatelský avatar
sheVcza
Administrátor
Administrátor
 
Pohlaví: Muž Muž
Věk: 36
Bydliště: Vizovice
Příspěvky: 4669
Blog: Zobrazit blog (6)
Registrován: 16. listopad 2007, 20:09
Aktivní v kapele: Vyzj

Re: Fixní řazení koncertů a festivalů

Příspěvekod Matajon » 18. leden 2009, 19:11

K tomu zaokrouhlování, já to taky nezaokrouhluju matematicky (round()), ale natvrdo směrem nahoru (ceil()), pak to vychází. Jinak na zaokrouhlení dolů není potřeba dělat šílenosti se sscanf, ale stačí použít funkci floor() :)
A to zaokrouhlení nahoru (s použitím začátku dne, ne jeho konce) stejně dobře řeší tu odchylku jeden den v minulosti.

//edit: A tu odchylku tam máš kvůli tomu nešťastnému způsobu zaokrouhlování, protože metoda "oříznu desetinnou část" (nehledě na to, že než přes sscanf je to daleko elegantnější přetypováním na integer nebo použitím funkce intval()) nezaokrouhuje vždycky dolů ale směrem k nule (takže pro záporná čísla nahoru), příklad:
(int)(1.5) == 1, nicméně (int)(-1.5) = -1
Tato zpráva neobsahuje škodlivé chemikálie a nebyla testována na zvířatech ... nicméně při jejím přenosu bylo ošklivě zmrzačeno několik nevinných elektronů.
Uživatelský avatar
Matajon
Erastes Metallum
Erastes Metallum
 
Pohlaví: Muž Muž
Věk: 34
Bydliště: Dobruška <-> Brno
Příspěvky: 556
Registrován: 8. červen 2008, 13:01

Re: Fixní řazení koncertů a festivalů

Příspěvekod sheVcza » 18. leden 2009, 19:47

Pravdu díš. :) Zas tak moc to zatím neovládám, teprve se učím, takže mám dost věcí řešených "neohrabaným" způsobem, což má pak za následek tohle. :D Mno každopádně už to šlape jak má. :) Děkuji Ti převelice. :)
Uživatelský avatar
sheVcza
Administrátor
Administrátor
 
Pohlaví: Muž Muž
Věk: 36
Bydliště: Vizovice
Příspěvky: 4669
Blog: Zobrazit blog (6)
Registrován: 16. listopad 2007, 20:09
Aktivní v kapele: Vyzj


Zpět na Novinky

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník