Stránka 1 z 1

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

Napsal: 23 pro 2015 14:33
od MrFiliper
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.

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

Napsal: 23 pro 2015 19:31
od CZechBoY
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

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

Napsal: 25 pro 2015 19:29
od MrFiliper
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? :)

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

Napsal: 25 pro 2015 20:26
od CZechBoY
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.

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

Napsal: 27 pro 2015 01:42
od MrFiliper
Tak nakonec jsem si poradil. Díky ;)