# Űrlapmezők feltöltése a Lekérdezéskészítővel

> Select, Radio és Checkbox űrlapmezők opcióinak dinamikus feltöltése JetEngine-lekérdezésből: érték és címke megfeleltetése, három példa és gyakori kérdések.

A JetFormBuilder **Select**, **Radio** és **Checkbox** mezőinek opcióit a JetEngine Lekérdezéskészítő eredményéből töltheted fel. Így a lehetőségek a lekérdezett tartalomhoz igazodnak, nem kézzel kell karbantartani őket. Például a látogatók választhatnak egy egyedi bejegyzéstípus szerzői közül, egy felhasználói lekérdezésből szerepkörrel szűrt felhasználók közül, vagy egy WooCommerce-kategória termékei közül.

Követelmények: Elementor (ingyenes változat), blokkszerkesztő vagy Bricks, valamint a JetFormBuilder és a JetEngine telepítve és aktiválva.

A lekérdezés lekéri az adatot, az űrlapmező pedig megjeleníti. Ahelyett, hogy kézzel adnál meg opciókat, létrehozol egy lekérdezést, és a mezőt a találataihoz kötöd.

## Érték és címke megfeleltetése

A mezőnek tudnia kell:

- melyik lekérdezés a forrás;
- melyik tulajdonság legyen a beküldött érték (**OPTION VALUE**);
- melyik tulajdonság jelenjen meg a látogatónak (**OPTION LABEL**).

Ha például egy bejegyzés-lekérdezés az `ID`, `post_title` és `post_author` tulajdonságokat adja, az `ID` lehet az érték, a `post_title` a címke. A korábbi leírásokban szereplő egyetlen „Query ID|value|label” karakterlánc helyett a jelenlegi JetFormBuilder külön mezőkben kéri ezeket. A két mezőbe írt tulajdonságnak szerepelnie kell a lekérdezés kimenetében: a lekérdezés **Eredmények előnézete** kapcsolójával ellenőrizheted, milyen tulajdonságok érhetők el.

## Közös menet

1. Készíts lekérdezést, amely a szükséges adatot adja.
2. Ellenőrizd az eredményt az **Eredmények előnézete** kapcsolóval.
3. Kösd a lekérdezést az űrlapmezőhöz.
4. Add meg az opció értékét és címkéjét.
5. Próbáld ki az előoldalon.

A mező beállítása mindhárom példában azonos:

1. A **FILL OPTIONS FROM** listában válaszd a **Generate Dynamically** opciót.
2. A **GENERATOR FUNCTION** listában válaszd a **Get values list from JetEngine Query** opciót.
3. A **QUERY ID** mezőben válaszd ki a lekérdezést.
4. Az **OPTION VALUE** mezőbe írd a beküldendő tulajdonságot (például `ID`), az **OPTION LABEL** mezőbe a megjelenítendőt (például `post_title`).
5. A **CALCULATED FIELD** üresen maradhat. Ezzel a lekérdezés egy további tulajdonságát csatolhatod az opciókhoz; a látogató nem látja.

Ha az **OPTION VALUE** vagy **OPTION LABEL** tulajdonsága nincs a lekérdezés kimenetében, a mező üres maradhat vagy hibás értéket mutat.

Az űrlapot a JetForm elemmel (Elementor), blokkal (blokkszerkesztő) vagy Bricks-elemmel illeszted az oldalra. Az űrlap rekordjait a **JetFormBuilder → Form Records** oldalon nézheted meg, ha a **JetForm** fül **Post Submit Actions** szakaszában felvetted a **Save Form Record** műveletet.

## Példa 1: egyedi bejegyzéstípus (Radio mező)

Cél: a látogatók megszavazzák a könyvklub következő szerzőjét, a lista pedig csak a bestseller szerzőket tartalmazza.

**Lekérdezés**

1. A **JetEngine → Lekérdezéskészítő** oldalon **Új hozzáadása**, név például „Is Bestselling Query”.
2. A típus marad a **Bejegyzések lekérdezése**.
3. A bejegyzés-lekérdezés blokkban válaszd ki a bejegyzéstípust (itt „Writers and Book Authors”).
4. A **Meta lekérdezés** fülön **Új hozzáadása**: a mező neve `is_bestselling` (a Radio típusú meta mező), az összehasonlítás **Like**, az érték `yes`, a típus **Char**.
5. Kapcsold be az **Eredmények előnézete** kapcsolót, és ellenőrizd, hogy vannak találatok. Mentsd a lekérdezést.

**Űrlap**

1. A **JetFormBuilder → Add New Form** oldalon adj nevet az űrlapnak. Töröld az automatikusan elhelyezett Welcome Blockot.
2. Tegyél be egy kötelező **Text Field** mezőt „Your name” címkével, és egy másik kötelezőt „Email” címkével, amelynek a **FIELD TYPE** értéke **Email** (a **Field** fülön).
3. Adj hozzá egy kötelező **Radio Field** mezőt „Choose an author” címkével, és állítsd be a fenti közös menet szerint: az **OPTION VALUE** `ID`, az **OPTION LABEL** `post_title`.
4. Tegyél alá egy nem kötelező **Textarea Field** mezőt „Leave us a message” címkével, majd egy **Action Button** blokkot az alapértelmezett „Submit” felirattal.
5. A **JetForm** fül **Post Submit Actions** szakaszában az **New Action** gombbal add hozzá a **Save Form Record** műveletet. Mentsd az űrlapot.
6. Illeszd az űrlapot egy oldalra a JetForm elemmel (a **Select Form** listában válaszd ki).

