Archive for PHP

[Theme Development] Oh… ‘Surga Biru v 1.0′-ku

The \'Surga Biru\' Wordpress Theme

Ahamdulillah… niatnya cuma sekedar iseng ngutak-ngatik theme modifikasi yang pernah di buat sebelumnya, yaitu si ‘Monochrome Typo’ di server lokal, tapi ketagihan sendiri. Dalam 6-8 jam, sejak tadi subuh sampe siang udah 4 theme yang berhasil di’lalap’ (ternyata tanpa sambel dan nasi aja udah enak hehehe). Memang cuman satu theme yang betul-betul berubah wujud sepenuhnya, sisanya cuma sekedar perubahan ‘kecil’. Theme yang secara tampilan sangat-sangat berubah dari theme acuannya saya kasih nama ‘SURGA BIRU’ dan sekarang bisa temen-temen liat dalam tampilan blog saya ini.

Theme yang campur-aduk perpaduan antara biru langit, kelabu, hitam, putih, oranye ini akhirnya jadi juga. Dengan hati yang hati dag-dig-dug gak jelas, theme ini saya namakan saja theme tersebut dengan ’surga biru’ suatu perwujudan harapan saya tentang masa depan. Masa depan yang cerah bagai birunya langit… (Maaak… kenapa aku jadi puitis begini?). Jadi bisa dikatakan theme ini adalah manivestasi dari suatu optimisme akan masa depan, walaupun warnanya agak suram… hehehe… kurang nyeni sih. Ceritanya mah didedikasikan untuk sesosok makhluk gitu deh… (penampakan kali).

Halah, gak jelas! Ayo kita fokuskan lagi ke masalah Theme development. Ada satu poin yang aku pelajari selama sesi ngoprek script tadi pagi, yaitu seluk-beluk berurusan dengan ‘yang berwajib’ memperindah (ato bisa juga sebaliknya, memperuwet) tampilan blog kita dengan berbagai macem aksesoris seperti shout box, blogroll, hit counter, banner-banner dll. Yup… betul sekali sodara-sodara, saya belajar secara otodidak tentang cara kerja sidebar dan widget didalam sebuah theme wordpress. Disinilah saya bertemu langsung dengan bapak ‘function.php’ dan ’sidebar.php’, para tersangka pelakunya.

Saya mungkin nggak akan ngejelasin panjang lebar soal cara kerjanya, berhubung ini mah bukan tutorial dan kalo saya yang bikin tutorialnya kemungkinan besar akan bertele-tele bahasannya. Cuma intinya kunci dari permainan widget didalam theme bisa dibagi dalam 3 tahap:

Pertama, menentukan berapa banyak area widget dan penyebutannya di halaman pengaturan widget (Design>theme)

Kuncinya adalah pada bagian:

if ( function_exists(’register_sidebars’) ) {

}

Kita sering melihat jumlah area widget sangat bervariasi. Kadang di kanan saja, di kiri saja, di dua sisi, di bagian atas posting, atau dibawah posting bahkan ada pula yang tidak menyediakan tempat widget samasekali (terutama theme model lama, sebelum Wordpress versi 2.*). Disinilah si penggarap theme  mengatur berapa banyak area widget yang akan disediakan di dalam theme serta sebutan yang diberikan untuk si theme tersebut. Untuk lebih cepat mempelajarinya sebaiknya kita langsung belajar dari theme-theme yang sudah jadi, agar bisa melihat dan membedakan variasi-variasi yang bisa dilakukan dalam penentuan jumlah area penempatan widget.

Kedua, Mengaplikasikan area widget dalam file index.php

Setelah sebutan dan jumlah area penempatan widget kita tentukan, selanjutnya adalah menempatkan area penempatan widget dinamis di theme yang kita buat. Penempatannya bisa sangat fleksibel, baik di sidebar, diatas atau dibawah halaman atau searea dengan konten blog kita. Tetapi harus diperhatikan pengaturan CSSnya. Secara default, kumpulan widget diletakkan dalam file ’sidebar.php’. Bisa juga lokasi ini kita modifikasi, seperti theme ’surga biru’ ini, dua widget area yang di theme ‘Monochrome Typo’ terletak di sidebar saya tempatkan di atas area posting (content).

Ketiga, Sinkronisasi posisi widget area dengan Stylesheet

Tapi harus diperhatikan, pemindahan lokasi widget seperti yang saya lakukan tidak bisa sembarangan.  Mesti diingat bahwa penempatan script

< ?php if ( !function_exists(’dynamic_sidebar’) || !dynamic_sidebar(’nama_area’) ) : ?>

harus disesuaikan dengan CSS yang diperuntukkan untuk area widget. Peletakkan widget area harus berada dalam <div> yang diperuntukkan khusus untuk widget. Jangan sampai CSS yang tertampilkan justru malah yang diperuntukkan untuk area content atau header, kecuali memang itu yang kita harapkan.

Jika theme yang kita kerjakan ini kita buat dari nol, maka penempatan diatas bisa dibuat lebih fleksibel. Dengan cara ini, pengaturan tampilan baru kita atur saat kita berurusan dengan file stylesheetnya (stylesheet.css). Dalam file stylesheet inilah kita mengatur dimensi dan tata letak komponen-komponen theme, warna-warni latar dan huruf, serta pemilihan jenis font.

Hm… karena saya harus segera minggat dari komputer ini, jadi tulisan ini saya sudahi sampai disini saja. Semoga sharing ilmu seputar PHPnya bisa dilanjutin kapan-kapan. Oiya, berikut ini saya share 4 theme yang saya utak-atik. Selain ’surga biru’, tiga lagi cuman saya tambahin area widget aja, jadi nggak terlalu berubah drastis.

::eheh ::sip ::eheh

If you see my blog content is valuable, please consider to treat me

Comments off

PHP Easy Step

