Hónap utolsó napja PHP-ben

Egy költségnyilvántartó programot fejlesztek, és szükségem volt arra, hogy egy űrlap mező kezdőérékként mindig az aktuális hónap utolsó napját vegye fel. Az ilyen dátum manipuláló dolgokat én mindig a PHP date és strtotime függvényekkel oldom meg. De kiderült, hogy ez nem is olyan egyszerű. Ha egy sorba akarnám írni, az bizony nagyon hosszú lenne. Bár írtam rá egy függvényt:

<?php
 
function last_day_of_month($date = NULL) {
    if (
$date === NULL) $date = date('Y-m-d');
   
$ts = strtotime($date);
   
$months = 12 * date('Y', $ts) + date('m', $ts) + 1;
    return
date('Y-m-d', strtotime( floor($months / 12) .'-'. $months % 12 . '-01 00:00:00' ) -1);
  }
?>

de mint kiderült, felesleges volt. A PHP ezt már alapkiszerelésben is tudja, méghozzá a fent linkelt date függvény t paraméterével.

A hónap utolsó napjának meghatározása PHP-ben, tehát ilyen egyszerű:

<?php
 
// aktuális hónap
 
$honap_utolso_napja = date('Y-m-t');

 
// bármelyik hónap, ahol 1234567890 egy unix timestamp
 
$honap_utolso_napja = date('Y-m-t', 1234567890);
?>

Biztos van aki már tudott erről, nekem még új volt ez az infó.

Hány óra?

Ma volt az óra átállítás, és ezen apropóból gondoltam összeszámolom, hány óra is van a lakásomban. Nem arra voltam kíváncsi, hogy hány órát használok aktívan, hanem hogy hány működőképes órám van, és hogy abból mennyi üzemel. Engem meglepett a szám!

1 sütő
1 mikró
A konyhámban van egy sütő és egy mikró, mindkettőnek van beépített órája. Mindkettő működik, és bár közel vannak egymáshoz, az elhelyezkedésük miatt mindkettőt használom is.

3 számítógép
Egy asztali gépem (amiről ez a post-ot is írom) és a notebookomon kívül van még egy kis itthoni letöltőszerver. Mindháromban van óra és pontosan is működnek. (Volt egy negyedik, ősrégi gép is itthon, de az sajnos tönkrement.)

2 router
Igen, a routerekben is van óra! :) Két router van itthon, de csak a wlan-osat használom. Mivel néztem már meg a router log-ot, ezért mondhatom, hogy azt is használtam már.

1 tv
1 videó
1 hifi
Mindháromban van óra, de a tv-t és a videót másfél éve nem kapcsoltam be. A hifi viszont az ébresztőm, úgyhogy annak pontos az órája és sajnos néha használnom kell :)

1 vonalas telefon
A vonalas telóban is van egy óra, kiírja, hogy mikor kerestek. Ezt is használom.

2 mobil telefon
Csak az egyiket használom.

1 karóra
No comment.

2 digitális fényképező
Egy 6 éves és egy vadi új. Bizony-bizony ezekben is van óra!

3 "óra"
És van 3 óra funkciójú berendezési tárgyam is. Azért ilyen sok, mert promó termékként kapjuk ajándékba. Amit most használok, az hőmérős. A másik kettő ilyen "háttérvilágításos-éjszakamegnézős", ezekben most nincs elem. Faliórám nincs és nem is szeretnék: éjszaka zavar a ketyegés :)

Összegzés
Kiderült, hogy 19 működőképes óra van a lakásomban, és ebből 10 éppen most is működik: sütő, mikró, 1 szgép, 1 router, tv, hifi, a vonalas és 1 mobil tel, karóra és 1 asztali óra

Lehetne az a végszó, hogy "Na megyek állítgatni...", de nem lenne igaz, mert ami fontos, azt már beállítottam vagy magától beállt, a többi meg nem érdekel.

.php kiterjesztés elrejtése a fájlnévben

  • apache tippek

Ez kivételesen nem egy Drupal bejegyzés, most egy kis apache tipp lesz.

A régi típusú url-ek, mint pl. ez: termek.php?id=373&forma=reszletes
már rég a múlté. Helyette jobban szeretjük az ilyeneket: termek/373/reszletes.

