Ajax dla początkujących - łatwy ajax, łatwa asynchornizacja.

Posted by camillo | Inne, Internet, WebDesign, ajax | czwartek 24 lipiec 2008 13:27

Wielu początkujących webmasterów staje czasami przed różnymi problemami z dziedziny: jak zrobić coś żeby moja strona zaczęła być zauważalna. Dzisiaj postaram się wam przedstawić kilka framework’ów, które ułatwiają pracę z technologią ajax, a wręcz wykonują wszystko za nas, dlatego przy tworzeniu jakiejkolwiek aplikacji nie musimy posiadać znaczącej wiedzy o pisaniu skryptów w JavaScript. Wystarczą podstawy.

Poniżej podam linki do framework’ów ajax’owych, na tych stronach znajdują się obszerne dokumentacje i tutoriale dotyczące tych skryptów:

MintAjax - framework umożliwia: asynchronizację i bardzo proste do wykonania efekty graficzne m.in akordeon, drag & drop itd.

jQuery - jak wyżej rozbudowany framework i prosty do modyfikacji

xAjax - umożliwia asynchnchronizację z plikami PHP. Bardzo prosty jeśli znasz podstawy PHP, choć czasem potrafi sprawić niezły problem :)

MooTools - ładne efekty, przejścia, asynchronizacja - czyli wszystko czego nam potrzeba :)

Na stronie FreeAjaxScripts znajdziecie najlepsze galerie, playery, chat’y i inne przydatne skrypty.

Konstruktor i Destruktor __construct() & __destruct()

Posted by camillo | Bez kategorii, Internet, WebDesign, php | czwartek 24 lipiec 2008 09:58

Mój przyjaciel u.Ghost zadał mi pytanie, na które nie potrafiłem odpowiedzieć… Tyczyło się to mojego opisu w komunikatorze, który mniej więcej wyglądał następująco: “__destruct(){}” w sensie Destrukcji organizmu pod koniec dnia pracy :).
Mała zagadka dla czytelników mojego BLOG’a :) (sam jestem ciekaw jakie będą odpowiedzi) jako nagrodę sponsoruję uścisk dłoni prowadzącego blog’a pytanie brzmi następująco:

Czy przy deklaracji __construct(); powinno być słowo kluczowe public, private lub protected? :>

Znam odpowiedź ale na razie się z wami nie podzielę… :) niech to będzie mały QUIZ a Slafur niech milczy, żeby nie zepsuł całej zabawy :D

W zasadzie nastąpiło małe zamieszanko wokół tego wpisu :) ale chętnie wysłucham i przeczytam wasze odpowiedzi :)

Nikt nie udzielił odpowiedzi dlatego odpowiadam ja:
Istnieją dwie możliwości

  1. Przyjmuje public gdy nie ma zdefiniowanego singletonu.
  2. Przyjmuje protected gdy mamy zdefiniowany singleton dla danej klasy

Jeśli masz jeszcz jakąś wersje tego co napisałem wyżej to pisz - o zadane pytanie toczyło się niezłe mózgowanie :)

Pozdrawiam.

Stronicowanie SMARTY - PHP, paginacja, podział artykułów na strony

Posted by camillo | Bez kategorii, Inne, Internet, WebDesign, php | niedziela 8 czerwiec 2008 17:12

Z pewnego źródła otrzymałem do napisania zadanie, stronicowania - musiałem wykorzystać możliwość obiektowości oraz oprzeć ten skrypt o system szablonów SMARTY. Niestety pisanie od podstaw tego stronicowania było czaschłonne i nie specjalnie szybkie. W internecie poszukałem klasę, która nazywa się smarty.paginate.class.php i jest pluginem do systemu szablonów. Sprawa okazuje się być prosta. :) Ściągamy naszą klasę z tej strony, dodatkowo aby umożliwić użytkownikowi przepisywanie za pomocą modRewrite możemy sobie ściągnąć TO i mamy to czego potrzebujemy. Jak wygląda kod?

<?php
session_start(); //start sesji wymagany jest do zapamiętania ostaniej odwiedzonej strony
require('Smarty.class.php'); // include SMARTY
require('SmartyPaginate.class.php'); // Klasa paginacji

$smarty =& new Smarty; // Wiadomo :) 

SmartyPaginate::connect(); // inicjacja paginacji

SmartyPaginate::setLimit(25); // ustawienie Limitu wyświetlanych rekordów na stronie

$smarty->assign('results', get_db_results()); // dołączenie wyników z bazy danych 

SmartyPaginate::assign($smarty);

$smarty->display('index.tpl'); // wyświetlenie wyników