Jika Anda berminat untuk mempelajari dan ingin lebih tahu mengenai PHP, silakan untuk menghadiri acara PHP Developers Day pada tanggal 19 Juni 2008 di Gedung PDII Lt. 2 LIPI Jl. Gatot Subroto Kav. 10, Jakarta. Saya sendiri insya Allah akan menjadi pembicara dengan topik yang sama dengan judul posting ini catatan_riyogarta Untuk melihat [...]

Comments off

[Finished] aggregator.cmsku.org

Sub domain aggregator di cmsku.org rencananya akan digunakan sebagai sarana komunikasi bagi pengembang CMS lokal (a.k.a pribumi). Fasilitas ini akan terbuka bagi siapa saja yang memiliki ketertarikan terhadap dunia web-development, baik bagi mereka yang memang sudah advance ‘meracik’ script/kode maupun yang baru sebatas coba-coba (alias newbies kayak saya). Disini akan disediakan blog informasi, fasilitas agregasi blog (powered by gregarius), dan forum (powered by bbpress). Karena masih ada sedikit masalah dengan integrasi bbpress dan wordpress, jadi sepertinya belum dibuka kesempatan bagi anda-anda yang ingin nimbrung dalam dunia oprek-mengoprek content management system. Tapi bagi anda yang mau mulai siap-siap sekadar pamer CMS buatannya, silahkan menghubungi saya via YM (delcardino).

Wahai mahasiswa informatika (dari manapun institusi anda), ayolah… narsis dikit! Pamerin CMS kalian… jangan dibiarkan ngedon di ftp-ftp lokal dan berlumut karena sekedar jadi tugas kuliah.

::bunga2 ::sip ::peace

If you see my blog content is valuable, please consider to treat me

Comments off

Testing “Lazy Installer 0.1 Beta” + setup situs Agregator

Akhirnya bisa juga nginstall wordpress pake script “Lazy Installer 0.1 Beta” yang kuutak-atik dari scriptnya ‘WP-Plugin Uploader’nya Ahlul faradish Resha. Setelah sebelumnya berhasil jalan di localhost, ernyata bisa juga script itu jalan di online server. Berarti ada alternatif lain untukku kalo mau upload installer selain via ftp-client. Satu hikmah yang bisa diambil buatku adalah, keadaan sulit akan membuat orang berpikir kreatif (ngh… ini bisa dibilang kreatif nggak ya?).
Script yang aku kasih nama lazy installer ini sebenernya merupakan implementasi teknis dari library zip yang ada di pclzip.lib.php yang umum digunakan untuk berurusan dengan file zip di dalam server. Awalnya karena terinspirasi dengan plugin yang kusebut diatas, aku kepikiran gimana caranya supaya aku bisa mengupload installer wordpress tanpa harus berurusan dengan jalur ftp.
Maklum aja kalo aku traumatik pake ftp-client, baik di warnet ato di kampus. kalo mau nginstall wordpress di web kan biasanya kita harus ekstrak dulu file zipnya baru kemudian diupload. Karena pemrosesan filenya satu persatu, transfer ini bisa memakan waktu lama. Ada sih yang mungkin punya fungsi unzip. Tapi dikampusku ini, satu-satunya ftp client yang bisa dipake cuma total commander, dan setahuku nggak ada fungsi itu. Makanya kemudian aku pikir solusinya adalah dengan membuat file installer yang berupa zip terupload dulu ke server baru terekstrak. Berhubung aku ber’pacaran’ dengan script php pun baru beberapa bulan ini, maka jalan pintasnya adalah mengedit script yang sudah dibuat orang.

Dan kandidatnya ada 3, semuanya adalah plugin wordpress. Pertama adalah Oneclick Installer by Anirudh Sanjeev. Plugin ini paling ideal kalo bisa dibuat terpisah dari dari wordpress, karena sudah sekaligus membawa script untuk upload zipfile dari komputer dan script untuk mendownload filezip dari url ke server. Sayangnya aku nggak tau function mana yang bisa dihapus dan mana yang harus dipertahankan sehingga belum ada progress dengan script ini. Dua pilihan lain adalah WP-Plugin Uploader dan WP Auto Upgrade. Dan sampai sekarang yang paling siap (sebenarnya aku hampir-hampir nggak merubah scriptnya) ya… yang pertama itu. Aku cuma ngerubah lokasi target upload dan beberapa bagian lain, terutama themenya (hehehe… narsis dikit ah!).

Dengan berhasilnya instalasi wordpress dan gregarius hari ini, dengan ini saya nyatakan script tadi berfungsi (ketok palu 3 kali). Sekali lagi aku nggak bermaksud mengklaim script buatan orang lain, tapi aku berharap script ini bisa bermanfaat juga. Terutama sekali buat mereka yang akses internetnya lambat, nggak punya fasilitas ftp dan script fantastico di cpanelnya error sehingga nggak bisa install secara instan insyaAllah plugin ini berguna banget. Maka dari itu juga, dipostingan ini aku sertakan paket instalasi yang bisa di download. Isinya mencakup script Lazy Installer, source asli pluginnya, file readme, lisensi GPL, instalasi wordpress (2.3.3 dan 2.5 versi indonesia, secara 2.5 ternyata kurang user friendly), paket useful wp-plugins, instalasi gregarius aggregator. Silahkan buat yang mo ngejajal dan mengembangkan script ini lebih lanjut bisa diunduh dibawah.

Unduh lazy-01-beta.rar

Comments off

Yup Update Tampilan lagi

Kantor baru, new look…

Ini adalah proses percobaan sayah yang nomor 2 , ngebuat themes minimalis…

Semua di desain dan di buat di atas NVU. Sebenernya dah dibuat waktu masih kerja di kantor yang lama , tapi lom sempet diupload kesini karena satu dan lain hal.

Themes ini di insprasi sama themes mark shuttleworth dan juga dari themesnya Sir Mbilung MacNdobos