Ahhoz hogy ezt elérjük szükségünk lesz a mod_rewrite apache modulra.

A weboldal gyökér könyvtárában hozzunk létre egy .htaccess nevű fájlt. Ha már van ilyen, akkor örülünk.

Egy php mind felett

Ha azt szeretnénk, hogy egy darab php fájl szolgáljon ki minden kérést, akkor írjuk bele ezt:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Ennek hatására minden kérés ami nem egy könyvtárra vagy fájlra mutat, át lesz írva, úgy hogy az index.php szolgálja ki. A kérés paramétereit pedig a q változóban kapja meg az index.php

Nézzünk egy példát.
eredeti url:
/termek/373/reszletes
átírt url:
index.php?q=termek/373/reszletes.

Így minden kérést egy központi helyről intézhetünk. Így működik az is, ami nem Drupal-os, de így működik minden Drupal oldal is. A kódrészletet is a Drupal-hoz csomagolt .htaccess fájlból vettem.

Oszd meg és uralkodj

Egy másik lehetőség, ha különböző php fájlokat készítünk az oldal különböző részeihez, akkor valami ilyensmit kell csinálni:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^termek/([0-9]+)/(.*)$ termek.php?id=$1&forma=$2 [L]

Ennek hatása pont az lesz, amit a bevezetőben említettem.
Ebből:
termek/373/reszletes
ez lesz:
termek.php?id=373&forma=reszletes.

Persze ilyenkor az oldal többi részéhez külön-külön tartozik egy sor a .htaccess-ben. Például a kategória oldalak szép url kezeléséhez pl. egy ilyen kell:

RewriteRule ^kategoria/([0-9]+)$ kategoria.php?id=$1 [L]

Mára ennyi, remélem hasznos volt.

F1Liga - ausztrál és maláj nagydíj

Lezajlott a második futam is a forma-1-ben. Az első futamra nevezett csapatomban a ferrari-t kivéve minden harmatgyenge volt, ezért szinte semmi pontot (és pénzt) nem kaptam amivel gazdálkodhattam volna a második futam előtt. Ezért úgy döntöttem, nem változtatok a csapatomon, ugyanazzal a A. Sutil, A. Davidson, Red Bull, Ferrari, Toro Rosso összeállítással vágtam neki a maláj nagydíjnak is.

Itt minden nagyon szépen indult, de utolsó pillanatban Massa keresztülhúzta a számításaimat. Persze így is majdnem kétszer annyi pénzt kaptam, de ez még mindig nem túl sok.

Összegyűlt 13 millió, ezért úgy döntöttem lecserélem a Red Bull motort és Davidson-t a Williams-es Rosberg-re és marad egy Super Aguri motor. Ezzel fogok indulni Bahrein-ben, remélem most már a ferrari hoz is valami pontot.

Itt az f1ligás profilom:
http://f1liga.hu/csapat/4

GoPHP5.org

  • php
  • fájl feltöltés

Anno, 2007 közepén, nagy lelkesedéssel olvastam a GoPHP5 kezdeményezésről. Örültem, hogy végre valaki felkarolta ezt a problémát.

Azonnal el is kezdem figyelni, hogy a CentOS csapata mikor fogja bevezeti a base vagy a centosplus repo-ba a PHP 5.2-t. Akkor még 5.1.6 volt a standard PHP verzió.

Több mint másfél hónapja elmúlt 08.05.02, és szomorúan jelenthetem, hogy azóta sem történt előrelépés, a centosplus repository php verziója még mindig az 5.1.6.

Én nem vagyok egy Linux guru, ha egy mód van rá elkerülöm olyan szoftverek telepítését, amelyek nincsenek benne egyetlen hivatalos repo-ban sem. Az én szerveremen akkor lesz PHP 5.2, amikor a CentOS team is úgy akarja.

Különösebben nem fáj egyébként a hiánya. PDO abszolút nem hiányzik, jó XML támogatás 5.1 alatt is megoldható.

Egy dologra fáj csak a fogam, a fájl feltöltés állapotellenőrzés-re.

Remélem CentOS-ék mihamarabb lépnek ez ügyben, bár tudom, hogy nem csak rajtuk múlik.

Oldalak

Feliratkozás Prunk-Éger Edgár  RSS csatornájára