Az előoldalon a Radio mező a bestseller szerzőket kínálja. Beküldés után sikerüzenet jelenik meg, a rekord pedig a **Form Records** oldalon látszik.

## Példa 2: felhasználók (Select mező)

Cél: olvasókörhöz csatlakozáskor a látogató kiválaszt egy moderátort. A lista szerepkör és meta mező szerint szűrt felhasználókból áll.

**Lekérdezés**

1. Új lekérdezés „Query by Moderator” névvel, **Felhasználók lekérdezése** típussal.
2. A **Felhasználói szerepkör** fülön a **Szerepkör** legyen „Moderator” (a szerepkör előre létrejött; bármely meglévő szerepkör használható).
3. A **Meta lekérdezés** fülön **Új hozzáadása**: a mező neve `club_activities`, az összehasonlítás **Like**, az érték `offline_events` (a meta mező opciójának kulcsa). Így csak azok a moderátorok maradnak, akik offline eseményeket szerveznek.
4. Az **Eredmények előnézete** kapcsolóval ellenőrizd az eredményt. Ha nincs találat, nézd meg, hogy van-e a szerepkörhöz rendelt felhasználó, akinél a meta mezőben az opció ki van választva. Mentsd.

**Űrlap**

1. Új űrlap „Join a reading group” névvel, Welcome Block nélkül.
2. Kötelező „Your name” Text Field és „Email” (Email típusú) Text Field.
3. Kötelező **Select Field**: **FIELD LABEL** „Choose a group moderator”, **FORM FIELD NAME** `group_moderator`. Beállítás a közös menet szerint, az **OPTION VALUE** `ID` (minden felhasználónak van azonosítója), az **OPTION LABEL** `display_name` (a felhasználóbarát név). További felhasználói tulajdonságokat az **Eredmények előnézete** mutat.
4. Nem kötelező „Leave us a message” **Textarea Field**, **Action Button** „Submit” felirattal, majd a **Save Form Record** művelet.

Az előoldalon a legördülő lista csak a „Moderator” szerepkörű, offline eseményeket szervező felhasználókat tartalmazza.

## Példa 3: WooCommerce-termékek (Checkbox mező)

Cél: a látogatók kiválasztják, mely könyveket beszéljék meg egy sci-fi olvasókörben. A lista a „Science Fiction” kategória termékeiből áll, és új termék felvételekor magától bővül, az űrlapot nem kell módosítani.

**Lekérdezés**

1. Új lekérdezés „Query by Science Fiction” névvel, **Bejegyzések lekérdezése** típussal. (Itt bejegyzés-lekérdezést használunk a „Products” bejegyzéstípussal, mert ez a szokásos WordPress-tulajdonságokat, például `ID` és `post_title`, adja, és ezek közvetlenül megfeleltethetők a mezőbeállításokban.)
2. Az **Általános** fülön válaszd a „Products” bejegyzéstípust.
3. A **Tax Query** fülön a **Tax Query Clauses** blokkban **Új hozzáadása**: a taxonómia „Product categories”, a mező **Slug**, a kifejezések `science-fiction`. Csak az ebbe a kategóriába tartozó termékek maradnak.
4. Ellenőrizd az **Eredmények előnézete** kapcsolóval, és mentsd.

**Űrlap**

1. Új űrlap „Join a Science Fiction Book Club” névvel, Welcome Block nélkül.
2. Kötelező „Your name” és „Email” (Email típusú) Text Field.
3. Kötelező **Checkbox Field**: **FIELD LABEL** „Which books would you like to discuss?”, **FORM FIELD NAME** `books`. Beállítás a közös menet szerint, az **OPTION VALUE** `ID`, az **OPTION LABEL** `post_title`.
4. „Your message” **Textarea Field**, **Action Button** „Submit” felirattal, **Save Form Record** művelet.

Az előoldalon a Checkbox mező a kategória termékeit kínálja.

## Gyakori kérdések

- **Üres a Select mező, pedig a lekérdezés ad találatot. Miért?** Ellenőrizd, hogy a mezőben a jó lekérdezés van kiválasztva, és hogy az **OPTION VALUE** és az **OPTION LABEL** tulajdonsága megegyezik a lekérdezés kimenetével.
- **Honnan tudom, milyen tulajdonságneveket adjak meg?** Nyisd meg a lekérdezést, és kapcsold be az **Eredmények előnézete** kapcsolót: a visszaadott adatszerkezet mutatja a neveket.
- **Használhatok SQL-lekérdezést?** Igen, de az SQL által visszaadott oszlopneveknek egyezniük kell az **OPTION VALUE** és **OPTION LABEL** mezőkben megadott tulajdonságokkal.
- **Kapcsolat (Relation) alapú lekérdezés használható?** Igen, ha a lekérdezés visszaadja a szükséges tulajdonságokat.
- **Hogyan frissül a lista, ha változik az egyedi bejegyzéstípus tartalma?** Automatikusan. Ha mégsem, ürítsd a weboldal gyorsítótárát, és ellenőrizd az előnézetet.