Well, how do i look ??? yang saya butuhkan sekarang adalah input - input dari sodara - sodara sekalian… Klo mau minta, sok atuh, tapi jangan salahkan saya klo gak jalan :D, ini masih tahap Alpha Stage koq.

Comments off

Zend PHP, Opo Maneh Kuwi?

Maaf jika memang terkesan katro’, karena kenyataan memang begitu :-P . Mungkin, aku termasuk yang ketinggalan dalam urusan ini. Sudah lama memang dengar dengan yang namanya Zend itu, yang kata banyak orang Zend itu memproduksi semacam framework berbasis PHP, dan memang itulah adanya. Secara tidak sengaja (ehh apa sengaja ya), beberapa waktu yang lalu aku main ke kantor IBM di Gedung Land Mark. Di sana sudah banyak orang-orang yang terlihat serius dan pintar-pintar mendengarkan presentasi dari pejabat IBM. Orang-orang tersebut berasal dari PHPUG, komunitas pengguna PHP Indonesia. Aku kesitu bukan sebagai komunitas PHP, tapi ya sekedar ingin tahu aja..hehhehhee. Karena memang belum bergabung dengan komunitas ini.

Ternyata, isi dari presentasi-presentasi tersebut kurang lebih adalah kerjasama antara IBM dengan Zend, perusahaan berbasis PHP, untuk bundling IBM System i Family dengan Zend yang berada di dalamnya. Disitu dipaparkan kelebihan masing-masing dan juga setelah dibundling. Zend, sebagai perusahaan pengembang PHP memiliki cabang di berbagai negara, untuk Indonesia dipercayakan kepada PT. Rynet.

Nah, di dalam modul materi yang diberikan, ternyata terselip DVD berisi beberapa produk dari Zend, Mulai dari yang free hingga free trial. Seperti biasa, di akhir acara ada sesi doorprize, aku sih biasa-biasa saja dalam arti gak terlalu mengharapkan dapat, karena doorprize nya hanya seperti flash disk dan teman-temannya..Kalau doorprize nya seperti handphone, laptop, baru deh harap-harap cemas.hehheheheh. Ehhh,,,,tak disangka tak dinyana (sopo ngiro, sopo nyono), secara sekilas aku melihat kartu namaku diambil dari fishbowl, ternyata memang benar itu kartu namaku dan namaku segera dipanggil. Hahhh….aku mendapat doorprize utama berupa software Zend Guard yang katanya senilai sekitar 250an dolar gitu. Surprize bercampung binun gitu…..
(more…)

Comments off

Symfony Apps Part II

Yesterday we have try to build a simple application based on symfony, now we’ll try to make those apps more usable what we have left now is user management
the sequence if users want to make a movie reviews is

  1. user login to the apps
  2. user pick which movie he / she want to review
  3. he / she put some review on it
  4. he can see the reviews.

in the previous sample, we’ve only build the CRUD application, which base of almost every application. To make it simple, we will use a plugin for symfony called sfGuardPlugin. It’s a plugin to ease the pain of user management and save a lot of our time.

first of all you’ve to download the plugin sfGuardPlugin
and follow the instruction found in http://trac.symfony-project.com/attachment/wiki/sfGuardPlugin/

if you succeeded installed the plugin, you should see the login screen when you trying to access your module.

but the page is a plain one, let’s try to change it a little bit first of all you have to create a folder called sfGuardAuth in your module folder, the module folder it self is on the apps/samples

inside of the sfGuardAuth, create a new folder named templates. Now fire up your favorite editor and create a new PHP file, we have to name it signinSuccess.php and secureSuccess.php
let’s create it like this

<?php use_helper('Validation', 'I18N') ?>
<?php use_helper('Javascript') ?>
<div id="login" style='position: relative;margin: 5em auto 1em;padding: 20px 0 0;width: 425px;'>
<?php echo form_tag('@sf_guard_signin') ?>

    <div class="form-row" id="sf_guard_auth_username">
      <?php
      echo form_error('username');
      echo "<p>";
      echo label_for('username', __('username:'));
      echo "<br/>";
      echo input_tag('username', $sf_data->get('sf_params')->get('username'));
      echo "</p>";
      ?>
    </div>

    <div class="form-row" id="sf_guard_auth_password">
      <?php
            echo form_error('password');
            echo "<p>";
            echo label_for('password', __('password:'));
            echo "<br/>";
            echo input_password_tag('password');
            echo "</p>";
      ?>
    </div>
    
    <div class="form-row" id="sf_guard_auth_remember">
      <?php
      echo label_for('remember', __('Remember me?')),
      checkbox_tag('remember');
      ?>
    </div>  
  <?php 
  echo submit_tag(__('Sign in'));
  echo "<br/>";
  echo link_to(__('Forgot your password?'), '@sf_guard_password', array('id' => 'sf_guard_auth_forgot_password')) 
  ?>
</form>

</div>

that’s for the login page, now what we want is user pick the movie and then give their review of the movie.

first of all let’s change the listSuccess.php inside in apps/samples/modules/movie/template, the default identifier from the CRUD generator is ID. So if you click on id, it will go to show page, so we’ll gonna change the listSuccess.php so instead of ID user click on the Movie name.

<?php
// auto-generated by sfPropelCrud
// date: 2007/11/02 14:03:39
?>
<h1>movie</h1>

<table>
<thead>
<tr>
  <th>Movie name</th>
  <th>Movie synopsis</th>
  <th>Movie released</th>
  <th>Movie produsen</th>
  <th>Movie director</th>
</tr>
</thead>
<tbody>
<?php foreach ($movies as $movie): ?>
<tr>
    <td><?php echo link_to($movie->getMovieName(), 'movie/show?id='.$movie->getId()) ?></td>
       <td><?php echo $movie->getMovieSynopsis() ?></td>
      <td><?php echo $movie->getMovieReleased() ?></td>
      <td><?php echo $movie->getMovieProdusen() ?></td>
      <td><?php echo $movie->getMovieDirector() ?></td>
  </tr>
