Webdesign

php

Wyświetlanie ilości dni do daty w PHP

2

Na 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:

  1. function dniDoDaty ($rok, $data_wydarzenia) { // podawaj date w formacie 02-14 dla 14 lutego
  2. $data_wydarzenia_do = $rok.'-'.$data_wydarzenia; // składanie aktualnej daty
  3. $data_aktualna = Date("Y-m-d"); // dzisiejsza data
  4. $liczba_sekund_dla_wydarzenia = StrToTime($data_wydarzenia_do); // przekształcenie w format czasu UNIX
  5. $liczba_sekund_dla_aktualnej_daty = StrToTime($data_aktualna); // przekształcenie w format czasu UNIX
  6. $liczba_sekund_miedzy_datami = $liczba_sekund_dla_wydarzenia - $liczba_sekund_dla_aktualnej_daty; // obliczanie różnicy w sekundach między datami
  7. if($liczba_sekund_miedzy_datami
  8. ++$rok; // zwiêkszamy rok o +1
  9. return ZwrocLiczbeDniDoWydarzenia($rok, $data_wydarzenia); // wywołanie funkcji ponowne z następnym rokiem
  10. endif;
  11. $liczba_sekund_w_dniu = 60 * 60 * 24;
  12. $liczba_dni_miedzy_datami = Floor ($liczba_sekund_miedzy_datami/$liczba_sekund_w_dniu);
  13. return $liczba_dni_miedzy_datami;
  14. }

Jak tego używać?

  1. // aby wyświetlić ilość dni do np. walentynek wprowadź
  2. // w pierwszy parametr aktualny rok - najlepiej date("Y")
  3. // w drugi datę w formacie 02-14
  4. echo dniDoDaty(date("Y"), 02-14);
  5. // dzisiaj mamy 2012-01-06 więc skrypt zwróci nam  39 dni

Smacznego ! :)

VN:F [1.9.13_1145]
Oceń ten artykuł:
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
doctrine

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 :)

VN:F [1.9.13_1145]
Oceń ten artykuł:
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
sf

Paginowanie w Symfony – proste i przyjemne :)

0

Symfony Framework PHP Programowanie

Od 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 :)

VN:F [1.9.13_1145]
Oceń ten artykuł:
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
jquery

mintAjax vs. jQuery – czyli jak rozwiązać konflikt :)

0

Zdarzyło się Wam już kiedyś, że musieliście zaktualizować projekt w którym były użyte technologie z przed kilku lat, których nie warto się uczyć?

Miałem ostatnio okazję zaktualizować panel administracyjny CRM, gdzie użyta do obsługi i dynamicznego ładowania danych biblioteka mintAjax. Ja na codzień, działając w JavaScript używam jQuery – i tutaj pojawił się problem. Po połączeniu tych bibliotek / frameworków (zwał jak zwał), JS wysypał mi się całkowicie. Okazało się, że problemem jest wpólnie używany znak $ do wywoływania funckji.

Jest na to prosta rada:

  1. Najpierw ładuj jQuery
  2. Zdeklaruj:
    var jQ = jQuery.noConflict();
    
  3. Później zaladuj mintAjax
  4. Następnie wykonuj polecenia jQuery zamieniając $ na jQ np:
    jQ(document).ready(function() {
    jQ(#div).html('Zmiana tekstu');
    });
    
  5. Voila :)
VN:F [1.9.13_1145]
Oceń ten artykuł:
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.13_1145]
Rating: +1 (from 1 vote)
wp-seti-youtube-download

Easy YouTube Video Downloader – czyli najwygodniejszy sposób na zgrywanie filmów z YouTube

0

