# Táblázat: adatforrások (CSV, Google Sheet, űrlap, SQL)

> A Táblázat widget Pro adatforrásai: CSV-fájl, Google-táblázat, a Plus Addons űrlapjának beküldései és SQL-lekérdezés.

A **Táblázat** widget **Tartalomtábla** mezőjének négy Pro forrása a táblázat tartalmát nem kézzel, hanem külső adatból tölti be. A widget alapjait és az **Egyéni** forrást az [alapok fejezet](https://hub.hellowp.io/hu/plugins/theplus_elementor_addon/szovegek-adatok-tabla-alapok/) írja le. Ezeknél a forrásoknál nincs cellánkénti ikon, kép, gomb és eszköztipp, és a soronkénti mobil nézet nem írja ki az oszlopneveket.

## CSV-fájl

A **CSV-fájl** forrás beolvas egy CSV-fájlt és táblázatként mutatja. Ha frissíted a fájlt, a táblázat is követi.

### 1. lépés: a CSV-fájl előkészítése

- Az első sor a fejléc, minden további sor egy táblázatsor.
- Az oszlopokat **pontosvessző** válassza el. A vesszővel tagolt fájl egyetlen oszlopként jelenik meg.
- Ha egy érték maga is tartalmaz pontosvesszőt, tedd idézőjelbe, például `"1 weboldal; e-mail-támogatás"`.
- Mentsd a fájlt UTF-8 kódolással, hogy az ékezetes betűk és a pénznemjelek helyesen jelenjenek meg.

Példa:

```text
Termék;Kategória;Ár (EUR)
Vezeték nélküli egér;Kiegészítők;29
Íróasztali lámpa;Iroda;35
```

A táblázatkezelők gyakran vesszővel exportálnak. Exportáláskor válaszd a pontosvesszőt elválasztónak, vagy cseréld ki a vesszőket szövegszerkesztőben feltöltés előtt.

### 2. lépés: feltöltés és összekötés

1. Töltsd fel a fájlt: **Média → Új médiafájl hozzáadása**, és másold ki a **fájl URL-jét**.
2. Add hozzá a **Táblázat** widgetet, és a **Táblázat** szakaszban állítsd a **Tartalomtábla** mezőt **CSV-fájl** értékre.
3. Másold az URL-t az **Add meg a CSV-fájl URL-jét** mezőbe.

![A CSV-fájlból épített terméktáblázat kereséssel és rendezéssel](./kepek/szovegek-adatok-5-tabla-csv.webp)

*A CSV-fájlból épített terméktáblázat kereséssel és rendezéssel* (https://minta-bolt.hu/tp-tabla-csv/)

A kép a CSV-ből épült táblázatot mutatja a keresőmezővel és a rendezhető fejlécekkel.

### Hogyan működik

- A fájlt a widget az oldal minden megjelenítésekor újra beolvassa, így a módosítás a következő oldalbetöltéskor látszik.
- A webcímet tartalmazó értékből link lesz.
- A fájlban lévő HTML egyszerű szövegként jelenik meg, nem formázásként.
- A **Táblázat kereshetősége**, a **Táblázat rendezhetősége**, a **Bejegyzésszám-választó legördülő menü** és a függőleges görgetősáv működik CSV-adattal.

### Korlátozások és hibaelhárítás

- A címnek `.csv`-re kell végződnie. Minden, ami utána áll (például `?v=2`), az oldalon a „Hoppá! Csak CSV-fájlkiterjesztést adj meg.” üzenetet hozza.
- A hibás vagy hiányzó fájl nem jelenít meg semmit: egy nem létező fájlnál üres táblázat marad üzenet nélkül, ezért az URL módosítása után nézd meg az oldalt.
- Rendezésnél a számok szövegként rendeződnek (a 119 a 29 előtt áll).
- A kiszolgálónak meg kell tudnia nyitni a fájl URL-jét. Ha a tárhely ezt tiltja, a táblázat üres marad.
- Ha minden egyetlen oszlopban van, a fájl vesszőt használ: mentsd újra pontosvesszővel.
- Ha a táblázat üres, nyisd meg a fájl URL-jét a böngészőben, és ellenőrizd, hogy létezik, és `.csv`-re végződik.

## Google Sheet

A **Google Sheet** forrás egy Google-táblázat megadott tartományát olvassa be és mutatja táblázatként. Szükséges hozzá egy Google-fiók a táblázattal és egy Google Cloud API-kulcs bekapcsolt Google Sheets API-val.

### 1. lépés: Google API-kulcs készítése

1. Jelentkezz be a Google Cloud konzolba a Google-fiókoddal.
2. Nyisd meg az **APIs and services** oldalt. Ha még nincs kiválasztott projekt, kattints a **CREATE PROJECT** gombra, vagy válassz egy meglévőt.
3. Adj nevet a projektnek, és hozd létre.
4. A projekt **APIs & Services** oldalán kattints az **ENABLE APIS AND SERVICES** gombra, keress rá a **Google Sheets API**-ra, és kapcsold be.
5. Menj a **Credentials** oldalra, kattints a **CREATE CREDENTIALS** gombra, és válaszd az **API key** lehetőséget. Másold ki a kulcsot a megjelenő ablakból.

A Google konzolja idővel változik, ezért a menük eltérhetnek a fentiektől. Ha lehet, a Google Cloudban korlátozd a kulcsot a Google Sheets API-ra.

### 2. lépés: a táblázat megosztása

A táblázatban kattints a **Megosztás** gombra, és az **Általános hozzáférést** állítsd **Mindenki, akinek van linkje** értékre, hogy a táblázat az API-kulccsal olvasható legyen.

### 3. lépés: összekötés a Táblázat widgettel

1. Add hozzá a **Táblázat** widgetet, és a **Tartalomtábla** mezőt állítsd **Google Sheet** értékre.
2. Másold a kulcsot az **API-kulcs** mezőbe.
3. A **Táblázat ID-ja** mezőbe másold a táblázat azonosítóját: ez a böngészőcímben a `/d/` és az `/edit` közötti hosszú kód.
4. A **Táblázattartomány** mezőbe írd a munkalap nevét és a megjelenítendő cellatartományt, például `Munkalap1!A1:E13`. A tartomány első sora lesz a táblázat fejléce.

### Frissítési idő

A táblázat adatait a webhely a frissítések között eltárolja. A **Frissítési idő** azt adja meg, meddig: **1 hour**, **2 hour**, **6 hour**, **1 day** (alapérték) vagy **1 Week**. Ha a táblázat gyakran változik, válassz rövid időt.

A **Delete All Transient** sor **Delete** gombja törli a webhely Táblázat widgetjeinek eltárolt adatait. Csak rendszergazda használhatja.

### Korlátozások és hibaelhárítás

- A hibás vagy hiányzó adat hibaüzenetet ad a látogatóknak: az üres vagy érvénytelen API-kulcs, táblázat ID vagy tartomány piros „Data Not Found! Google Sheet Data Not Found” dobozt hoz az oldalra. Közzététel után nézd meg a táblázatot.
- A táblázatban tett módosítás nem látszik minden oldalmegtekintéskor, mert az adat a **Frissítési időig** el van tárolva.
- Ha a „Data Not Found” üzenet jelenik meg, ellenőrizd, hogy a Google Sheets API be van-e kapcsolva a kulcshoz, hogy a táblázat meg van-e osztva a linkkel rendelkezőknek, és hogy a **Táblázat ID-ja** és a **Táblázattartomány** (a munkalap nevével együtt) pontosan egyezik-e.
- Ha a **Google Sheet** hiányzik a **Tartalomtábla** listájából, a Pro változat nincs bekapcsolva, vagy a Táblázat widget Google Sheet beállítása ki van kapcsolva a **The Plus Addons → Widgets** oldalon.

## Plus űrlap (beküldések listázása)

Ha a Plus Addons **Űrlap** widgetje elmenti a beküldéseket, a **Plus űrlap** forrás táblázatban listázza őket, például jelentkezéseket vagy kérdőívválaszokat.

### 1. lépés: a beküldések mentése

1. Szerkeszd az oldalt az Űrlap widgettel. A **Beküldési műveletek** között add hozzá az **Adatbázisbejegyzés** műveletet.
2. Az **Extra beállítások** között adj az űrlapnak **Űrlap ID**-t, például `esemeny_jelentkezes`. A táblázat ennek alapján találja meg az űrlapot.
3. Tedd közzé az oldalt, és küldj egy próbabeküldést. Legalább egy beküldés kell, hogy az űrlap megjelenjen a táblázat választójában.

### 2. lépés: a bejegyzések megjelenítése

1. Add hozzá a **Táblázat** widgetet arra az oldalra, ahol a listának meg kell jelennie.
2. A **Táblázat** szakaszban állítsd a **Tartalomtábla** mezőt **Plus űrlap** értékre.
3. Az **Űrlap beállításai** szakaszban válaszd ki az űrlapot az **Űrlap kiválasztása** mezőben. Az űrlapok az **Űrlap nevük** szerint szerepelnek, zárójelben az **Űrlap ID**-val.
4. Az **Oszlopok megjelenítése** maradjon **Összes oszlop**, vagy válaszd a **Kiválasztott oszlopok** értéket, és az **Oszlopok kiválasztása** mezőben jelöld ki a mezőket. Az **Index** egy sorszámozott oszlopot ad.
5. Tedd közzé az oldalt.

### Hogyan működik

- Az oszlopfejlécek az Űrlap widget mezőinek egyedi azonosítói (például `first_name`), nem a feliratok. Az űrlap építésekor válassz olvasható azonosítókat.
- A sorok a beküldés sorrendjében állnak, a legrégebbi elöl. Az **Index** 1-től sorszámozza őket egy „No.” oszlopban.
- Az új beküldés az oldal következő betöltésekor jelenik meg a táblázat végén; gyorsítótár vagy frissítési beállítás nincs.
- A **Bejegyzésszám-választó legördülő menü** és a **Táblázat rendezhetősége** működik ezzel a forrással. Rendezés bekapcsolva az oldal betöltésekor a sorok az első oszlop szerint A-tól Z-ig állnak.
- Ha nincs kiválasztott űrlap, a widget a „Please Select Form” üzenetet mutatja; az üres űrlap „No Data Found” üzenetet kap.

### Korlátozások és hibaelhárítás

- A beküldések nyilvánosak az oldalon: mindenki látja az összes bejegyzést, az e-mail-címeket is. A **Kiválasztott oszlopok** használatával kihagyhatod a személyes adatokat, és említsd az adatkezelési tájékoztatóban.
- A **Táblázat kereshetősége** ennél a forrásnál nem érhető el.
- A fejléc szövegeit nem nevezheted át a Táblázat widgetben, az a mezők azonosítóiból jön.
- Soronkénti mobil nézetnél a telefonon egymás alá rakott sorok nem mutatják az oszlopneveket.
- Ha az űrlap nincs az **Űrlap kiválasztása** listában, ellenőrizd, hogy az űrlap használja-e az **Adatbázisbejegyzést**, volt-e legalább egy beküldése, és töltsd újra a szerkesztőt.
- Ha a **Plus űrlap** hiányzik a **Tartalomtábla** listájából, kell hozzá a Pro változat, és a Táblázat widget **Űrlap-kompatibilitás** beállításának be kell lennie kapcsolva a **The Plus Addons → Widgets** oldalon (alapból be van).

## SQL-lekérdezés

Az **SQL-lekérdezés** forrás SELECT-lekérdezést futtat a webhely adatbázisán, és az eredményt táblázatként mutatja: bejegyzéseket, termékeket, foglalásokat vagy bővítményadatokat anélkül, hogy kézzel másolnád őket. A forrás csak rendszergazdának jelenik meg, és alapos SQL-ismeret kell hozzá.

1. Add hozzá a **Táblázat** widgetet. A **Táblázat** szakaszban állítsd a **Tartalomtábla** mezőt **SQL-lekérdezés** értékre.
2. Írd a lekérdezést az **SQL-lekérdezés** mezőbe. A WordPress alaptáblák neve elé írd a `${prefix}` jelölést, hogy a lekérdezés a webhely táblaelőtagját használja.
3. A **Frissítési idő** mezőben válaszd ki, meddig tárolódik az eredmény.
4. Tedd közzé az oldalt.

Példa: az öt legutóbb közzétett oldal olvasható oszlopnevekkel:

```sql
SELECT ID, post_title AS Cím, DATE(post_date) AS Közzétéve
FROM ${prefix}posts
WHERE post_status = 'publish' AND post_type = 'page'
ORDER BY post_date DESC
LIMIT 5;
```

![Az SQL-lekérdezésből épített táblázat a nyilvános oldalon](./kepek/szovegek-adatok-5-tabla-sql.webp)

*Az SQL-lekérdezésből épített táblázat a nyilvános oldalon* (https://minta-bolt.hu/tp-tabla-sql/)

A kép a lekérdezés eredményét mutatja: az oszlopfejlécek az `AS` után megadott nevek.

### Hogyan működik

- Az eredmény oszlopnevei lesznek a táblázat fejlécei. Az `AS`-sal adhatsz olvasható nevet.
- A sorok az `ORDER BY` szerinti sorrendben állnak, kivéve ha a **Táblázat rendezhetősége** be van kapcsolva: ekkor az oldal betöltésekor az első oszlop szerint rendeződnek.
- A záró pontosvessző megengedett. Egyéni táblánál a valódi táblanevet írd.
- Az eredmény a **Frissítési ideig** tárolódik (**1 hour** és **1 Week** között, alapérték **1 day**). Ha az első megtekintés után közzétettél egy új bejegyzést, az nem jelenik meg az oldal újratöltésekor.
- A táblázatot minden látogató látja, csak a szerkesztőbeli beállítás korlátozott rendszergazdákra.
- A lekérdezést rendszergazda felhasználó által írt tartalomnak kell tartalmaznia: ha az oldal szerzője nem jogosult felhasználó, a látogatók erről szóló üzenetet látnak.

### Az adat azonnali frissítése

A **Delete All Transient** sor **Delete** gombja törli a webhely Táblázat widgetjeinek eltárolt eredményeit. A gomb után a következő oldalmegtekintésnél az újabb tartalom is megjelenik. A gomb utána kb. öt perces visszaszámlálást mutat. Csak rendszergazda használhatja.

### Üzenetek az oldalon

| Üzenet | Ok |
| --- | --- |
| Adj meg egy érvényes SQL-lekérdezést. | Az **SQL-lekérdezés** mező üres |
| Csak SELECT-lekérdezések engedélyezettek. | A lekérdezés nem SELECT-tel kezdődik, például UPDATE vagy DELETE |
| This SQL query is not allowed. | A lekérdezésben tiltott rész van, például `--`, `/*`, egy második `;` vagy `information_schema` |
| Access to this table is restricted. | A lekérdezés a users, usermeta, options vagy sitemeta táblát olvasná |
| No data found for the custom query. | A lekérdezés lefutott, de nem adott vissza sort |

### Korlátozások és hibaelhárítás

- Amit a lekérdezés visszaad, az nyilvános: az oldal minden látogatója látja. Ne válassz ki személyes vagy privát adatot.
- A users, usermeta, options és sitemeta táblák az előtagtól függetlenül nem olvashatók.
- Soronkénti mobil nézetnél a telefonon egymás alá rakott sorok nem mutatják az oszlopneveket.
- Cellánkénti ikon, kép, gomb és eszköztipp ennél a forrásnál nincs.
- A szerkesztők és más nem rendszergazda szerepkörök nem látják az **SQL-lekérdezés** értéket a **Tartalomtábla** listában.
- Ha az **SQL-lekérdezés** hiányzik a **Tartalomtábla** listából, jelentkezz be rendszergazdaként, és ellenőrizd, hogy a Pro változat aktív, és a Táblázat widget SQL-lekérdezés beállítása be van kapcsolva a **The Plus Addons → Widgets** oldalon.
- Ha az új sorok nem jelennek meg, az eredmény még el van tárolva: várd meg a **Frissítési időt**, vagy kattints a **Delete All Transient** melletti **Delete** gombra.