<?php endforeach; ?>
</tbody>
</table>

<?php echo link_to ('create', 'movie/create') ?>

those are the new listSuccess.php, and we should change a little bit file editSuccess.php,we need to create an hidden field contained user_id add this line below

next is to change the showSuccess.php and this is a new one code snippet.

<?php
....
<hr />
<?php echo link_to('edit', 'movie/edit?id='.$movie->getId()) ?>
&nbsp;<?php echo link_to('list', 'movie/list') ?>

<?php use_helper('Text','Date') ?>
<hr/>
<?php if($reviews) : ?>
    <p><?php echo count($reviews) ?> Critic <?php if(count($reviews)>1): ?>s<?php endif; ?>
        <?php foreach ($reviews as $review) : ?>
            <p><em> Posted by <?php echo $review->getsfGuardUser()->getUserName() ?> On <?php echo format_date($critic->getCreatedAt()) ?> </em></p>
            <div class="comment" style="margin-bottom:10px;">
                <?php echo simple_format_text($critic->getReviews()) ?>
            </div>
        <?php endforeach; ?>
<?php endif ?>

<?php echo link_to('Add a review', 'review/create?movie_id='.$movie->getId()) 
?>

OK we just need to do a little more work in code. let’s edit the action.class.php, this file is inside of apps/samples/movie/action. Edit the function executeShow() to the following

public function executeShow()
  {
    $this->movie = MoviePeer::retrieveByPk($this->getRequestParameter('id'));
    $this->forward404Unless($this->movie);
    
    $c  = new Criteria();
    $c->add(ReviewsPeer::MOVIE_ID,$this->getRequestParameter('id'));
    $c->addAscendingOrderByColumn(ReviewsPeer::CREATED_AT);
    $this->reviews= ReviewsPeer::doSelect($c);
  }

okay, that would be the last file we need to edit in movie directory. what we need to edit is another action.class.php located in app/samples/module/review and make a little bit change in function executeUpdate() so the function will look like

public function executeUpdate()
  {
    if (!$this->getRequestParameter('id'))
    {
      $reviews= new Reviews();
    }
    else
    {
      $reviews= ReviewsPeer::retrieveByPk($this->getRequestParameter('id'));
      $this->forward404Unless($reviews);
    }

    $reviews->setId($this->getRequestParameter('id'));
    $reviews->setMovieId($this->getRequestParameter('movie_id') ? $this->getRequestParameter('movie_id') : null);
    $reviews->setReviews($this->getRequestParameter('reviews'));
    $reviews->setRating($this->getRequestParameter('rating'));
    $reviews->setUserId($this->getUser()->getGuardUser()->getId());

    $reviews->save();

    return $this->redirect('movie/show?id='.$reviews->getMovieId());
  }

now we’ve done, but the application still need a lot of improvement but i do hope that will give you a hint of how easy is to customize symfony

Comments off

Symfony Apps

Di Post-an saya sebelum nya kita udah lihat sekilas tentang symfony, dan atas permintaan beberapa teman akhirnya saya putus kan untuk sedikit lebih mendetail tentang perintah perintah nya.

Kemarin kita membahas mengenai aplikasi untuk mereview film, mari kita lanjutkan pembahasan kemarin.

Lakukan ini di konsole / command prompt di directory tempat kita menyimpan symfony.

%SYMFONY% adalah tempat kita menyimpan symfony

langkah pertama ada inisialisasi module di symfony

  1. C:\>%SYMFONY%\symfony init-app samples

Movie One to Many Review
User One to Many Review
Review Many to One User
Review Many to One Movie

maka kita akan mendapatkan rancangan database seperti ini :

Rancangan Database untuk Aplikasi Movie Database

Perhatikan di aplikasi diatas table name untuk user adalah sf_guard_user, sf_guard_user adalah salah satu table yang di gunakan oleh sfGuardUser salah satu plugin symfony, plugin ini di gunakan untuk authorisasi user.

langkah selanjut nya adalah merubah file yang ada di config/schema.yml menjadi seperti ini :

  1. propel:
  2.  movie:
  3.     _attributes: { phpName: Movie }
  4.     id:
  5.     movie_name: varchar(50)
  6.     movie_synopsis: longvarchar
  7.     movie_released: date
  8.     movie_produsen: varchar(100)
  9.     movie_director: varchar(50)
  10.     created_at:
  11.  
  12.  review:
  13.     _attributes: { phpName: Review }
  14.     id:
  15.     movie_id:
  16.     user_id: { type: integer, foreignTable: sf_guard_user, foreignReference: id, required: true, onDelete: cascade }
  17.     reviews: longvarchar
  18.     rating: varchar(5)
  19.     created_at:

Perhatikan bahwa untuk tipe data String di symfony kita harus masukkan sebagai varchar atau longvarchar perbedaan antara varchar dengan longvarchar adalah banyaknya karakter, varchar maksimum hanya 255 diatas 255 gunakan longvarchar. Dan jangan lupa bahwa yml sangat sensitive dengan masalah spasi, dan juga tidak boleh ada tab. Sesuaikan editor anda untuk memakai 4 spasi menggantikan satu kali tab.

Setelah file di ubah, dan di simpan, maka yang harus kita lakukan adalah meng generasi kan database untuk symfony.

  1. C:\>%SYMFONY%\symfony propel-build-model

Perintah ini berfungsi untuk membangun model atau object dari schema.yml, model ini lah nanti yang akan berfungsi menjadi DAO

  1. C:\>%SYMFONY%\symfony propel-build-sql

Perintah yang satu ini berfungsi untuk membuat perintah perintah sql dari schema.yml

  1. C:\>%SYMFONY%\symfony propel-insert-sql

