Autor Zpráva
moom
Profil
Lidi zlatí, učím se PHP a narazil jsem na (pro mě) neřešitelný problém.
Používám Wordpress a do speciálního meta_box pole "datum" jsem si vytvořil
pole datum, který se ukládá jako Timestamp. Všechno funguje jak má.
Třídímposty podle tohoto data a ne podle data vytvoření postu. Dotud paráda.

No a teď už půl dne řeším jak vypsat jenom data v rozmezí dvou měsíců
v těchto dvojicích. 01/02, 03/04, 05/06, 07/08, 09/10, 11/12
takže když se budu dívat třeba dnes před půlnocí, tak uvidím výpis 03/04.
Když se kouknu v jedenáctém měsíci, tak uvidím program 11/12. Pokaždé dva měsíce.

Zatím jsem přišel jak zjistit, když mám schodný datum s aktuálním datem.
Ale nemůžu vymyslet konstrukci, jak do toho započítat ty dvojice měsíců.
Máte prosím nějakou radu, popokopnutí, nebo link na něco co nastudovat.

Mám tento kód v rámci smyčky Loop a funguje, jenom ty dva měsíce, kurňa:

$datum = get_post_meta( $post->ID, '_cmb_datum', true ); // tady beru cas ulozeny v meta_box 
$prevoddata = gmdate("Y.m", $datum); // tady to převádím na formát rok a měsíc
$datumdnesni = StrFTime("%Y.%m", Time()); // tady zjišťuji dnešní datum ve stejném formátu

if ( $prevoddata == $datumdnesni )  { // tady začínám podmínku, když jsou měsíce a roky schodné
    echo "Dnes je: " . $datumdnesni . "<br/>";
    echo "Výstava má datum: " . $prevoddata . "<br/>";
    echo "Takže máme stejný měsíc i rok <br/><br/>";
} elseif ( $prevoddata <= $datumdnesni ) { // no a jediné na co jsem přišel je udělat když je to menší, ale jak udělat ty dvojice...
    echo "Dnes je: " . $datumdnesni . "<br/>";
    echo "Výstava má datum: " . $prevoddata . "<br/>";
    echo "Výstava byla dříve<br/><br/>";
}

Jenom pro úplnost, umím jen HTML, CSS, základy PHP a jsem spíše grafik, ale
rád se učím novým kouskům :) Děkuji, děkuji za případnou pomoc
Niik
Profil *
Přidal bych podmínku, že pokud je současný měsíc lichý tak druhý měsíc musí být měsíc následující.
Ten zjistíme například takto:
date("m",strtotime("first day of next month"))
a při výběru dat z databáze určíme, že datum se rovná současné datum, nebo datum dalšího měsice.
Pokud je měsíc sudý bude potřeba získat měsíc minulý:
date("m",strtotime("first day of last month"))
a při výběru dat z databáze opět určíme, že datum se rovná současné datum, nebo datum předchozího měsice.
moom
Profil
To je dobrý nápad, vlastně je pravda, že se to dá vlastně podělit, jestli
je aktuální měsíc dělitelný dvěma, tak se zobrazí aktuální plus předešlý.
Pokud není, tak aktuální a následující. navíc by to asi mělo fungovat i
s rokem a měsícem 201401. Teda jestli to chápu správně...

Tak a teď to ještě nějak napsat. Jdu to vyzkoušet, pokud to
nezvládnu do pěti hodin, tak napíšu co jsem zatím napsal.
Moc moc díky!


tak jsem složil následující kód, zdá se, že to funguje, teď to ještě napasovat na wordpress :)
Teď vlastně vůbec netuším, nebo mně to už nemyslí, jak to porovnat dvě data. Pomocí
následujícího kódu zjistím jaký je aktuální měsíc a které POSTY vzít jestli z současného
a předešlého měsíce, nebo ze současného a následujícího měsíce.

Ale jak vlastně porovnám jestli datum POSTU je v daném rozmezí, které jsem si zjistil?
Jejda, to je divočina, ale je to dobré, člověk se tím hodně učí. Děkuji moc za jakoukoliv pomoc

// vezme se dnešní datum
$dnesje = Date("Ym");

if ($dnesje % 2 == 0) {
        $minusjedna = $dnesje - 1;
        echo $minusjedna . ' / ' . $dnesje;
    }
    else {
        $plusjedna = $dnesje + 1;
        echo $dnesje  . ' / ' . $plusjedna;
    }

Tady ještě doplním datum postu:

// Datum postu je, ale jak to porovnat...
$datumpostu = get_post_meta( $post->ID, '_cmb_datum', true );
$srozumitelnydatumpostu = gmdate("Ym", $datumpostu);

// vezme se dnešní datum
$dnesje = Date("Ym");

if ($dnesje % 2 == 0) {
        $minusjedna = $dnesje - 1;
        echo $minusjedna . ' / ' . $dnesje;
    }
    else {
        $plusjedna = $dnesje + 1;
        echo $dnesje  . ' / ' . $plusjedna;
    }

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0