Dawno mnie tutaj nie było, oj dawno… Po prostu nie miałem weny, żeby pisać choć nie powiem że nie było o czym. Cóż tak to właśnie czasem bywa. Dzisiaj jednak nadeszła ta wiekopomna chwila i JESTEM, PISZĘ :) Co mnie do tego skłoniło? Otóż, sprawa dość upierdliwa, mianowicie historia wygląda tak. Wszedłem sobie na Fejsbuka :p i przeglądając tablicę zwrócił na siebie moją uwagę wpis SETI Institute, w którym prezentowali film First Contact – Marc Kaufman, Jill Tarter, Frank Drake, Seth Shostak (SETI Talks). Film spodobał mi się bardzo i zachciałem zgrać go do siebie na dysk, tak abym mógł obejrzeć go raz jeszcze w spokoju. Korzystałem już kiedyś z programów do ściągania filmów z YT takich jak You Tube Downloader itp. lecz tym razem po prostu zawiodły. Po ostatnich aktualizacjach YouTube zabezpieczyło się przed ripowaniem filmów i wszystkie najpopularniejsze aplikacje do ściągnięcia zwyczajnie nie działają. Nie wierzyłem jednak (i dobrze ;) ), że YT zabezpieczyło się na tyle skutecznie aby nie móc jednak zgrać sobie filmu na dysk.

Rozwiązaniem mojego problemu okazał się świetny dodatek do Firefoxa Easy YouTube Video Downloader 5.1 w chwili kiedy go instalowałem byla to wersja z 22 czerwca 2011 roku co zasugerowało mi, że właśnie ten dodatek może działać.

Sposób działania jest banalnie prosty, dodatek umieszcza na stronie YT z filmem dodatkowy przycisk obok „Udostępnij” dzięki któremu możemy wybrać jakość w jakiej chcemy ściągnąć dany film. Pracuje to doskonale więc polecam :)

 

Easy YouTube Video Downloader 5.1

Easy YouTube Video Downloader 5.1

VN:F [1.9.13_1145]
Oceń ten artykuł:
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
google-chrome-logo-design

Chrome Experiments – czyli możliwości przeglądarki nowej generacji.

0

Jak od jakiegoś czasu wiadomo, nowo wprowadzane na rynek przeglądarki internetowe posiadają wsparcie wykorzystywania większej ilości zasobów komputera. Najistotniejsze w tym całym zamieszaniu chyba jest to, że przeglądarki mogą (w końcu) wykorzystywać moc obliczeniową kart graficznych zainstalowanych na pokładzie komputerów na których są uruchamiane. Co to może oznaczać w praktyce?
Możnaby myśleć, że jest to małoistotna zmiana, która jest bardziej chwytem marketingowym niż rzeczywistym przełomem w dziedzinie internetu, przecież do czego nam potrzebna karta graficzna w stronach internetowych? Do FLASH? do obsługi YouTube w HD?

Otóż nic bardziej mylnego!

Jak pokazuje nam – niedawno przeze mnie znaleziony – projekt Chrome Experiments, możliwości przeglądarek NextGen są olbrzymie!

Na stronie projektu mamy do dyspozycji bardzo szeroką galerię tzw. eksperymentów – czyli projektów wykorzystujących nowe możliwości, towrzonych przez społeczność oraz deweloperów Google.

Przeglądając tą galerię, moją uwagę zwróciły następujące eksperymenty:

HelloRacer™ WebGL – mój ulubiony – jazda Formułą 1 Ferrari w 3D
FastKat – prosta ale bardzo wciągająca gra 3D polegająca na unikaniu przeszkód
Fractal Lab – generowanie grafiki 3D
Clouds -  latanie wsród chmur w 3D

UWAGA – aplikacje działają tylko w najnowszej wersji Google Chrome 10

Jak widać, nowe możliwości browserów mogą znacząco wpłynąć na treści jakie są publikowane w internecie, zaczynając od publikacji tak prostych aplikacji jak galerie zdjęć poprzez aplikacje do generowania grafiki aż po pełnoprawne gry 3D z wsparciem wszystkich wodotrysów WebGL. Wyobraźcie sobie, że nie trzeba będzie już instalować gier na komputerach, wystarczy odpalić przeglądarkę (w tym przypadku Google Chrome, ale jak wiadomo FireFox 4 również wspiera WebGL) i po prostu uruchomić daną grę bez potrzeby zaśmiecania sobie systemu kolejnymi aplikacjami.