Setelah di buat perintah perintah sql lalu di eksekusi melalui perintah diatas.

Dan selanjutnya kita akan coba meng generasi kan model model yang telah kita buat melalui perintah diatas. Dengan perintah berikut

  1. C:\>%SYMFONY%\symfony propel-generate-crud samples movie Movie

untuk melihat nya kita harus membuka browser lalu buka url http://localhost/samples/web/samples_dev.php/movie/list
Direktori samples merupakan root direktori dari symfony
Contoh: List dari database movie yang kita buat.

  1. C:\>%SYMFONY%\symfony propel-generate-crud samples review Review

Perhatikan juga bahwa semua relationship di form tersebut sudah di solve dengan cara memberikan combobox.
Contoh: List dari database movie yang kita buat.

  1. C:\>%SYMFONY%\symfony cc

Perintah ini untuk membersihkan cache dari symfony… biasakan setelah melakukan perubahan kita melakukan clear cache

Yup That’s it for today

Comments off

Symfony web Framework

Mungkin rekan rekan semua udah ada yang pernah denger symfony web application framework

Based on the best practices of web development, thoroughly tried on several active websites, symfony aims to speed up the creation and maintenance of web applications, and to replace the repetitive coding tasks by power, control and pleasure.

di website nya bilang begituh… well anyway mari kita coba coba belajar symfony….

langkah nya cukup gampang koq

1. Download
Untuk intial project disarankan untuk mendonlot sf_sandbox. Kenapa ? karena di sandbox itu semua requirement nya symfony udah tersedia. Jadi tinggal pake dan utak atik…

2. Set PHP
Langkah berikutnya kita set PHP biar bisa di panggil lewat konsole. Klo di windows itu di Start->Setting->Control Panel->System->Advanced Options->Environment Variables lalu cari variable Path, lalu edit… tambahkan %PATH%:$PATH_TO_PHP … $PATH_TO_PHP itu tempat kita taruh php.exe

database
Sekarang kita akan coba membuat aplikasi database dalam hal ini kita coba buat aplikasi movie Review…

Didalam perencanaan nya kita ingin ada Movies, Movies bisa direview oleh banyak User, Setiap User bisa Mereview banyak movie sehingga kita dapatkan dua database dengan hubungan many to many. Untuk mempermudah kita buat satu table untuk membantu kita yaitu table review…
Jadi table kita menjadi

Movie One to Many Review
User One to Many Review
Review Many to One User
Review Many to One Movie

Untuk memperkirakan field database kita gunakan asumsi-asumsi…

Movie
Setiap Movie pasti ada judul, produsen, sutradara, tanggal release movie nya, sama sinopsis.

User
Setiap User punya user, password, etc….

Review
Ada Movie, ada User yang mereview, ada isi review, tanggal review, sama rating….

Saya kira segitu cukup untuk memberikan gambaran bagaimana database yang akan kita buat.

Untuk database di symfony sendiri, standardnya menggunakan
Propel
Propel ada sebuah ORM ( Object Relational Mapping ), yang menurut saya sih sangat membantu, yah lumayan lah walau klo di bandingkan dengan hibernate di Java masih kalah.

Sedikit mengutip dari Wikipedia :

Object-Relational mapping (aka O/RM, ORM, and O/R mapping) is a programming technique for converting data between incompatible type systems in databases and object-oriented programming languages. This creates, in effect, a “virtual object database” which can be used from within the programming language Wikipedia

Untuk mengedit database di symfony edit sebuah file di folder config/schema.yml
kira kira ini isi nya

propel:
movie:
_attributes: { phpName: Movie }
id:
movie_name: varchar(50)
movie_detail: longvarchar
movie_length: varchar(10)
movie_status: varchar(25)
movie_genres: varchar(50)
movie_released: date
movie_rating: varchar(100)
movie_distributors: varchar(50)
movie_production_co: varchar(50)
movie_studio: varchar(50)
movie_location: longvarchar
movie_produced_in: varchar(50)
created_at:

critics:
_attributes: { phpName: Critics }
id:
movie_id:
reviews: longvarchar
rating: varchar(5)
user_id: { type: integer, foreignTable: sf_guard_user, foreignReference: id, required: true, onDelete: cascade }
created_at:

harap di perhatikan kalau settingan ini sangat sensitive masalah spasi , dan tidak boleh pake TAB

setelah di simpan
lalu coba buka directory symfony melalui konsole lalu ketik :


C:\>symfony propel-build-model
C:\>symfony propel-build-sql
C:\>symfony propel-insert-sql

dan viola!!! jadi deh database nya … default dari sandbox memakai sqllite…

CRUD
CRUD ada lah aplikasi dasar dalam PHP yang fungsinya hanya untuk Create Read Update Delete jadi untuk mempermudah dan mempercepat kita gunakan generator bawaan dari symfony…


C:\>symfony propel-generate-crud frontend movie Movie
C:\>symfony propel-generate-crud frontend critics Critics
C:\>symfony cc

frontend perintah di atas adalah nama aplikasi nya ….
movie adalah nama script nya sedangkan Movie adalah nama object nya..
– phpName: Movie di schema.yml —
symfony cc adalah perintah untuk membersihkan cache nya symfony…

lalu coba buka browser .. lalu buka url
http://localhost/sf_sandbox/web/frontend_dev.php/movie

jika semua langkah nya tepat seharusnya keluar

Symfony…

well segitu aja dulu sekarang … kita lanjutin lain waktu

Comments off

[trilogi narsis] Antara Surat, Wesel, Instan Message, Offline Message, Email, dan SMS 3

Ini akhir dari trilogi tulisan yang sebelumnya dan yang sebelumnya lagi.

