PHP Symfony Editor ?

Hey hey! Fresh stuff again! 🙂 This time it is symfony again!

Lets cut the chatting and get straight to the point!

What IDE are you using? Is it fast, is it comfortable, does it have plugins for Symfony?

You are saying, yeess, NetBeans has it, though it is not very fast 😦 All that Java is eating my memory…

If you have it a lot, that that is not a prob, but what if you are short with that resource??? Lets say you have, oh I don’t know, a virtual machine, which you use for developing. You don’t want all that projects, files and junk to be in your sweet home and to look it every day in your spare time :D. So you make virtual machine and use it to do all the work, then shut it down, and the nightmare is forgotten. YEY! But in case you do not have a resource monster computer, or some kinda super computer, virtual machine will have less RAM than host on which you are running it. That is the main part, where you might have the problems with NetBeans or Eclipse. They are sooo sloow on virtual machines… Or I am not well informed, and I do not know some hints to make them faster. If you do, please inform me below 🙂

CUT THE RAMBLING 🙂 GET TO THE POINT!!! silly me 😀

I went some googling about php editor which has support for symfony. There were NetBeans (newest version), Eclipse (with its plugins), PHPEdit (which is shareware, and being a student, I don’t have too much money to spare on software), Komodo IDE (shareware), but WAIT! Komodo Editor!?

That is free, as in speech, dynamic languages editor. Mmmm nice? PHP, Python, Shell, Perl etc. Mmm nice!!! Built in C++!? Weeell, it is based on Mozzila Framework, which among all includes C++ libraries. Faster than NetBeans or Eclipse, which are Java based… Has some plugins for symfony… WOW! You must be dying from wish to try it! 🙂

Here you go http://www.openkomodo.com/ Komodo Edit

So you download it, and what? How, to use if for developing Symfony projects??? That is the right question! And, since this post took me some time, I’ll describe basic project generation in this post.

I’d be very interested in reading your comments, because I see some interest in symfony… Bye 🙂

Web aplication almost finished pt.2

Since being a good blogger I have to worry about my blog being read, every now and then, I had to start writing on English, as you can see. Now, I don’t know if that is going to make my blog more visited or not, but at least I can give it a try :).

So, in last article there was some talk about my “new” web site for faculty library. Now, you’ll say: “WOW, that must be AWSEOME”… And I say yes, it is awesome, but not super awesome since it has one page and practically just reads from database. No insertion or administration possibilities. Now you’ll say: “Dude WTF did you do then?” 🙂 and I’ll say, I built it with my ten fingers. From the scratch! I don’t want to make myself super dude or super programmer. This is just one basic web application which I programmed as I went through course of web programming in my classes. Technologies that were used are: PHP5, MySQL5, PDO, jQuery’s DataTables and of course HTML, CSS, JavaScript. I want to make special thanks to my home server with Ubuntu 8.04 Server OS, set up by me 🙂 and other things related to it… (if there are any left).

The web application had a really simple design, and that was not so appealing for the everyday use, so one professor from my department had some suggestions and I changed design.

Here you can see the new design and, I’m sorry if you can’t read it but it is not meant to be for foreigners. It is still simple web application for the intern use. If some day it becomes pretty used app I, or whoever keeps improving it  will certainly add English language.

Anyway, thanks for reading and I’d like to see some comments bout my new design…

Biblio веб апликација скоро па готова

Када сам се упустио у коштац са технологијама потребним за ову веб апликацију, одлучио сам да своје проблеме и решења постујем овде. Тако је настао овај блог. Неколико претходних постова су били на тему веб програмирања. Сада када је све готово, условно речено, могу да се похвалим и да кажем да је ово било једно супер искуство за мене као ученика. Доста интересантних и корисних ствари сам научио.

Веб апликација је настала из идеје да се студентима омогући преглед и брзо тражење књига библиотеке факултета. Као неко ко је у датом тренутку могао тако нешто да одради, почео сам и после пар месеци резултати нису изостали. Наравно, апликација није ни екстра компликована ни ултра једноставна :). Било како било, ево линка па просудите! Можда од мене и постане неки веб програмер/дизајнер!

PHP и MySQL, 2. део