function get_db_results() {

$link = mysql_connect("host", "user", "password", "database");
displaySmartyPagination::mysqlConnection();
//podmieniamy tylko dane do mysql
$_query = sprintf("SELECT SQL_CALC_FOUND_ROWS * FROM `tabela` LIMIT %d,%d",
SmartyPaginate::getCurrentIndex(), SmartyPaginate::getLimit());
$_result = mysql_query($_query);

while ($_row = mysql_fetch_array($_result, MYSQL_ASSOC)) {

$_data[] = $_row;

}

$_query = "SELECT FOUND_ROWS() as total";
$_result = mysql_query($_query);
$_row = mysql_fetch_array($_result, MYSQL_ASSOC);

SmartyPaginate::setTotal($_row['total']);

displaySmartyPagination::countAllRecords();

mysql_free_result($_result);
mysql_close($link);

return $_data; // zwrócenie wyniku :)
}
?>
 index.tpl
---------

{* Wyświetli nagłówki i aktualnie wyświetlaną stronę *}
Items {$paginate.first}-{$paginate.last} out of {$paginate.total} displayed.

{* wyniki z bazy danych *}
{section name=res loop=$results}
{$results[res]}
{/section}

{* Nawigacja *}
{paginate_prev} {paginate_middle} {paginate_next}

OUTPUT
------

Items 1-25 out of 100 displayed.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

prev [1-25][26-50][51-75][76-100] next

W razie problemów chętnie pomogę przy koniguracji skryptu.

Mam nadzieję jednak, że do czegoś się przydał, często na różnego rodzaju zaliczeniach pojawia się problem paginacji, dlatego też smarty.pagination.class.php powstało po to aby ułatwić użytkownikom możliwość dzielenia na części newsów, galerii, czy dowolnych wyników z bazy danych.

Zmienne środowiskowe… [PHP]

Posted by camillo | Internet, WebDesign, php | niedziela 27 kwiecień 2008 11:06

Już nie wytrzymuję jak co chwilę pisze ktoś do mnie jak sprawdzić jaką użytkownik ma przeglądarkę, aktualną ścieżkę do pliku itp. Nie wiem czy ludzie nie potrafią szukać w google czy intuicja im na to nie pozwala, dlatego podam wam linki do stron, które pomogą w sprawdzeniu przeglądarki, sprawdzeniu co jaki czas odwiedzają nas roboty wyszukiwarek internetowych, adresy ip, dane serwera itp.

Szukając czegoś co jest mi potrzebne, a czego nie wiem na sam początek zaglądam tutaj.
Jeśli chodzi o PHP to tutaj.

Na ten przykład na tej stronie znajdują się wszystkie zmienne predefiniowane i jeśli ktoś ma problem z angielskim to jego problem :P

Jak wykryć SPIDER’a wyszukiwarki?

<?php
if(preg_match('/(googlebot|lycos|ask jeeves|whatuseekslurp@inktomi|ia_archiver)/i', $_SERVER['HTTP_USER_AGENT'], $tablica)){
   echo 'Robocik '.$tablica[1];
}else{
   echo 'Brak robotów';
}
?>

Metoda bardzo prosta i nieskomplikowana…. Wrzuciłem to ponieważ o to mnie dręczą młodzi userzy forum.idg.pl :)
Całą resztę zmiennych odnajdziecie w linku, który znajduje się na początku post’u - tam wszystko jest pieknie opisane - wystarczy tylko troszkę znac angielski i do przodu. Powodzenia!

Framework ExtJS, łatwy AjaX?

Posted by camillo | Internet, WebDesign, ajax | niedziela 27 kwiecień 2008 10:43

Projektując panel administracyjny dla jednego z serwisów internetowych postanowiłem napisać administrację opartą o gotowy framework - prosty w użyciu.
W poszukiwaniu natknąłem się przez zupełny przypadek na ExtJS. Biblioteka jak się okazało posiada nawet swoją grafikę :) (co wg. mnie jest przesadą). Ale zacząłem drążyć temat dalej.

Na stronie http://www.extjs.com/ znalazłem masę demo’sów i tutoriali, dlatego teraz nie będę opisywał co i jak zrobić a skupię się jedynie na funkcjonalności.

Jak sie okazuje autorzy skryptu udostępniają nawet WebDesktop gotowy :) (coś a’la EyeOS) . Biblioteka umozliwia dynamiczne tworzenie formularzy z poziomu JavaScript, tworzenie okien dialogowych, tworzenie rozbudowanych portali. (Przykłady możemy zobaczyć tutaj).

Zabrałem się za formularz logowania, obsługę błędów, no i szło pięknie do czasu kiedy próbowałem uwierzytelnić sesję :) jak się okazuje po przejściu walidacji i przekierowaniu do podstrony, w której znajduje się panel administracyjny i wypisaniu zmiennych poprzez:

 <?php
     echo "<pre>";
     print_r($_REQUEST); \\ :) :)
    echo "</pre>";
?>

Jak się okazuje 0 przekazanych zmiennych… ani $_SESSION ani $_POST. Jak szybko się ucieszyłem tak szybko biblioteka poszła na bok i wziąłem starego dobrego advAjax :)

Jeśli masz rozwiązanie powyższego problemu skontaktuj się ze mną… :)