Sebelumnya, ak tanya dulu buat blogger yang baca posting ini, sudah baca cerita sebelumnya?? atw yang sebelumnya lagi?? Klo blom, mending buruan baca dulu, biar nyambung. (promosi biar kejebak baca cerita gak bermutu :P )

Tentang Offline Message:
Dapet offline message melalui Y!M oleh xel (salah satu moderator di Forum SFC) yang menyatakan:
KOPDAR dan BUKBER hari Minggu tanggal 7 Oktober, kumpul jam 5 sore.

Nah, bermodal info tsb, ak buat akhirnya poster:
Poster KopDar

Maklum, sebagai admin, minimal ak muncul. Biar para anggota tau klo: Oh, ini toh yang namanya rd Limosin. (more…)

convert this post to pdf.

Comments off

Tag dan Category pada Wordpress 2.3. Apa beda?

Hal baru yang ada di versi terbaru Wordpress 2.3 adalah ditambahkannya fasilitas TAG untuk penanda artikel pada blog. Selama ini kita hanya mengenal category untuk menandai artikel yang merupakan inti topik artikel. Sebelumnya, saya juga menganggap bahwa category itu sama dengan tag dalam arti memiliki fungsi yang sama. Tag ini kalau dalam engine blogger.com diberi sebutan dengan label. Tapi setelah mencoba WP 2.3, saya menjadi surprise bahwa ternyata category dan tag itu adalah suatu hal yang berbeda. Meskipun tidak ada kaitannya dengan ibadah di bulan Ramadhan, tapi Category dan Tag di Wordpress telah “kembali ke fitrah” dengan kembali ke definisi dan fungsi dasar masing-masing.
(more…)

Comments off

XAMPP versi Bahasa Indonesia

XAMPP versi Bahasa Indonesia

Pernah pake XAMPP?? itu loh, tools yang membundel komponen-komponen penting untuk belajar PHP.

Males jelasin tentang XAMPP, lebih lanjut ke sini aja deh atw ke sini.

Nah, ak sudah buat XAMPP versi Indonesia, sudah lumayan lama sih buatnya, kira² setahun yang lalu. Cuma lupa untuk diposting ke sini.

Nah, buat blogger yang ingin tau bagaimana cara untuk meng-Indonesia-kan XAMPP Anda, tinggal klik di PHP in RuangKopi. Klo gak mau, ya udah gag usah menuju ke TKP.

Btw, mohon maaf jika translate-nya agak² kacau, maklum meng-Indonesia-kan kata² di bidang komputer sangatlah sulit.

convert this post to pdf.

Comments off

Tamu Asing di Gathering KPHPI V

Sebetulnya sudah mau diposting sehari setelah acara Gathering KPHPI V selesai diadakan, hanya kok ndilalah ada saja halangan, ya internet di rumah mati, ngantuk, kerjaan dsb. Alhamdulillah acara yang disponsori oleh Zend Technologies dan PT.Rynet Cipta Teknologi di hari Sabtu, 8 September 2007 kemarin sukses. Sayang, peserta yang datang hanya 40.9% dari 93 [...]

Comments off

Kejam Mode:On (Yang Ke-2)

Lagi lagi, masih ada orang yang tidak mau mentaati apa yang telah disyaratkan untuk menjadi anggota Ruang KoPI. Malam ini atas laporan dari salah satu anggota Ruang KoPI, saya kembali melakukan aksi kejam kepada anggota yang melakukan pelanggaran dengan menghapus account-nya tanpa basa basi. Kenapa saya lakukan ini? Ini semua tidak lain untuk [...]

Comments off

250MB, Hosting Gratis Sampai 2012!

Ternyata ada perusahaan yang cukup gila, minimal untuk sementara waktu ini. Perusahaan tersebut menyediakan hosting gratis hingga tahun 2012 dengan space 250MB dengan bandwith 100GB/bulan berikut Cpanel yang juga sudah disediakan. Pemilik account-nya juga diberikan fasilitas untuk host unlimited domain atau menggunakan subdomain yang diberikan secara gratis juga

Comments off

Gathering V Komunitas PHP Indonesia

Sudah ke-5? Betul. Semula gathering komunitas PHP Indonesia ini hendak diadakan setiap bulan sekali, lalu sesuai dengan perkembangan jaman menjadi 2 bulan sekali . Akhirnya, memang belum jelas apakah akan diadakan setiap bulan sekali, 2 bulan sekali, 6 bulan sekali atau diadakan kalau lagi mau hehehe

Comments off

Script pertama: echo dan memberikan comment

Berikut script pertama untuk memulai perjalan PHP ini: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Bookmark Saya</title></head> <body> <?phpecho "Bookmark Saya";?> </body> </html> Salah satu yang membuat PHP sangat populer, scriptnya bisa disisipkan di HTML. untuk menyisipkan scrip php bisa menggunakan: <?php//Script Anda?> atau dengan cara short tag <?//script Anda?> Komentar itu perlu Ada baiknya menuliskan [...]

Comments off

Hari 1- Instalasi XAMPP di Windows

Setelah membaca linknya om Riyo Panduan belajar PHP, jadi berpikir untuk mendokumentasikan proses belajar saya (siapa tahu bias berguna buat orang lain). Pertama-tama adalah instalasi webserver, MySQL dan PHP. Karena saya mau belajar PHP dan MySQL/SQLite, untuk sementara saya tidak mau dipusingkan dulu dengan urusan server, instalasi webserver (apache), database(mysql), dan PHP tentunya.

Comments off

Satu Bulan di Dreamhost

Setelah bulan lalu memutuskan untuk membeli hosting plan Crazy Domain Insane di Dreamhost, yang saya rasakan adalah penyesalan yang tiada terhingga. Ya! Saya menyesal kenapa baru sekarang menggunakan hosting tersebut Dreamhost menyediakan hampir semua hal yang tidak pernah saya dapatkan dari hosting saya yang lama, baik dari sisi space & bandwith, performa, fasilitas [...]

