Sebagian besar global function di PHPMaker 2021 dapat dikenali dari namanya. Contohnya, ExecuteRow yang berfungsi untuk mengeksekusi data di satu baris (row), dan ExecuteRows yang berfungsi untuk mengeksekusi data di beberapa baris (rows).
Di kedua global function tersebut, kita bisa mengakses data baik dari nomor indeks kolom atau nomor indeks field-nya, yang biasanya dimulai dari 0, maupun dari nama kolom atau nama field-nya.
Kadang-kadang, kita tidak ingin menyertakan nomor indeks kolom atau indek fieldnya, sehingga data yang ditampung ke dalam array menjadi lebih ringkas.
Supaya lebih mudah dipahami, mari kita mencobanya di project demo2021 yang bisa Anda download file-nya untuk dicoba di localhost. Jika sudah di-download, silahkan buka dengan PHPMaker 2021.
Pertama, kita akan membuat sebuah Custom File untuk mencoba kedua global function tadi. Klik kanan di bagian Custom Files pada panel Database, lalu pilih Add File. Di jendela dialog yang terbuka, masukkan array_test.php pada File Name, masukkan Array Test pada Caption, lalu beri tanda centang pada Include common files, lalu klik tombol OK.
Kedua, pastikan array_test.php sudah terpilih pada panel Database di bawah bagian Custom Files, lalu pastikan tab Code (Server Events, Client Scripts and Custom Templates) sudah terbuka. Kemudian lompat ke lokasi ini: Custom Templates -> Table-Specific -> Custom File -> Content, lalu copy-kan kode ini ke editor teks di sebelah kanannya:
<?php $rows = ExecuteRow("SELECT * FROM models", null, \Doctrine\DBAL\FetchMode::ASSOCIATIVE); var_dump($rows); ?>
Setelah itu, simpan file project-nya, lalu generate ulang semua file script seperti biasa menggunakan PHPMaker 2021.
Jika sudah selesai di-generate, silahkan buka Aplikasi Web dari browser, login dengan username admin dan password master, lalu klik menu Array Test.
Output dari kode di atas adalah seperti ini:
array (size=3) 'ID' => string '1' (length=1) 'Trademark' => string '9' (length=1) 'Model' => string '240SX' (length=5)
Untuk lebih mempercepat, kita akan coba bermain-main langsung dengan kode yang kita buat untuk Custom File di atas tadi. Caranya, buka file ArrayTest.php yang terdapat di dalam sub-folder views, maka Anda akan melihat kode selengkapnya menjadi seperti ini:
<?php namespace PHPMaker2021\demo2021; // Page object $ArrayTest = &$Page; ?> <?php $rows = ExecuteRow("SELECT * FROM models", null, \Doctrine\DBAL\FetchMode::ASSOCIATIVE); var_dump($rows); ?> <?= GetDebugMessage() ?>
lalu ubah kode di baris ExecuteRow saja, sehingga menjadi seperti ini:
<?php namespace PHPMaker2021\demo2021; // Page object $ArrayTest = &$Page; ?> <?php $rows = ExecuteRow("SELECT * FROM models"); //, null, \Doctrine\DBAL\FetchMode::ASSOCIATIVE); var_dump($rows); ?> <?= GetDebugMessage() ?>
lalu pastikan Anda sudah menyimpan perubahan tadi pada file views/ArrayTest.php, lalu refresh ulang halaman yang bertalian di browser, maka Anda akan melihat output-nya menjadi seperti ini:
array (size=6) 'ID' => string '1' (length=1) 0 => string '1' (length=1) 'Trademark' => string '9' (length=1) 1 => string '9' (length=1) 'Model' => string '240SX' (length=5) 2 => string '240SX' (length=5)
Sudah tahu perbedaannya dimana? Ya, jika kita tidak menggunakan \Doctrine\DBAL\FetchMode::ASSOCIATIVE pada parameter ketiga di global function tadi, maka itu artinya indeks nomor kolom atau indeks nomor field akan disertakan di array yang dihasilkan oleh global function ExecuteRow tersebut.
Jika kita menghilangkan indeks nomor kolom atau indeks nomor field tadi, maka kita tidak dapat mengakses nilai berdasarkan nomor indeks tersebut. Contoh, jika indeks nomor kolom dihilangkan, maka kita tidak dapat menggunakan kode PHP berikut:
echo $row[0]; // 1 echo $row[1]; // 9 echo $row[2]; // 240SX
Karena tidak bisa menggunakan indeks nomor kolom atau indeks nomor fieldnya, maka kita harus menggunakan nama kolom atau nama field-nya seperti ini:
echo $row["ID"]; // 1 echo $row["Trademark"]; // 9 echo $row["Model"]; // 240SX
Ketentuan ini berlaku juga untuk ExecuteRows. Perbedaannya, kalau di ExecuteRows, maka output array-nya bisa terdiri lebih dari satu elemen, sedangkan ExecuteRow hanya mengembalikan record pertama atau elemen array yang teratas saja.
Tinggalkan Balasan