Jakie Wy macie zdanie na ten temat?

VN:F [1.9.13_1145]
Oceń ten artykuł:
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.13_1145]
Rating: +1 (from 1 vote)
Wyniki wyszukiwania w google.pl dla frazy "tworzenie mapy witryny"

HalVa w Google – czyli całkiem wysokie pozycje :)

0

halvik.pl – ten blog bije wszelkie rekordy, moje rekordy :D żadna jego odsłona nie przetrwała tyle co właśnie ta, zastanawiam się czasem czy nie warto by odświeżyć trochę strony wizualnej, ale póki co nie bardzo mam na to czas.

Wyniki wyszukiwania w google.pl dla frazy "tworzenie mapy witryny"

Wyniki wyszukiwania w google.pl dla frazy "tworzenie mapy witryny"

Sprawdziłem dzisiaj moje wyniki w Google Analitycs i zadziwił mnie jeden wynik, mianowicie mój blog i post o mapach witryn, jest ostatnio najczęściej wyszukiwany w Guglu :) W załączniku pokazuję wynik jaki otrzymuje po wpisaniu frazy „tworzenie mapy witryny”, wynik jest ciekawy :) Odziwo mój post pokazuje się wyżej niż oryginalny tekst na ten temat Google. To taka mała ciekawostka :D

Niebawem, mam zamiar uruchomić drugiego bloga, gdzie będę się dzielił moimi przeżyciami kulinarnymi :) Domena już wykupiona i w tym tygodniu na pewno ruszy mój własny CookBook :D (ciekawa nazwa co ;p )

VN:F [1.9.13_1145]
Oceń ten artykuł:
Rating: 9.0/10 (1 vote cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)

Css text-shadow – czyli web’owy antyaliasing czcionek :)

0

Wpadłem dzisiaj na bardzo fajny pomysł „wymuszenia” antyaliasingu czcionek w przeglądarkach internetowych.
Wiem, wiem, można to włączyć sobie w systemie, badzIEwie Microsoftu ma tą funkcję wbudowaną od wersji 7, ale mi chodzi o „uruchomienie” tego w każdej nowszej przeglądarce.
Jak to zrobić? To banalnie proste :)

W CSS do selektora body należy dodać:

body {
text-shadow: #939598 0px 0px 1px;
}

Wyjaśnienie:
text-shadow - atrybut css odpowiedzialny za rzucanie cienia
#939598 - kolor cienia pod czcionką, który symuluje AA, najlepiej użyć koloru 50% czarny
0px 0px – położenie cienia względem czcionki
1px – rozmiar rozmycia cienia.

Poniżej podaję przykłady w użyciu :)

AA „włączony”:
text-shadow: #939598 0px 0px 1px;
AA „wyłączony”:
text-shadow: #939598 0px 0px 1px;
VN:F [1.9.13_1145]
Oceń ten artykuł:
Rating: 10.0/10 (1 vote cast)
VN:F [1.9.13_1145]
Rating: -3 (from 7 votes)

checkArray($array) – czyli sprawdzamy tablice w PHP

0

Prosta funkcja sprawdzająca tablice pod kątem pustych rekordów.


function checkArray($array) {
  foreach($array  as $check) {
    return  (empty($check))?true:false;
  }
}

Funkcja pobiera tablicę z argumentu funkcji, po czym sprawdza każdy rekord i w przypadku napotkania pustego rekordu zwraca false. Proste, ale skuteczne :)

Uwaga: funkcja działa tylko na tablicach jednowymiarowych.

VN:F [1.9.13_1145]
Oceń ten artykuł:
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.13_1145]
Rating: 0 (from 0 votes)
Go to Top