Comments off

kumpul@ruangkopi.com

Judul yang seperti alamat email ini sebenarnya bukan alamat email, tetapi nama dari aggregator yang saya buat khusus bagi mereka anggota Ruang KoPI yang memiliki blog. Jadi, selain diberi fasilitas hosting untuk digunakan sebagai ruang belajar PHP, lalu juga milis khusus Ruang KoPI, para anggota Ruang KoPI juga saya himbau (yang juga saya tuangkan [...]

Comments off

E-books untuk belajar PHP dan lain-lain

Saya menemukan tempat menarik dimana kita bisa mendownload banyak sekali buku-buku elektronik dari mulai PHP, Java, CSS, MySQL, AJAX, dsb.

Bahkan buku untuk topik-topik lain seperti managemen, kesehatan, fotografi pun tersedia juga.

Silahkan kunjungi  http://www.dbebooks.com/

Comments off

RuangKoPI.com

Akhirnya saya buat dengan sangat sederhana, RuangKoPI.com adalah Ruang Komunitas PHP Indonesia yang saya persembahkan untuk mereka pecinta PHP di Indonesia. Melalui Kejutan PHPers Indonesia versi 2.0 dan Kejutan Untuk PHPers Indonesia, penghuni  Ruang KoPI (baik yang masih menunggu maupun yang sudah memiliki) saat posting ini dibuat telah berjumlah 29 orang atau sudah 41% [...]

Comments off

Kejutan PHPers Indonesia versi 2.0

Melihat animo yang begitu besar atas posting saya sebelumnya (Kejutan Untuk PHPers Indonesia), maka saya memutuskan untuk melakukan sedikit perubahan terhadap fasilitas dan syarat sebelumnya. Kali ini saya akan menaikkan kejutan yang saya berikan sebelumnya, yakni hosting dengan space 1GB menjadi 2GB (yang akan bertambah 0.05GB/bulan) bandwith 18GB/bulan (yang akan bertambah 0.8GB/bulan). [...]

Comments off

Kejutan Untuk PHPers Indonesia

Saya ingat ketika untuk pertama kalinya belajar PHP, yang saya pikir saat itu adalah saya tidak memiliki web server untuk mempraktekkan apa yang akan saya pelajari. Dari situlah saya akhirnya mencari beberapa server gratisan yang mendukung PHP dan MySQL ( … waktu itu saya tidak tahu kalau hal tersebut bisa dipraktekan di PC menggunakan [...]

Comments off

Code Name Bandung Finished

Bandung adalah PHP Framework yang dibuat untuk memudahkan para developer dalam membangun aplikasi berbasis web, baik aplikasi berskala kecil maupun aplikasi berskala besar. Dibuat dan dipikirkan lebih dari 5 tahun setelah pembuatnya belajar dari kesalahan yang dilakukan pada script BedengPSP (baca: BedengPSP .. Gila). Semula, Bandung ini dibuat hanya untuk kepentingan pembuatan content management system [...]

Comments off

combined phentermine sibutramine taking viagra after the expiration date paxil cr 25 viagra for women overdose is ambien safe during pregnancy diazepam 2 day shipping viagra chemical formulation pravachol attorney cialis comparison diflucan viagra paxil and alchohol no2 like viagra 1992 soma cyclone truck effectiveness propecia phentermine sources effexor and cholesterol can premarin make you lose weight alcohol treatment centers hoffman estates il aciphex hydrocodone is tylenol an anti inflamation drug re ambien worsening anxiety depression central viagra plavix flomax psa test what are the affect of valiums flomax ativan viagra over night shipping taking nardil and valium marijuana lowers sperm count diazepam vs clonazepam forum will an addict abuse lexapro central america outdoor marijuana grows 180 37.5 phentermine ambien zlp 10 compare levitra cialis versus viagra marijuana trials 1936 soma codes diazepam diazepan finding thc on marijuana leaves uk viagra sales in the facts about alcohol at family guide phentermine and alcholo phentermine tablets no script prevacid 30mg taking zoloft with serzone pcp box telephone compare cymbalta to prozac tramadol effects yasmin bratz dolls getting of effexor ambien vs sonata 5 generic sildenafil citrate overnight viagra imitation taking prozac with wellbutrin phentermine menstrual cycle overnight delivery of phentermine cr paxil paxil phentermine super rx discount can cialis be taken with vasotec intravenous sildenafil cialis and headache where can i get propecia effect of the drug tramadol phentermine alternative medicine diazepam effects side 13 generic ambien singulair allergy xanax oxycontin seizure discount phentermine discount phentermine ambien cr take with maoi cialis daily robert francis kennedy jr ambien continuing medil edution lifornia viagra generic effexor before and after picutures methamphetamine addicts tramadol 26 addiction danger effects phentermine side fake viagra websites diflucan cod tramadol drug guide celebrex advertising agency dhea hydrochlorothiazide interaction celebrex and prednisone bonaire marijuana methamphetamine laws in las vegas nevada phentermine hydrochloride ship to missouri paxil cr product effexor 225 mg premium generic viagra canadian paxil pharmacy diazepam manufacturer27s actavis phentermine hydrochloride phentermine hcl capsules alcohol brain effects long term depakote en er espanol phentermine tenuate ambien cause numbness welcome to candida diflucan directory lowest propecia 1 mg cod phentermine informative phentermine details offshore pharmacy phentermine yellow phentermine 37.5mg picture pass klonopin urine test dyspepsia as a result of effexor taking pain medication with diovan fosamax drug reactions generic viagra levitra and tadalafil yasmin metrogel acyclovir vaniqa valium 5 mg dog tranquilizer diazepam dosage phentermine without perscript taking half of a cialis diazepam prescribing inforomation co2 for marijuana viagra purchase uk drug and alcohol testing kits acid alcohol derivative ritalin cocaine estradiol and cialis finasteride tramadol and addictive alcohol detox with valium ambien hungover mornings cymbalta adderall wellbutrin prozac ocd iv penicillin 24 hour bag effexor trazodone drug interaction of xanax and valium cialis clinical trials darvocet and wellbutrin hiden dangers of marijuana abortion with valium penegra generic viagra silagra cumwithuscom valium replacement with xanax fosamax with tylenol rx giant cialis sertraline hcl weight loss medical marijuana dispensary locations diflucan large doses phentermine boards zenegra indian sildenafil atenolol 50mg nicotine molecules hydrocodone and itching patanol cialis nexium cialis how to avoid backache green white phentermine capsules xanax dosage with alcohol safe purchase zovirax ointment over the counter viagra womans what doses does morphine come in hyzaar about tramadol bipolar diflucan ranitidine cialis genuinerx net viagra viagra sleep aids lunesta and ambien joint pain and zocor r20 cialis dose of diflucan tramadol urine detection time meridia verses phentermine vicodin es cocaine same on test tramadol patient experiences seizure control without valium effexor baby acet tramadol effects phentermine serious side diazepam overdose paxil class actions acute alcohol consumption zyban wellbutrin side effects effexor medication xr rx viagra lexington which cat ate prozac effexor xr info hydrocodone usage photographic image of viagra marijuana federal law xanax us licensed canadian pharmacies effexor guidelines for use of phentermine actos phentermine foradil phentermine evista paxil antidepressant or antianxiety ambien withdraw help tramadol hcl er alcohol testing product please help can't loose prozac weight hearing prednisone treatment worse tramadol serotonin dopamine phentermine 37.5 fedex potatoes not prozac hardcover lamisil cialis fda ambien what is tramadol apap demora viagra drug new replace viagra adipex pay by e check low cost phentermine taking amitriptyline effexor diazepam for cats hgh phentermine quit smoking xenical nebulizer for smoking marijuana phentermine phentermine abuse cipro concentration dependant taking zoloft and a drug test diazepam 5mg tab mylam tadalafil patent information cialis ad cuba goodins kidney transplant viagra diazepam at allexperts zoloft 25 mg therapeutic dosage bariatric facility whom will prescribe phentermine medications that interfere with synthroid ambien sleep walk phentermine web pages side effects of tramadol in canines tramadol inflamation diflucan mylan drug interactions fluoxetine synthesis of prozac what color do xanax come in valium dosage for cats diflucan rx normal dosage of prozac 99.00 phentermine overnight delivery marijuana rls symptoms viagra generic uk does mircette make you gain weight plants deriving diazepam coreg metoprolol alergic reaction cr from paxil soma mega life health insurance get phentermine now human viagra woman paxil cr support groups failure of cialis to work cialis new zealand paxil antidepressants pharm phentermine paxil cr and zantac phentermine hydrochloride a 167 pot and tramadol gp prescribed cialis soma medication herpes morphine heartburn edinburgh viagra find pages sites search ciallis vs viagra diazepam autoinjector coma ambien tramadol dosage in canines coming off effexor weight ultram prozac seizure new allergy medication advair viagra overcounter cocaine makes me sleepy advair 250 50 mcg cost fruit in alcohol ecstasy what happens topamax wellbutrin easy adderall compare phentermine phentrazine compare viagra alternative compared find a vioxx lawyer ambien lunesta or sonata viagra program carisoprodol phentermine y ellow phentermine caps 30 mg coffee prozac cigarette fine give ambien without prescripti abut diazepam information fosamax info phentermine doctor on staff diazepam for acute back spasm paxil cr weaning to another drug ssri comparison paxil zoloft prozac ambien sleepwalking 2005 can you snort phentermine claritin health alternative one pound marijuana plant viagra birthday cards does propecia work phentermine and prozac mixed 2mg diazepam u 17590 cialis marijuana rap songs pain meds and viagra take ambien and metoprolol together diflucan effectiveness effects phentermine side official store making purple haze marijuana buds effexor for fibromyalgia xanax valium overnight diazepam recommended dosage skin reaction fosamax 5 indian sildenafil soft tab tadalafil zoloft vs saint johns wart mushrooms psilocybin physical dependence atenolol and cold decongestents pregnant moms and prozac paxil alcohol effects viagra on the internet phentermine information use effects effexor drug interactions with viagra oysters viagra sleep driving on ambien ambien risks depression prozac zoloft myths facts phentermine 37 5 facts diovan and diabetes valium withdrawal compared to marijuana withdrawal cialis multiple orgasms is viagra safe for dogs elderly ambien generic drug for detrol sildenafil uses celebrex lung effexor hypertension effexor prozac info about soma depo medrol allergy diazepam pediatric 10mg 3.54 valium ambien with halcion hgh-saizen allegra perscription drug stores flonase diet phentermine venetian las vegas substitute viagra valium no prescrition budweiser extra alcohol viagra modify discount contraindication of tramadol and elavil celebrex and elavil can viagra delay ejaculation valium 2 what happens if you sniff ambien ambien klonopin ranitidine chewable tablets for children diazepam abuse and seniors paxil class action settlement reaction drug diflucan wellbutrin and prozac combo effexor withdraws generic zyrtec on market diflucan dysbiosis glucophage clomid and pcos cialis levitra viagra cialis placebo fosamax renal diltiazem iv to po conversion guidelines phentermine 37.5 90 sale synthroid effect of fasting blood glucose 5 sildenafil women ibuprofen health impacts side effects of vicodin lortab dallas oxycontin attorneys viagra suppositories ivf asherman's effexor and counseling resource took ambien with alcohol decongestant with cialis q viagra viagra maker phentermine taiwan morphine pain killer effexor problem zolpidem and ambien purchase phentermine overnight shipping c o d phentermine saturday diflucan fedex delivery alcohol detox valium ketamine dog off of ambien rand search results for marijuana