Знам да је нездраво висити на блогу и нон стоп постовати :), али боље да то урадим док је “свеже”. Надам се да ћете ми опростити ;).

Вечерас говоримо о раду са југо знацима латинице у MySQL бази података. Даћу вам пар савета како да свој живот учините једноставнијим и не проживљавате бол и патњу коју сам ја проживео :). Хвала богу па је кратко трајало. Ево пар савета:

1. у раду са MySQL базом, битно је да поставите collation на utf8_unicode_ci.
$dbh->query("ALTER DATABASE $database DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci");

2. после остваривања конекције са базом, из PHP-a, постављате сет карактера којим ћете моћи да вршите упите тј. које ће и PHP и MySQL разумети. Може се одредити на пар начина:
$baza = new PDO("mysql:host=$server;dbname=$db;charset=UTF-8", $user, $password);
или
$baza->exec('SET CHARACTER SET utf8');
или
$dbh->query('SET NAMES utf8'); (више објашњења овде);

На крају, када желите резултате представити на веб страни морате јој рећи како да тумачи ваше карактере. То се једноставно каже браузеру са:
<meta http-equiv="Content-Type" content="text/html charset=UTF-8" >
тагом који се постави унутар head html тага.

PHP и MySQL, 1. део

Поздрав свима, овим почињемо серије о PHP и MySQL, у виду неких трикова и трипова :).

Као што сам навео у последњем посту о JSON-у и PHP-у, у задње време радим са базом библиотеке факултета. Ишчитане податке приказујем помоћу jQuery-јевих DataTables. Примери које сам нашао и употребио у раду са базом су користили класичне mysql драјвере. У консултацији са асистентом, одлучили смо да користимо PDO драјвере. Пошто користим објектни PHP, PDO драјвери су логичан след ствари, јер омогућују да се резултатима упита аутоматски попуњавају објекти, који ће се инстанцирати на основу класе коју сами дефинишете. То је мени било врло интересантно, и на крају крајева био изазов. У преправкама кода, морао сам да преправљам и дефинисане MySQL упите. Ту долазимо до трипа и трика, који сам хтео да вам откријем.

У раду са DataTables, при позивању PHP скрипте која се налази на серверу, шаљу се параметри, међу којима и параметри о броју приказаних објеката, које добијете из упита. Тим параметрима се попуњава део упита, који изгледа овако:

"LIMIT ".mysql_real_escape_string( $_GET['iDisplayStart'] ).", ".mysql_real_escape_string( $_GET['iDisplayLength'] );

Искључимо функцију mysql_real_escape_string која припада класичним MySQL драјверима. Треба је заменити PDO еквивалентом, што представља мој следећи изазов. Овај део упита се комбинује са делом за сортирање и главним SELECT делом, и добија се упит који се изврши и врати тачно онолико објеката у табелу, колико је речено овим LIMIT упитом. Дакле, iDislpayStart говори бази од ког реда резултата узима податке, а iDisplayLength колико ће редова узети. Истовремено, је потребно вратити и податак о броју редова који је упит вратио, без LIMIT-а, наравно. То је трип, сложићете се. У почетку ми ово није било познато, тако да сам имао проблема. За параметре који се шаљу LIMIT наредби, користи се једна спуштајућа листа, са предефинисаним бројем резултата које желите да видите у табели (10,25,50,100). Колико год да сам изабрао, резултата је увек било, али исто онолико колико сам селектовао. То ми је било чудно, јер је резултата било више.

Део упита који сам намерно изоставио је био SQL_CALC_FOUND_ROWS, који иде одмах после SELECT наредбе. Незнајући сврху овога, јавили су се већ поменути проблеми. На крају сам на тежи начин научио чему ова наредба служи :). Наиме, коришћење овакве функције је много брже него извођење неког упита са LIMIT и без LIMIT наредбе. Она ће, при првом упиту израчунати број редова које упит врати, не рачунајући ограничења LIMIT-а. То је трик ;). Овим ћете једним ударцем (упитом), завршити два посла.

Упитом који следи, ћете покупити број објеката, које сте добили упитом. На овај начин, који је бржи, добијате број враћених података и лимитиране податке за испис у табели.

Ево sql упита:
SELECT FOUND_ROWS()
Надам се да ће неком бити од помоћи. Видимо се ускоро! 😉