Posts tagged php
Pracowita sobota :)
0Oficjalnie informuję, że właśnie po długich męczarniach ze zmuszeniem do rozmowy poprzez DLNA ze sobą moich urządzeń w końcu ze słuchawkami na uszach (A State of Trance w eterze offkoz
) rozpoczynam pisanie aplikacji dla telemarketingu
Założenia są proste jak sama aplikacja – zbieranie danych o firmach z możliwością dopisywania historii w formie wydarzeń i czynności. Powinno pójść bez problemu

Wyświetlanie ilości dni do daty w PHP
2Na potrzeby pewnej sytuacji w ostatnich chwilach musiałem wymyślić sposób na wyrzucenie do przeglądarki ilość do do wskazanej daty, np. do walentynek. Zacząłem pisać własną funkcję – ale w pewnym momencie przypomniałem sobie, że lepiej sprawdzić czy ktoś w świecie to koło już wymyślił.
Znalazłem fajny skrypt pod adresem Wyświetlanie liczby dni do określonej daty | Skrypty PHP, mySQL trochę go zmodyfikowałem i wyszło mi coś takiego:
- function dniDoDaty ($rok, $data_wydarzenia) { // podawaj date w formacie 02-14 dla 14 lutego
- $data_wydarzenia_do = $rok.'-'.$data_wydarzenia; // składanie aktualnej daty
- $liczba_sekund_dla_wydarzenia = StrToTime($data_wydarzenia_do); // przekształcenie w format czasu UNIX
- $liczba_sekund_dla_aktualnej_daty = StrToTime($data_aktualna); // przekształcenie w format czasu UNIX
- $liczba_sekund_miedzy_datami = $liczba_sekund_dla_wydarzenia - $liczba_sekund_dla_aktualnej_daty; // obliczanie różnicy w sekundach między datami
- if($liczba_sekund_miedzy_datami
- ++$rok; // zwiêkszamy rok o +1
- return ZwrocLiczbeDniDoWydarzenia($rok, $data_wydarzenia); // wywołanie funkcji ponowne z następnym rokiem
- endif;
- $liczba_sekund_w_dniu = 60 * 60 * 24;
- return $liczba_dni_miedzy_datami;
- }
Jak tego używać?
- // aby wyświetlić ilość dni do np. walentynek wprowadź
- // w pierwszy parametr aktualny rok - najlepiej date("Y")
- // w drugi datę w formacie 02-14
- // dzisiaj mamy 2012-01-06 więc skrypt zwróci nam 39 dni
Smacznego !
Generowanie modeli Doctrine pod Windows
3
Wymyśliłem sobie ostatnio, że spróbuję odpalić Doctrine ORM pod Windowsem XP z zainstalowanym WAMP serwerem. Wszystko szło pięknie do momentu generowania modeli.
Otóż, zgodnie z dokumentacją Doctrine utworzyłem niezbędne pliki oraz strukturę katalogów, plik generate.php:
require_once('bootstrap.php');
Doctrine_Core::dropDatabases();
Doctrine_Core::createDatabases();
Doctrine_Core::generateModelsFromYaml('schema.yml', 'models');
Doctrine_Core::createTablesFromModels('models');
Podczas wywołania z linii komend:
C:/wamp/bin/php/php5.2.11/php D:/www/nazwaProjektu/generate.php
otrzymywałem wynik: Fatal error: Uncaught exception ‘Doctrine_Import_Exception’ with message ‘No yml schema found in schema.yml’ in D:\www\nazwaProjektu\lib\vendor\doctrine\Doctrine\Import\Schema.php:277 i cóż z tym fantem miałem zrobić? Szukałem porad w Google, ale poza kilkoma francuskimi forami nic nie znalazłem. Próbowałem kombinować na wszelkie sposoby z umiejscowieniem pliku schema.yml bez efektu.
W pewnym momencie naszła mnie błyskotliwa myśl
Poczyniłem zmiany, w wyzej wymienionym pliku Schema.php w linii 277 wstawiłem mały kod:
public function importSchema($schema, $format = 'yml', $directory = null, $models = array())
{
...
$array = $this->buildSchema($schema, $format);
if (count($array) == 0) {
mkdir('TUTAJ'); ///////////// TUTAJ WSTAWILEM KOMENDE TWORZĄCĄ KATALOG
throw new Doctrine_Import_Exception(
sprintf('No ' . $format . ' schema found in ' . implode(", ", $schema))
);
}
...
}
Po ponownym wywołaniu z linii komend pliku generate.php kazałem windowsowej wyszukiwarce wyszukać katalog o nazwie TUTAJ, to był strzał w dziesiątkę
Okazało się, że PHP szuka pliku w katalogu z PHP: C:\wamp\bin\php\php5.2.11\
Utworzyłem więc tam katalog models i wrzuciłem do niego schema.yml i zadziałało. Model został poprawnie wygenerowany.
Nie będę teraz opisywał jak poprawić tego buga, to już zostawiam Wam do rozkminienia
Fasturl.pl – faza 6 – uruchomienie
0TAK! System już działa pod oficjalną domeną fasturl.pl ![]()
Zapraszam do korzystania
Skracanie linków to moja specjalność
Jak widać w kilka godzin udało mi się postawić cały system, wprowadzić podstawowe zabezpieczenia, i uruchomić, w międzyczasie opróżnionych zostało kilka puszek piwa i szklaneczka Krupniku z lodem
(nie ma to jak zupa o pónocy
)
Już urodziło mi się w głowie kilka pomysłów na rozbudowanie fastUrl.pl, podejrzewam, że wprowadzę nowe ulepszenia już jutro
Tymczasem, pora iść chyba spać,
Niech krótkie URL’e będą z Wami
FastUrl.pl – Szybkie linki, skracanie linków, krótkie linki
Fasturl.pl – faza 5 – oprawa graficzna
0Jak pisałem wcześniej, obszedłem parsowanie urli za pomocą mod-rewrite, przeniosłem to na PHP co dało natychmiastowy efekt.
W chwili obecnej system działa w 100%, można dodawać nowe linki, przekierowywać je, korzystać z przekierowań. Założenia podstawowe zostały w 100% spełnione, teraz tylko pozostało mi w jakiś sposób oprawić ten projekt w podstawową grafikę i pchnąć go na serwer
Fasturl.pl – faza 4 – konfiguracja przekierowań
0System już działa w 100% w podstawowych założeniach, można dodawać przekierowania i je wywoływać.
Po wejściu na wskazany URL, system sam poprawnie przekieruje na wskazany podczas tworzenia fastUrl’a adres. Mam mały problem z konfiguracją mod-rewrite, kiedy poprawnie działają przekierowania bezpośrednie, wtedy wywalają się URI wewnętrzne, zmienne post ani get nie są przekazywane, chyba będę musiał je obsłużyć w PHP, to powinno zająć małą chwilkę.
Fasturl.pl – faza 2 – konfiguracja
0Silnik postawiony, Doctrine skonfigurowany, pierwsze templaty zrobione, drugie piwo się kończy.
System działa, czas zająć się akcjami.
Fasturl.pl – faza 1 – silnik
0Zacząłem się zastanawiać nad wyborem silnika do mojego skryptu, poguglowałem chwilę i nic ciekawego – gotowego nie znalazłem.
Zacząłem zastanawiać czy nie warto postawić tego np. na Symfony. Doszedłem do wniosku, że Sf to chyba za duży framework jak na taki mały skrytp.
Decyzja, postawię go na własnym silniku PHP który tworzę od kilku dni… Ruszamy!
Fasturl.pl – mój własny skracacz linków.
0Szperając sobie po Facebooku wpadłem na jedną stronę gdzie mocno promowano konkursy społecznościowe. Poczytałem, nawet w dwóch wziąłem udział. Wpadłem w międzyczasie – czytając – na pewną fajną sprawę, tzw. skracacz linków. Wiem że w sieci jest ich od groma, ale po jednym piwie i 2 minutach przemyśleń postanowiłem napisać swój własny skracacz linków.
Szybko zacząłem szukać domeny, po 5 min znalazłem! FastUrl.pl <- pod tym adresem jeszcze dzisiaj znajdzie się mój własny skrypt!
Mam nadzieję, że ten plan mi się uda.
Paginowanie w Symfony – proste i przyjemne :)
0Od jakiegoś czasu już tworząc projekty webowe intensywnie wspieram się frameworkiem Symfony. Bardzo żałuję, że dopiero teraz poznałem tą platformę. bardzo uprasza tworzenie serwisów i znacząco skraca czas jaki potrzebny jest na utworzenie projektu.
W ostatnich dniach musiałem dodać paginowanie do listy newsów na jednym z portali jakie tworzyłem no i, nie poszło mi bez problemowo. Oczywiście nie wynika to z poziomu trudności, ale z mojego niedouczenia
Znalazłem jednak dość prosty i przyjemny sposób na paginowanie, poniżej dzielę się kodem z najbardziej potrzebującymi
// plik action.class.php modułu w jakim dodajecie paginację
$this->pager = new sfDoctrinePager('TwojaNazwaTabeli', sfConfig::get('app_news_on_front'));
$this->pager->setQuery(Doctrine::getTable('TwojaNazwaTabeli')->createQuery('a'));
$this->pager->setPage($request->getParameter('page', 1));
$this->pager->init();
// plik szablonu indexSuccess.php z listą newsów
<?php if ($pager->haveToPaginate()): ?>
<?php $links = $pager->getLinks(); foreach ($links as $page): ?>
<div style="padding:5px 5px 5px 5px;border:#cdcdcd thin solid;float:left;margin-left:5px;font-size:10px" >
<?php echo ($page == $pager->getPage()) ? $page : link_to($page, 'news/index?page='.$page) ?>
</div>
<?php endforeach ?>
<?php endif ?>
<div class="clear"></div>
Jeżeli znacie bardziej wydajne metody na paginację (a zapewne tak jest
) to zapraszam do dyskusji




