Odečítání času a porovnání Vyřešeno

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

MrFiliper
Level 1
Level 1
Příspěvky: 63
Registrován: březen 15
Pohlaví: Muž
Stav:
Offline

Odečítání času a porovnání  Vyřešeno

Příspěvekod MrFiliper » 23 pro 2015 14:33

Zdravím, potřebuji v php sestrojit script, který mi rozřadí data do 3 tabulek podle času.

1 Tabulka bude se všemi daty za celý rok, 2 tabulka se všemi daty za 1 měsíc a třetí za aktuální den.

Získávám data z xml souboru, čas získávám v tomto stylu "d. m. Y H:i:s". Jedná se o součet hlasů, tudíž mi dělá problém i odečítání a přičítání hlasů v jednotlivých tabulkách. Pokud má tedy uživatel 2 hlasy tento den, 5 hlasů za měsíc a 7 hlasů za rok, aby se to navzájem posčítalo. Takže v tomto dnu by se objevilo 2, v měsíci 7 a v roku 7.

Těžko se to vysvětluje, potřebuji ale opravdu pomoci. Lámu si tu hlavu už dva dny, ale pořád to tak nějak nevychází.

Začátek kód, který je podstatný.

Kód: Vybrat vše

foreach (new SimpleXMLElement($xml, null, true) as $vote) {
   $name = (string)$vote->nick;
   $date = (int)strtotime($vote->cas);


Následně podmínka, který by říkala, dnes je 23.12.2015, zahlasoval uživatel dnes? Ano? Pak ho vypiš do tabulky, ne? Pak ho ověř v měsíci.

Kód: Vybrat vše

if (!isset($players[$name]) && ($dnesniDatum == $date))// Neděste se, nevím jak to vymyslet s tím časem


Hlavní problém je v tom, že nevím jak ověřit, zda-li je 23.12.2015 opravdu tento měsíc, či není a pokud není pokračovat dál, pokud je přičíst hlas.

Pro upřesnění ještě dodávám následující ukázkový kód. Pro lepší přehled.

Kód: Vybrat vše

//Mám hlas od uživatele, který byl zadán 22.12.2015 (včera)

  if(2 == 2) { //Hlasoval uživatel dnes? Pokud ano vypiš, pokud ne pokračuj
    echo 'Pravda1';
  } elseif(1 == 1) { //Hlasoval uživatel v tomto měsící? ANO! 22.12.2015 je tento měsíc. Vypiš a ukonči se.
    echo 'Pravda2';
  } elseif(3 == 3) {
    echo 'Pravda3';
  }
 
//Mám hlas od uživatele, který byl zadán 22.10.2015 (před 2 měsíci)

  if(2 == 2) { //Hlasoval uživatel dnes? Pokud ano vypiš, pokud ne pokračuj
    echo 'Pravda1';
  } elseif(1 == 1) { //Hlasoval uživatel v tomto měsící? NE! Tak pokračuj dál
    echo 'Pravda2';
  } elseif(3 == 3) { //Hlasoval uživatel tento rok? ANO! Tak ho vypiš.
    echo 'Pravda3';
  }


Děkuji za rady a nápady.

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Odečítání času a porovnání

Příspěvekod CZechBoY » 23 pro 2015 19:31

Nejlepší by bylo to šoupnout do databáze a pomocí jednoduchého dotazu si to z databáze vytáhnout.
Při vypisování do tabulky chceš údaje jen o jednom konkrétním uživateli nebo o všech?
Pokud jen o jednom tak ti stačí obyčejné pole datumů, kdy uživatel hlasoval. To potom projdeš a podle dní/měsíců/roků potom jednoduše vypíšeš.

ot:
To mi nevychádza
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

MrFiliper
Level 1
Level 1
Příspěvky: 63
Registrován: březen 15
Pohlaví: Muž
Stav:
Offline

Re: Odečítání času a porovnání

Příspěvekod MrFiliper » 25 pro 2015 19:29

Problém je v tom, že ty data mám prostě v xml z externí stránky. Tudíž nahrávání do databáze by bylo tak trošku zbytečné. Při vypisování do tabulky chci všechny uživatele, tudíž nějaký while nebo foreach. Tudíž nějaká další rada? :)

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Odečítání času a porovnání

Příspěvekod CZechBoY » 25 pro 2015 20:26

Takže si ulož všechny data do pole nějak rozumně, jen data co budeš potřebovat.
Já bych si uložit třeba jen datum a čas, jméno uživatele. Potom to pole profiltruješ třeba pomocí array_filter a sečteš pomocí count.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

MrFiliper
Level 1
Level 1
Příspěvky: 63
Registrován: březen 15
Pohlaví: Muž
Stav:
Offline

Re: Odečítání času a porovnání

Příspěvekod MrFiliper » 27 pro 2015 01:42

Tak nakonec jsem si poradil. Díky ;)


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti