FileMaker CWP (Custom Web Publishing - Özel Web Yayını) ile yapılan sorgularda mantık diğer veritabanlarından (php+mysql, asp+mssql vb) biraz farklı.
Öncelikle sorgu yaparken kesinlikle bir yerleşim (layout) üzerinden yapıyoruz. Webden yapacağımız sorgu için kullanacağımız yerleşim (layout);
1. sorgu sonucunda döndürülecek verileri (alanları) berlilememize,
2. bu yerleşim için seçilen tablo görünümündeki (table occurance) ilişkili tabloları kullanma imkanı sunuyor.
"SELECT a.Alan1, a.Alan2, b.Alan1 WHERE Tablo1 a Join Tablo2 b ... şeklinde devam eden bir sorgusundaki seçilen alanları ve ilişkileri seçtiğimiz yerleşim üzerinden belirlemiş oluyoruz.
FileMaker'ın CWP ile geliştirme yaparken hazırladığımız sayfada göstermek / sorgulamak istediğimiz alanları içeren yeni bir yerleşim kullanmamız da fayda var. Alanları seçerken yerleşim bağlı olduğu ana tablodan (current table) alan yerleştirebileceğimiz gibi ilişkili alanları, portalları da bu yerleşimde kullanabiliriz.
Sizin örneğinize gelirsek, Tours ve Booking tabloları bir şekilde birbiri ile ilişkili olduğunu varsayalım (soruda tablolar hakkında bilgi verilmediği için tahminlerle gidiyoruz..)
Web için hazırladığımız yerleşim (adı WebLayout_TourListView olsun), Tour tablosundan veri çekiyor ve ilgili Book'inglerle ilişkili olduğunu varsayalım. Sorgu için PHP kodumuz şu şekilde olabilir;
$findCommand1 = $fm->newFindCommand("WebLayout_TourListView");
$findCommand1->addFindCriterion("_kfdTourDate", $date);
$findCommand1->addFindCriterion("Bookings::_kpnID", "$id");
$result1 = $findCommand1->execute();
$records1 = $result1->getRecords();
foreach ($records1 as $record1) ...
Yerleşimimiz Tours tablosunu kaynak olarak gördüğü için sorgu içinde Bookings tablosundan alan kullanacağımızda ilişki adını (bu örnekte Bookings:: şeklinde) belirtmemiz gerekiyor.
Aslında mantık normal filemaker kullanımıza benziyor;
- Önce arama yapacağımız yerleşime geçiyoruz. (1. satır)
- Arama kriterlerimizi giriyoruz (2 ve 3. satırlar)
- Enter'a basıp aramayı çalıştırıyoruz (4. satır)
Arama sonucu geliyor. Buraya kadar oldukça benzer, web tarafında farklı olan sonucun array/object olarak gelmesi ve php kabiliyetleri ile işleniyor olması.