- bambano: Bambanő háza tája
- Parci: Milyen mosógépet vegyek?
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- vrob: Az IBM PC és a játékok a 80-as években
- Gurulunk, WAZE?!
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- vrob: 1991 - játék a PC-n
- gban: Ingyen kellene, de tegnapra
- Argos: Szeretem az ecetfát
Új hozzászólás Aktív témák
-
urandom0
senior tag
válasz
lanszelot #21768 üzenetére
Az a baj, hogy még mindig nem vagy tisztában alapfogalmakkal sem, és nem is jársz utánuk. A múltkor linkeltem neked egy dokumentumot a kliens-szerver architektúráról, még rajzoltam is hozzá egy ábrát, ahova beírtam a webszerver mellé a PHP-t. Arról is volt már szó, hogy a PHP milyen kapcsolatban van a MySQL-el.
Erre te leírod, hogy nálad nincs szerver... -
biker
nagyúr
válasz
lanszelot #21768 üzenetére
"minden más össze zavar."
maradva a festős példánál, téged a festésben csak két dolog zavar, amivel nem tudsz mit kezdeni, a festék és az ecset. A fal se teljesen van rendben, de nagyjából el tudod képzelni, hogy azt kell festeni, de az a fránya ecset meg festék, ami nem is olyan színű mint a youtube videóban a hogyan kezdjünk festeni résznél
-
urandom0
senior tag
válasz
lanszelot #21764 üzenetére
Tehát az a szerver kell ahol a php fut.
Hát nyilván, mi más.
De van nekem felhasználónevem? Vagy 4 éve raktam fel, nem emlékszem, ha adtam.meg. Covid kezdetekor kezdtem tanulni.
Te SQLite-ot használsz, nem MySQL-t. Neked nem kell SQL-es felhasználónév.
így 4szer is újra írtam az egészet
Hát, én írtam a múltkor, hogy túl nagy fába vágtad a fejszédet, ahhoz képest, hogy se át nem látod az egészet, se nem érted, se gyakorlatod nincs benne...
Ez a fetch izét egyáltalán nem értem, ez nem fog nekem menni.
Pedig semmi extra nincs benne, annyit csinál, hogy a megadott adatokat, a megadott formátumban elküldi a megadott cél (URL) felé.
-
biker
nagyúr
válasz
lanszelot #21764 üzenetére
senki nem mondta, CSAK ÍGY CSINÁLD
senki nem mondta, ÍRD ÚJRA
nem vagy hajlandó megérteni a dolgokat, és nem vagy képes alkalmazni a tanácsokat
Továbbra sem fogadod el, hogy meg kell tanulnod, hogyan működik a webkiszolgálás, de webalkalmazást akarsz programozni, azzal a mentalitással, hogy
Lanszelot: hogyan fessem le a falat zöldre?
fórumozó: itt egy videó, így kell falat festeni
Lanszelot: de itt fehérrel festenek, én ZÖLDRE AKAROM FESTENI! Most hogy lesz nekem zöld ha fehér festék van benne?Na kb ezen a színvonalon nyomod. MIÉRT????
-
válasz
lanszelot #21756 üzenetére
Vannak bajok. Tehát neked azért nem jó, hogy a submit lefrissíti az oldalt, mert törli az összes többi form-odat. Ahelyett, hogy normálisan, ahogyan kell, egybe küldenéd az egészet. De az egyesével küldéshez meg nem érted az API-kat...
Rohadtul túlbonyolítod a kérdést és ez is azt mutatja, hogy sem a főzéshez, sem a programozáshoz nem értesz. Gondold át alaposan, lépésről lépésre, hogy mit és miért. Majd meglátod, hogy fogsz kapni egy kb max 3 táblás adatbázist.
Kezdem úgy érezni, hogy szándékosan akarod idegesíteni a Webfejlesztő topikok lakóit...
-
biker
nagyúr
válasz
lanszelot #21754 üzenetére
én tudok főzni, és programozni is, ezért nem értem a problémát
Eleve mi van ha nem sütemény, hanem szuvidált oldalas? és 6 lépésből áll?
Eleve nem értem, hogy konyhatechnológiai kérdéseket miért kell recpetbe tenni? pl vágd zsüliennre akkor nem kell leírni azt hogy kell. A habverést sem kell elmondani, ehhez lehet egy technikák cikket írni.Fogsz egy nagy formot, új recept
(ID generálva beíráskor a db-be)
recept neve
kategória ID (segédtábla kategóriákkal kategória neve, pl sütemény, hús, egytálétel, stb)
Lépésenkénti elkészítések
általános leíráskb ennyi kell a DB-be, a formban a lépésenkénti részhez kell egy kis JS/Jquery trükk, amivel user friendly módon kiraksz egy lépés hozzáadása gombot, ami feldob pár mezőt,
lépés neve (pl piskóta, krém, öntet, akármi)
lépések összetevői
lépések leírása
ezekből akármennyit fel tudsz venni, és elmented így valahogy egy adatbázis mezőbe
lépés1:piskóta;összetevők1:{név1:mennyiség1;név2:mennyiség2;név3:mennyiség3};leírás1:elkészítésmódja|||és a feldolgozás kiolvasáskor explode ||| jelnél, a maradékot tömbként feldolgozod és kiíratod.
kb hasonló a wordpress attributumok és variációk kérdése
-
urandom0
senior tag
válasz
lanszelot #21742 üzenetére
Azt se tudtam hogy a php elküldi a formot valahova.
Azt hittem berakja az adatbázisban.Én is csak megerősíteni tudom, hogy nem a PHP küldi el, hanem a böngésző. De én ilyen apróságok miatt nem szoktam szólni,
Ajax-hoz nem kell Fetch. Van ajax vagy fetch (xmljttp -t nem tudom).
Szintén csak megerősíteni tudom azt, hogy az AJAX egy technika, hogy mivel valósítod meg, az egy másik kérdés. Megvalósíthatod XMLHTTPRequesttel vagy fetch() függvénnyel (de ha nagyon akarja az ember, WebSockettel is megoldható).
jQuery-t ismered, nem? Abban is van $.ajax(), $.post(), $.get() és hasonlók függvények, az is AJAX.Ezek szerint töröljem az összes php-t és js-el oldjam meg az egészet?
Tehát kezdjem ismét újra az egészet?Igazából a tanulást kéne előről kezdeni, mert még mindig azt mondom, az alapprobléma az, hogy egyszerűen nem látod át, hogy minek mi a szerepe. Próbáltam már korábban leírni itt, nem tudom, mennyire ment át, de igazából azt kéne átnézned, hogy hogyan működik ez az egész webes kommunikáció. Nagyjából itt kellene elkezdened: Client-Server Overview
Van benne egy ábra, azt is nézegesd meg alaposan.Készítettem én is neked egy ábrát, mert a cikkben lévőben nincs benne az adatbázis. Nem tökéletes, de a lényeg talán leolvasható: [kép]
-
biker
nagyúr
válasz
lanszelot #21746 üzenetére
""Ez nekem magas", azaz fogalmam sincs hogy mit jelent amit leírt"
és akkor miért nem egy wordpresst raksz fel ami 5perc egy nyolcadikosnak, és már rég lenne receptoldalad?
"Azt se tudtam hogy a php elküldi a formot valahova."
mert nem küldi a php sehova!
"Azt hittem berakja az adatbázisban."ha azt kéred berakja adatbázisba, de mást is csinálhatsz vele
"Nem jelszó.
A recept adatai. De az adatokat nem egyszerre viszi be az sql adatbázisba hanem sok submit gombbal készül el egy recept."NEM! egy submit gombbal elküldöd a recept összes adatát, normális esetben
"Ezt megint sufni tuningolnom kell.
JS ben ajax/fetch sem értem. Tudom használni, de nem értem."
nem, nyugodtan elhiheted, nem érted, és használni sem tudod
"Php elküldi - tehát ezt sem értem."
Lásd fent, nem küldi sehova
"Mielőtt jönne, hogy mert meg kellett volna tanulni... Ajax/fetch magán tanárt fizettem 4 éve, de nem tudtam megérteni.
Api-hoz tudom használni és itt kifújt."Kár volt fizetni neki ezek szerint.
PHP: a szerveren fut, fogad bemeneten kérést, és a kimeneten választ ad
HTML: kizárólag a kliens gépen statikus tartalom megjelenítése
JS: nem kötelező, de segít szebbé tenni a megjelenést, mert a statikus html-ből adatot tud kiolvasni a háttérben, ezt feldolgozásra el tudja küldeni async a php-nek, ami a választ elküldi a js-nek, ami felülírja a html element tartalmát, és megjelenik a frissített tartalom.vagyis ha te úgy akarsz receptet frissíteni, hogy ne töltsön újra az oldal a submit miatt, akkor
1: statikus html ami megjeleníti a recept területet
2: egy form a html-ben ami elküldi az adatokat
3: egy php ami fogadja az űrlap adatait, és beírja a db-be
4: egy php ami kiolvassa egy adott id-jű recept adatait a db-ből
5: egy js/jqeury blokk ami a html form element adatait beolvassa, és submitra elküldi a 3. php-nek
6: egy js/jquery blokk ami figyeli a 4. php elem válaszát
7. egy js/jquery blokk ami felülírja a recept tartlma megejelnítés elementek tartalmát a frissített tartalommal.De értelmesebb egy admin form, amin megírod a receptet, és egy display html ami megjeleníti, és kihagytad a js-eket.
-
biker
nagyúr
válasz
lanszelot #21746 üzenetére
Ember, végre fogd már fel, mi hol fut!
PHP: szerver
HTML, JS, Jquery: kliensergo:
- humanoid veri a kéjbárdot a kliens gépen, megnyitja az oldalad
kliens > apache szerver > php lefut > html generál > apache válasz kimegy > kliens megjeleníti- humanoid elküld receptet
kliens gépen form submit (gomb, js, akármi) > apache szerver > php feldolgozó motor > db szerver megkapja > sikeres válasz a php-nek > ha kész minden válasz generálása html kódra > apache szerver elküldi a kliensnek > megjelenik a kliensnélössze vissza beszél mi dolgoz fel mit, és nem érted, mit hol kell megoldani. mintha az asszony szerelne autót úgy, hogy ha azt mondom csőkulcs akkor felakad a szeme, és a kalapácsra néz
-
pelyib
tag
válasz
lanszelot #21744 üzenetére
Hat pedig JS nelkul ujra fog tolteni az oldal.
AJAX onmagaban nem mondja meg, h mit hasznalj.
"Ajax is not a technology, but rather a programming concept."
Az Ajax (Asynchronous JavaScript and XML) interaktív webalkalmazások létrehozására szolgáló webfejlesztési technika. Segítségével a weblap kis mennyiségű adatot cserél a szerverrel a háttérben, így a lapot nem kell újratölteni minden egyes alkalommal, amikor a felhasználó módosít valamit. Ez növeli a honlap interaktivitását, sebességét és használhatóságát.
[link]
erdekes lehet ez is: [link]
angol wikin pl mindkettovel van pelda: [link]urandom0 szepen leirta, hogy mikent mukodik egy ilyen megoldas itt: [link]
meg annyit tennek hozza, h ezt nezd meg es olvasgass utana: on_submit: [link] -
pelyib
tag
válasz
lanszelot #21742 üzenetére
Ember -[eger / bill segitsegevel]-> Bongeszo -> JS -[HTTP keresek]-> webszerver -> PHP -> db
Ebben az egesz folyamatban altalaban 2 db szamitogep vesz reszt(nagyon leegyszerusitve), az ugynevezett kliens (bongeszo + JS) es a szerver (webszerver, PHP, DB), most tekintsunk el attol az esettol amikor a ketto komponens ugyan azon a gepen fut.Most hogy tisztaba raktunk az alapokat.
"php elküldi a formot valahova." a php NEM kuld semmit ilyenkor, a bongeszo vagy a JS teszi ezt a kliens oldalon, ezt a kerest a webszerver fogadja es adja tovabb a PHPnak.
"JS ben ajax/fetch sem értem." => ketfelekeppen tudsz adatot beszerezni a szervertol, linkek megnyitasaval (amikor a cimsorba beirsz valamit, vagy egy linkre klikkelsz es a bongeszo teszi ezt meg neked) vagy JS segitsegel. A JS el tud inditani egy kerest a "hatterben" anelkul hogy elnavigalna az aktualis oldalrol, ezt hivjak AJAX-nak, ehhez kell hasznalni a Fetch-t vagy azXMLHttpRequest-t. Es mivel JSrol van szo igy a szervertol kapott valaszt fel is tudja dolgozni es a meglevo oldalt a bongeszoben tudja manipulalni, avagy a valaszt beilleszteni.
-
urandom0
senior tag
válasz
lanszelot #21740 üzenetére
Amikor a formban a submit gombra kattintanak, akkor ne küldje el az formot, hanem fusson le egy Javascript, ami összegyűjti a formban megadott adatokat, és elküldi a szervernek (egy PHP fájlnak), majd miután visszakapta a választ, feldolgozza. Mondjuk, ha egy login formról van szó, és hibás a megadott jelszó, akkor a visszakapott válaszban valahogy jelezni kell, hogy rossz a jelszó, a Javascriptnek pedig a feldolgozás során ezt ki kell íratnia a felhasználónak.
-
urandom0
senior tag
-
-
-
lanszelot
addikt
válasz
lanszelot #21732 üzenetére
Ma reggel elindítottam a gépet és most működik.
Tegnap órákat csesztem el rá, hogy mi a gond és igazából semmi.Mivel tegnap nem indítottam újra a gépet, ma pedig semmit se csináltam, gondolom rendszer hiba volt.
Chrome bugolhatott be?
Vagy ez mi volt?
Még sose történt ilyen. -
urandom0
senior tag
válasz
lanszelot #21729 üzenetére
Az SQLite adatbázisban egy tábla létezésének ellenőrzéséhez használhatod a sqlite_master táblát, amely az adatbázis sémáját tartalmazza. A sqlite_master tábla tartalmazza az összes tábla, nézet, index és trigger információit. Az alábbiakban bemutatom, hogyan tudod PHP-ban leellenőrizni, hogy egy bizonyos tábla létezik-e.
1. Nyisd meg az adatbázist egy PDO objektum segítségével.
2. Futtass egy SQL lekérdezést a sqlite_master táblán.
3. Ellenőrizd, hogy a lekérdezés visszaad-e bármilyen eredményt.Íme egy példakód:
<?php
try {
// Kapcsolódás az adatbázishoz
$pdo = new PDO("sqlite:receptekdb.sqlite");
// A tábla neve, amit ellenőrizni szeretnél
$tableName = 'table_name';
// SQL lekérdezés a sqlite_master táblán
$stmt = $pdo->prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=:table");
$stmt->bindParam(':table', $tableName);
$stmt->execute();
// Ellenőrzés, hogy van-e eredmény
if ($stmt->fetch()) {
echo "A(z) '$tableName' tábla létezik.";
} else {
echo "A(z) '$tableName' tábla nem létezik.";
}
} catch (PDOException $e) {
// Hibakezelés
echo "Hiba: " . $e->getMessage();
}
?>Ebben a kódban a következő dolgok történnek:
1. Létrehozol egy új PDO objektumot, hogy kapcsolódj az SQLite adatbázishoz.
2. A sqlite_master táblából lekérdezed, hogy létezik-e a keresett tábla.
3. A lekérdezés eredménye alapján eldöntöd, hogy a tábla létezik-e vagy sem.ChatGPT volt, nem én...
-
-
biker
nagyúr
válasz
lanszelot #21721 üzenetére
Teljesen jó! Mármint tökéletes, hogy mindig a lehető legkevesebb információt küldd át, így biztosan senki nem fogja tudni, hogy mi van a $idTomb -ben? biztosan tömbb-e mert akkor lehet megszámolni az elemeit, és azt sem fogjuk érteni, miért számolod meg az elemeit, ha ettől függetlenül feldolgozod tömbként?
Az hogy amúgy se jó, más kérdés. -
urandom0
senior tag
válasz
lanszelot #21721 üzenetére
Öööö, szerintem ez így nem jó. Az implode a tömb elemeiből egy stringet képez. Ha pl. van egy ilyen tömböd, hogy [1, 2, 3, 4, 5], az implode ebből ezt csinálja: "12345".
Biztos, hogy erre van szükséged?
Kerüld a kevert nyelvű változónevek használatát! Ha lehet, maradj az angolnál, de ha mégis magyar nyelvű válltozókat szeretnék, akkor legyen minden magyar, tehát ne $tombLength hanem $tombHossz.
-
urandom0
senior tag
válasz
lanszelot #21719 üzenetére
SELECT- el szeretném kikérni, csak nem sikerül.
Azt a php oldalt szoktam olvasni, de egy árva szavacskát se értek onnan.Én most nem tudom elmagyarázni, de ezt a példát ha megnézegeted, szerintem érteni fogod:
$db = new SQLite3('auth.sqlite');
$sql = "SELECT user_id, username, opt_status FROM tbl_user";
$result = $db->query($sql);
$row = array();
$i = 0;
while($res = $result->fetchArray(SQLITE3_ASSOC)){
if(!isset($res['user_id'])) continue;
$row[$i]['user_id'] = $res['user_id'];
$row[$i]['username'] = $res['username'];
$row[$i]['opt_status'] = $res['opt_status'];
$i++;
}
print_r($row);Sqlite: azt írtátok az 1 file és ezért könnyű biztonsági mentést csinálni.
Ez mondjuk igaz.
2 teljesen készt már eldobtam.
Akkor ez lesz a 3ik...Ha egyszer megírtad SQLite-hoz, onnantól nem nehéz átírni MySQL-hez. Nem kell eldobnod az egészet.
Akár a Copilot is átírja neked 2 perc alatt, ha szépen kéred...Fogalmam sincs támogatja e. Azt hittem ez alapból benne van a php-ban. Mert erről volt szó.
Igen, igen, csak ugye engedélyezni kell az .ini fájlban, és ha alapból nincs engedélyezve, akkor te azt nem tudod megcsinálni az ingyenes tárhelyen.
-
urandom0
senior tag
válasz
lanszelot #21717 üzenetére
3. Első körben azt kéne megnézni, hogy bekerül-e egyáltalán az adatbázisba az adat. Nincs valami programod, DB Browser vagy valami, amivel meg tudod nyitni az SQLite fájlodat?
Egy SELECT * FROM receptek típusú lekérdezésnek is vissza kell adnia az összes adatot, ami a táblában van.
A hiba egyébként szerintem ott lesz, hogy nem fetcheled ki az adatokat a visszakapott változóból.
Mert pl. ez, amit korábban írtál, nem működik:
$receptekData->query("SELECT * FROM 'receptek'");
$id = $receptekData->lastInsertRowID();
echo ($id);Azért nem működik, mert a
lastInsertRowID()
a legutolsó INSERT-tel beszúrt adat Id-ját adja vissza (azt is csak addig, amíg él az adatbáziskapcsolat).
De ha SELECT-et használsz, akkor neked fetchelned kell a visszakapott adatokat, pl. a fetchArray() metódussal: https://www.php.net/manual/en/sqlite3result.fetcharray.phpOlyan mintha php alatt senki se kezelne sql-t.
Pedig nagyon sok PHP-s SQL tutorial van. De egyébként én MySQL-t ajánlottam neked, csak valaki áttérített SQLite-ra, de azt megnézted, hogy azon a tárhelyen, amin futtatni fogod az appod, lehet-e egyáltalán SQLite-ot használni? Mert a MySQL szinte mindenhol támogatott, SQLite-ban viszont egyáltalán nem vagyok biztos.
-
urandom0
senior tag
válasz
lanszelot #21710 üzenetére
1. Én ezeket a sorokat előre tenném, ugyanígy try..catch blokkba, csak egy másikba:
//file create or open if exist
$receptekData = new SQLite3("receptekdb.sqlite", SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READWRITE);
//error handling
$receptekData->enableExceptions(true);
$receptekData->query(
"CREATE TABLE IF NOT EXISTS 'receptek' (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
nev VARCHAR(100) NOT NULL
)"
);Mert ezek ugye kapcsolódnak az adatbázishoz, beállítják a kivételkezelést, és elkészítik a táblát, igazából ezeknek szerintem logikailag nincs közük ahhoz, amit te a feltételben vizsgálsz. Az egy másik történet.
Arról is nem is beszélve, hogy ha később szeretnél írni még egy INSERTET vagy bármit, akkor a $receptekData változódat, ami az SQLite kapcsolatot tárolja, nem fogod tudni elérni.2.
isset($_POST["submitNev"])
!empty($_POST["nev"])
A két feltételt én egybekötném ÉS-sel.
3. A lastInsertRowid-t én nem használnám. Egyetlen egyszer próbáltam használni PDO-nál MYSQL adatbázisnál (PDO::lastInsertId), akkor sem jött össze.
De ha használod, akkor olvasd el ezen az oldalon az első néhány commentet, ott azt írják, hogy ha tranzakciókat használsz (te pedig azokat használsz), akkor a COMMIT elé kell tenni a lastInsertRowid-t. Tehát próbáld meg így:$receptekData->exec('BEGIN');
$receptekData->query("INSERT INTO 'receptek' (nev) VALUES ('$nev')");
$id = $receptekData->lastInsertRowid(); //ennek az értéke nulla, pedig nem annyi
$receptekData->exec('COMMIT');"3.1.1 ott írják az sqlite oldalán a táblázatban."
Az csak egy example, egy példa
Az SQL és az SQLite saját SQL implementációja közti megfeleltetésekről.
De ott is írják, hogy "Note that numeric arguments in parentheses that following the type name (ex: "VARCHAR(255)") are ignored by SQLite - SQLite does not impose any length restrictions (other than the large global SQLITE_MAX_LENGTH limit) on the length of strings, BLOBs or numeric values."----------
Ha túl hosszú a kódod, szedd szét logikailag különálló fájlokra.
-
urandom0
senior tag
válasz
lanszelot #21707 üzenetére
Hosszú kódot fel tudsz tenni mondjuk Pastebin-re, és annak a linkjét be tudod ide rakni. Ha nem is kell feltétlenül az egész, legalább a hibás függvényt mutasd meg.
Ugyanis null az id érték mindenhol, nem az amit az if-en belül kap.
Tehát nem jön ki az érték.Az ilyen leírások alapján nem nagyon értjük, mint szeretnél pontosan, legalábbis én nem.
-
urandom0
senior tag
válasz
lanszelot #21706 üzenetére
Hol írják a VARCHAR-t 255-nek? Korábban belinkeltem neked az SQLite doksiját: https://www.sqlite.org/limits.html
Nem nézted meg... pedig ott van benne:Maximum length of a string or BLOB
The maximum number of bytes in a string or BLOB in SQLite is defined by the preprocessor macro SQLITE_MAX_LENGTH. The default value of this macro is 1 billion (1 thousand million or 1,000,000,000). -
urandom0
senior tag
válasz
lanszelot #21702 üzenetére
Annak, hogy
empty($_POST['toltelek_mertekegyseg'])
, igaznak kell lennie abban az esetben, ha value="".Tehát ha írsz valami ilyesmit:
if (empty($_POST['toltelek_mertekegyseg'])) {
echo 'ez igaz';
}Akkor ki kell írja, hogy ez igaz. Itt van a PHP igazságtáblázat, ebben látszik, hogy az üres string ("") empty-vel vizsgálva igazat ad vissza, tehát empty("") == true.
2. Mutasd a kódod, mit írtál pontosan!
-
urandom0
senior tag
válasz
lanszelot #21699 üzenetére
2.
If-nél és try-nél is van scope.
try {
$id = $receptekData->lastInsertRowid();
// $id elérhető itt
} catch (Exception $e) {
// $id itt nem elérhető
}
// $id itt nem elérhetőDefiniáld az $id-t a try előtt:
$id = null; // Változó előzetes deklarálása
try {
$id = $receptekData->lastInsertRowid();
} catch (Exception $e) {
// Hibakezelés
}
// $id itt már elérhető lesz -
biker
nagyúr
válasz
lanszelot #21699 üzenetére
1: helyesen value="" és akkor üres lesz
2: a last insert id akkor ad vissza valamit ha abban a futásban írtál bele, tudtommal, ergo amikor van egy insert egy auto incrementes táblába, akkor insert után kiadja a last insert id-t. de nem biztos hogy ez a baj, ennyiből nem tudok kiindulni
-
urandom0
senior tag
válasz
lanszelot #21693 üzenetére
De ezt írtam. hogy ezekkel semmire se megyek, mert php-ban máshogy kell.
Hogyhogy máshogy kell? Nem kell máshogy.
Itt ez a sor:
$db->query('CREATE TABLE IF NOT EXISTS user_table (name, email, UNIQUE (email))');
Egyszerűen csak be kell írni a két aposztróf közé az SQL lekérdezést, és kész.
vagy ettől is alapabb: data tipusok mekkora értéket tudnak max felvenni?
Beírod a Google-be, hogy "sqlite varchar maximum length", és meg fogod találni: https://www.sqlite.org/limits.html:
The maximum number of bytes in a string or BLOB in SQLite is defined by the preprocessor macro SQLITE_MAX_LENGTH. The default value of this macro is 1 billion (1 thousand million or 1,000,000,000). You can raise or lower this value at compile-time using a command-line option like this:
Sqlite php valami ahol megtudhatom, hogy lehet e "like" -t használni vagy az csak mysqli.
Megint csak: beírod Google-be, hogy sqlite like, és ott lesz az első oldalon: https://www.sqlite.org/lang_expr.html
The LIKE operator does a pattern matching comparison.
De egyébként marha egyszerű, kipróbálod, hogy lehet-e, és megtudod. Ha hiba van, úgyis kapsz visszajelzést.
És hogy rakjak idézőjelet, vagy se? És millió kérdésem van amit másként mutat az egyik mint a másik.
Hát igen, most megint előjön az, hogy nem ismered a nyelv szabályait, nem tudod, mikor kell idézőjel, a különféle idézőjelek miben különböznek, stb. De egyébként ha az egyik tutorial használ idézőjeleket, a másik nem, akkor valószínűleg mindkét megoldás helyes.
Pl a hiba kezelést te úgy írtad, de van ahol $db->enableExceptions(true);
És elolvastad, hogy mit csinál ez a függvény?
Ezt: "Controls whether the SQLite3 instance will throw exceptions or warnings on error."Szerintem ez számodra teljesen lényegtelen. Ha majd eljutsz odáig, hogy tudsz kivételeket kezelni, akkor már tudni fogod, hogy be akarod-e kapcsolni vagy sem.
Kellene egy rendes leírás,
Ennél rendesebbet nem fogsz találni.
-
biker
nagyúr
válasz
lanszelot #21695 üzenetére
"Itt ez van, ott az." - ez azt jelenti, hogy nem tudok eligazodni melyik a valós
3 leírás 3 féle képpen mutatja. Írtam példákat is."Mert nincs olyan hogy ÍGY KELL, lehet mysqli-vel, lehet PDO-val (ezt javaslom) és elavult mysql_query-vel is, te döntöd el. Azt is te döntöd el, hogy inline megírod a queryt, vagy mint Mr. Y írta paraméterezve
"Pl van idézőjel, nincs idézőjel. Na most kell? Nem kell?"
Ha kell, de nem raksz, észre fogod venni, mert fatal error lesz a vége. Ha üldögélsz és mormogsz, hogy kell vagy nem kell, akkor nem haladsz előre
"De ott alig van valami amit használni tudok. Pl insert sincs, se semmi"
A te linkeden, ez az első példakód! NINCS INSERT??????
Csak egy tábla készítés és egy sor beszúrása a kód, semmi más!
Ezért mondjuk, hogy OLVASD EL A VÁLASZT és OLVASD EL A LEÍRÁSTÉs mielőtt megint leírod, hogy az nem jó, olvasd el megint, és gondold át megint
<?php
/**
* Simple example of extending the SQLite3 class and changing the __construct
* parameters, then using the open method to initialize the DB.
*/
class MyDB extends SQLite3
{
function __construct()
{
$this->open('mysqlitedb.db');
}
}
$db = new MyDB();
$db->exec('CREATE TABLE foo (bar STRING)');
$db->exec("INSERT INTO foo (bar) VALUES ('This is a test')");
$result = $db->query('SELECT bar FROM foo');
var_dump($result->fetchArray());
?> -
válasz
lanszelot #21693 üzenetére
Kommentelés előtt olvastad egyáltalán az előtted legutóbbi kommentet? Mert a leírásod alapján úgy gondolom, nem. De akkor elmagyarázom szájbarágósan, hogyan megy ez PHP-val, ha már ebben a topikban vagyunk...
1) Kell egy adatbázis.
2) Csatlakozz hozzá:<?php
$conn = new mysqli('dbName', 'userName', 'Password', 'dataBase');
?>
Azért 4 paraméteres, mert feltételezem, nem akarsz egyszerre több adatbázissal operálni.3) Fogalmazd meg, milyen lekérdezést szeretnél intézni az adatbázisod felé:
...
$sql = "SELECT `name` FROM `receptek`";
...
Látod? Ez rendes SQL, csak belerejtettük egy PHP változóba. A `` karaktereket pedig használja az SQL is névtér-megkülönböztetésre, úgyhogy ezen ne akadj fent.4) Küldd el a lekérdezésedet az adatbázisnak:
...
$result = $conn -> query($sql); // Vársz visszatérő tartalmat
if ($conn -> query($sql)) {...} // true / false visszatérő érték esetére
...Ha ezek alapján ha sem tudsz elindulni...
-
válasz
lanszelot #21686 üzenetére
Az, hogy megírtam: Ugyan úgy kell, nem azt jelenti, hogy egy az egyben natívan, hiszen PHP nyelvről beszélünk.
Először építs ki egy kapcsolatot. Utána egy változóba helyezed be a kívánt lekérdezést. Majd ezt követően elindítod az sql felé a kérésedet a változó adataival.
De ez a lépés elkerülhető, a közvetlen kérésbe is bepötyögheted, amit akarsz.Mit gondoltál? Ha leírod a PHP-nak azt, amit közölni akarsz majd az adatbázissal, akkor a PHP motorja (esetedben Apache) majd kiszopja a kisujjából, hogy pontosan mit kezdjen a string-eddel? Meg kell neki mondani
Talán nem bánnának veled enyire
magas lóról lekezelően
, ha feldolgoznád az általunk adott információk akár csak 10%-át ahelyett, hogy folyamatosan értetlenkedsz.
Lehet, mi eljutottunk arra a szintre, ahol egy ilyen projekt egy fél délelőttöt sem emésztene fel. Igen, voltunk mi is kezdők. De ha csak értetlenkedtünk volna meg panaszkodunk másoknak úgy, hogy azt már nem mondjuk el, mi a probléma, sosem jutottunk volna el oda, ahol ma tartunk.Lassíts. Dolgozd fel a kapott információkat. Kommentelj bölcsen, ne ingerből. És pontosítsd, hogy mit szeretnél / mi a problémád.
-
urandom0
senior tag
válasz
lanszelot #21688 üzenetére
Erre írtam, hogy az nem működik php-ban.
Jajj istenem, dehogynem működik, csak nem látod át!
Hiszen ti írtátok. Ti állítottátok, hogy így kell.
Aki ezt írta, nem egészen erre gondolt, itt félreértés történt.
Azt is elmondtam, hogy amit találtam, az jó, de kevés.
Nincs benne se módosítás, se törlés.Azért írod ezt, mert nem látod át ennek az egésznek a felépítését, elmagyarázni meg nagyon nehéz.
Ennyit bökdöstök, de ezalatt be tudtatok volna dobni egy linket, hogy tessék ez a php sqlite tutorial, itt szépen el van magyarázva úgy hogy a kezdők is megértik.
De hát találtál te tutorialt, az alapján, meg a W3C-s tutorial alapján azért már tudni kellene megcsinálni.
Nade linkelek neked tutorialt, tessék:
https://brainbell.com/php/sqlite.html
https://riptutorial.com/php/example/27461/sqlite3-quickstart-tutorial
https://www.scriptol.com/sql/sqlite-getting-started.phpDe azt sem tudom, hogy igazából mi nem megy, mert nagyon ritkán írsz konkrétumot, így nehéz segíteni.
-
biker
nagyúr
válasz
lanszelot #21688 üzenetére
Fel akarsz bosszantani...
Emlékeim szerint én mondtam meg, miért fut a youtube tutorialban a kód és miért nem nálad, de mindegy. Biztos magas ló vagyok.
A phpini-s gondod meg annyi volt, hogy félre volt konfigolva az apache, ezt honnan találjuk ki?A tutorialok mind tökéletesek, hidd el. És ha valaki azt mondja segítségkérésnek, hogy "nem megy szar az egész" azon NEM LEHET SEGÍTENI!
Mi nem megy? Mi a kód? Mi a hibaüzenet? Mik a kapcsolati adataid? stb stb stb
Ha nem hagyod hogy segítsünk, akkor nem tudunk segíteni, akkor duzzogj magadban.De ha azt szeretnéd, eskü belépek a gépedre Teamviewerrel, és megoldom. És végignézheted.
Szerintem hibák...
1: ha te ezt beírod a file elejére és minden alkalommal lefuttatod,
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Create database
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
echo "Database created successfully";
} else {
echo "Error creating database: " . $conn->error;
}
$conn->close();
?>Na az lehet hiba, mert ez egyszer létrehozza a myDB nevű táblát.
2: már eleve megvan az adatbázis ha nem xampban használod, shared hostingon nincs is jogod adatbázist létrehozni, csak táblákat, így neked KELL a saját DB neved használn
Ugyanígy EGYSZER kell a create table, hogy csinálj egy táblát, pl id, datum, recept
Ekkor már tudsz bepakolászni recepteket, aminek van ID-je, dátuma, és leírása
ezt ki tudod listázni, módosítani meg ID alapján tudod, UPDATE myDB set leiras = $_POST["ujleiras"] WHERE id=$_POST["id"];
na ebben legalánbb hagytam egy nagy biztonsági rést is, hogy megtanuld azt is, hogyan hekkelik szarrá a táblád egy perc alatt.De mégegyszer: minden eszközt megmutattunk, minden tutorial jó amit megtaláltál, el kell olvasni, meg kell érteni, és be kell helyettesíteni ezt a helyesre
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)";$sql = "CREATE TABLE receptek (
id INT AUTO_INCREMENT PRIMARY KEY,
datum timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,,
recept LONGTEXT
) DEFAULT CHARSET=utf8"; -
urandom0
senior tag
válasz
lanszelot #21686 üzenetére
Ember, az általad megtalált quickstart 8. sorában ott van a megoldás arra, amin most értetlenkedsz:
$db = new SQLite3('analytics.sqlite', SQLITE3_OPEN_CREATE | SQLITE3_OPEN_READWRITE);
Oda van írva fölé, hogy mit csinál ez a sor:
// Create a new database, if the file doesn't exist and open it for reading/writing.Erre te beírod két php tag közé a SQL kódot....
Ugyanott van egy példa tábla létrehozására is:
$db->query('CREATE TABLE IF NOT EXISTS "visits" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"user_id" INTEGER,
"url" VARCHAR,
"time" DATETIME
)');Most ez alapján komolyan nem tudsz önállóan odáig eljutni, hogy módosíts és törölj adatokat?
Ott van minden az általad "semmire se jó"-nak nevezett W3C-s tutorialban, ott van UPDATE, és ott van a DELETE... -
-
urandom0
senior tag
válasz
lanszelot #21679 üzenetére
Valaszoltam is rá, hogy azt már előtte átnéztem, de semmit sem er, mert nem php.
Persze, hogy nem PHP, hanem SQL, mert neked a törlést és a módosítást SQL-ben kell megírnod. Ahhoz pedig, hogy az SQL-t PHP alól tudd kezelni, ez a quickstart, amit linkeltél, pont jó is.
Azért osztottam meg az előző linket, ha barki keresné az sql php -t akkor az nagyon jó. Viszont ezzel ki is fújt.
Nincs benne a törlés, módosítás stbHa a W3C-s tutorialt legalább végigolvastad volna, akkor már megtaláltad volna a törlést és a módosítást, ugyanis abban mindkettő benne van
Ne várd azt, hogy valaki a szádba rakja a kész megoldásokat, a programozás nem erről szól. Ha programozol, akkor nagyon sok dokumentációt kell olvasni, tudni kell célirányosan keresni, észre kell venni az összefüggéseket, át kell látni az általad használt technológiákat, ismerni kell a lehetőségeiket, korlátaikat...
Egyébként miért nem használod valamelyik AI-t? ChatGPT, Copilot, Gemini, vagy a groq.com-on a Llama, nyugodtan lehet kérdezni tőlük!
-
urandom0
senior tag
válasz
lanszelot #21665 üzenetére
Na nézzük meg, mi a baj ezzel a kóddal:
<h1>Hozzávalók</h1>
<table class="tablazat">
<thead>
<th>Tészta</th>
</thead>
<tbody>
<?php
//print_r($data);
print_r($data[0]->hozzávalók->tészta[0]->hozzávaló);
?>
</tbody>Ha ilyen van, hogy nem az jelenik, aminek szerinted meg kellene jelennie, akkor nyomd meg az F12-es billentyűt a böngészőben, és a vizsgálóval nézd meg, milyen HTML oldalt generál a böngésző abból, amit te beírtál.
Te valami ilyesmit szerettél volna megjeleníteni:
<h1>Hozzávalók</h1>
<table class="tablazat">
<thead>
<tr>
<th>Tészta</th>
</tr>
</thead>
<tbody>
<tr>
<td>
Tojás
</td>
</tr>
</tbody>
</table>Ehhez képest a kódodból ezt generálta a böngésző:
Látod a különbséget a két kód között?
Te simán beleraktad a <tbody>-ba a PHP-t, miközben ez tilos. A <tbody> elem csak és kizárólag <tr> elemet tartalmazhat. (Permitted content: Zero or more <tr> elements.).Ha nem így csinálod, a böngésző simán kidobja a táblázatból a PHP kimenetét, és így teljesen máshogy jelenik meg, mint ahogy te elképzelted.
Egyébként a <thead>-be is kötelező a <tr>, de a böngésző ezt kijavította, a Tészta ezért nem csúszott el.Tehát a HTML kódod helyesen:
<h1>Hozzávalók</h1>
<table class="tablazat">
<thead>
<tr>
<th>Tészta</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<?php
print_r($data[0]->hozzávalók->tészta[0]->hozzávaló);
?>
</td>
</tr>
</tbody>
</table>Ezért kell a JS , azzal nincs ilyen gond.
A PHP-vel sincsen semmi gond, a gond azzal van, hogy csak felületesen ismered a HTML-t, és nem jársz utána, nem keresel utána. A PHP-vel szintén ugyanez a helyzet, csak nagyon felületesen ismered, és ráfogod, hogy sok hibája van, de valójában a te tudásod hiányos.
-
urandom0
senior tag
válasz
lanszelot #21670 üzenetére
Ki van kommentelve, hogy írhatna ki bármit? Az csak komment.
Nyilván úgy értettem, hogy mit ír ki, ha nincs kikommentelve?
A $data változó tartalma érdekelne, hogy PONTOSAN milyen a felépítése, hogy néz ki.A print_r mellett egyébként vannak olyan függvények, mint a var_dump(), a var_export() és a var_representation(), ezekkel ki lehet egy-egy változó tartalmát.
-
lanszelot
addikt
válasz
lanszelot #21662 üzenetére
Sikerült, meg van a megoldás:
[link]
Amikor az apache-t konfiguráltam elgépeltem egy karaktert a httpd.conf fileban.
Javítottam, és már működik is.
A fura az, hogy működött.Úgy lett meg, hogy az apache beállításában van a gond, hogy terminal-ban php -i parancs mutatta a php ini -t hogy be van töltve.
De localhost -ban már nem volt.Nagyon szépen köszönöm a segítséget, és türelmet mindenkinek
-
urandom0
senior tag
válasz
lanszelot #21668 üzenetére
Kezdődik azzal hogy biztonsági rést nyit. Ki is írja telepítésnél.
Hát én most feltelepítettem a XAMPP-ot, de ilyen kiírást nem láttam.
Az igaz, hogy ha olyan programot futtatsz a gépeden, ami portot nyit és hallgatózik rajta, akkor az biztonsági rést is jelenthet. De ez ugyanúgy igaz arra az Apache-ra, amit te telepítettél és te futtatsz, mint a XAMPP-ra.
Egyébként ha tűzfalon beállítod, hogy külső hálózatot ne tudjon elérni a program, akkor nem jelent veszélyt.a kikomentezett semmit
Semmit nem ír ki? Akkor valószínűleg nincs a $data változóban semmi, vagy talán nem is létezik. Hogy olvasod be a JSON fájlt?
A c:\php mappád tartalmát le tudod screenshotolni? Illetve az Apache konfigurácós fájlának tartalmát is feltölthetnéd valahova. Vagy írd le, honnan töltötted le és hogy telepítetted.
-
urandom0
senior tag
válasz
lanszelot #21665 üzenetére
Php -vel nem lehet új file-t létrehozni.
Na, ilyen butaságot ne állítsunk már kérem, mert mentem a kardomba dőlök!
Lehet fájlt létrehozni az fopen() függvénnyel. Lehet fájlt létrehozni a file_put_contents() függvénnyel. Lehet fájlt létrehozni a touch() függvénnyel. Lehet fájlt létrehozni az SplFileObject osztállyal. Lehet fájlt létrehozni a tempnam() függvénnyel. Lehet fájlt létrehozni a fputcsv() függvénnyel. Nem akarom tovább sorolni...Ez a kód miért fut rosszul?
Nem fut rosszul, pontosan azt csinálja, amit beírtál neki. Csak nem azt írtad be, amit szerettél volna.
Honnan jön a $data változó? Mi van benne pontosan? Látom, van ott egy kikomentezettprint_r($data);
, az mit ír ki?Azt hittem onnantól él az ini. Ezt írta a php dokumentum.
Ezt jól hitted, ez így is van. Akkor valami más probléma van nálad. Nem akarsz tényleg XAMPP-ot használni? Az pont ilyen célokra való, mint amire neked kell.
-
válasz
lanszelot #21665 üzenetére
USER ERROR!
Mi az, hogy PHP-vel nem lehet fájlokat létrehozni? Itt látszik meg igazán, hogy nem a programozó nyelvvel van a probléma, hanem a programozóval.
Probalunk segíteni, megmutatni a helyes irányt de neked semmi nem felel meg. Mit vársz el? Írjuk meg helyetted?! -
urandom0
senior tag
válasz
lanszelot #21660 üzenetére
Azt hittem többet tud a php, illetve az sql.
Nem akarok kötözködni, tényleg, de szerintem itt te vagy az, aki nem tud eleget, és csak neked vannak hiányosságaid.
Tehát kellene a json, de ahhoz meg kellene a python(nem nehéz, de jó pár hetembe kerülne).
Miért kellene a Python?? Dehogy kell, PHP-vel lehet kezelni a JSON-t.
No meg a php hülyeségei ellen a JS. Ok, azt tudom, de ez így már túl nagy.
Nem, nem a PHP hülyeségei ellen kellen a JS. A JS leginkább csak akkor kell neked, ha a megjelenést (a frontendet) kicsit dinamikusabbá, pörgősebbé akarod tenni.
Sql miatt fog elvérezni ez a project.
Én úgy érzem, hogy te túl gyorsan akarsz haladni. Még csak most tanulod a PHP-t, az alapokkal sem igazán vagy tisztában, de már profi receptgyűjteményt akarsz csinálni. Kicsit lassíts. Szerintem még nem is látod át igazán, hogy mi a szerver oldal, mi a kliens oldal, ki kivel van, mi hova megy, stb.
Csinálj egyszerűbb projekteket. Írj mondjuk egy néhány mezőből álló formot, ami nem csinál mást, mint bekéri pár adatot a felhasználótól, és elmenti őket adatbázisba, vagy ha az még nem megy, akkor fájlba.
Utána tegyél bele sessiont, használd a $_SESSION tömböt adatok tárolására.
Aztán utána lehet olyat, hogy adatbázisból írsz ki dolgokat mezőkbe, a felhasználó megváltoztathatja, és te visszatöltöd az adatbázisba. Ebből ki lehet alakítani egy profilkezelést mondjuk.
Aztán írhatsz olyan felületet, ahol lehet hozzászólást írni. Azt elmented adatbázisba, és megjeleníted... vagy valami ilyesmit. Lépésről lépésre, lassan haladj, tapasztald ki, mi hogyan működik. -
urandom0
senior tag
válasz
lanszelot #21659 üzenetére
extension_dir = "ext"
Az ext helyére írd be azt a mappát, ahol a php_sqlite3.dll fájl van. Valószínűleg nálad a c:\php\ext lesz az. És vedd ki a sor elejéről a pontosvesszőt.
És a ;extension=sqlite3 sor előtt se legyen pontosvessző.sqlite elérési útja : C\:sqlite
Ha töltöttél le bármilyen SQLite-ot, azt nyugodtan töröld ki. A PHP tartalmazza az SQLite-hoz szükséges mindent, nem kell semmit sem külön letölteni.
-
lanszelot
addikt
válasz
lanszelot #21650 üzenetére
A tervem nagyon sok sebből vérzik.
Azt hittem többet tud a php, illetve az sql.Kezd a terv egy toldozott-foltozott tervvé válni, hogy áthidaljam a rengeteg hiányosságot.
Csak sql-el és php -valnagy katyvaszt kellene kibogoznom.
Tehát kellene a json, de ahhoz meg kellene a python(nem nehéz, de jó pár hetembe kerülne).
No meg a php hülyeségei ellen a JS. Ok, azt tudom, de ez így már túl nagy.Kénytelen vagyok a hatalam sql káoszt valahogy megoldani.
Tehát html, css, js, php, sql - talán elég. Ebből az sql-t egyáltalán nem tudom még, és sehol semmi róla. A többivel sztem nem lenne gond.
Sql miatt fog elvérezni ez a project. -
urandom0
senior tag
válasz
lanszelot #21651 üzenetére
De miért Youtube-on meg random oldalakon nézelődsz? Ott a php.net hivatalos doksija. Nézd meg, hogy mit ír!
Windows users must enable php_sqlite3.dll in order to use this extension. This DLL is included with Windows distributions of PHP.
Azaz, nem kell letölteni semmit sehonnan sem.
Én most kipróbáltam, két dolgot kellett csak átírnom a php.ini-ben. Azextension=sqlite3
sor elől kivettem a pontosvesszőt (látom, ezt te is megcsináltad), utána ráprobáltam, de kiírta, hogy nem találja a megadott modult (és hogy ő a C:\php\ext\sqlite mappában kereste). Utána megpróbáltam átírni azsqlite3.extension_dir
beállítást átírni, de ez sem segített, továbbra is azt írta ki, hogy a megadott modul nem található.
Aztán megnéztem, hogy a php_sqlite3.dll, amit a hivatalos dokumentáció ír, hol van. Ez nálam aD:\php8.3.2\ext
mappában van.
Aztán rákerestem a php.ini-ben arra, hogy "extension", és találtam egy ilyen beállítást, hogy extension_dir. Ide beírtam, hogy "D:\php8.3.2\ext", és onnantól fogva megy az SQLite, ennyi.Te is írd át a php.ini-ben az extension_dir változódat arra a mappára, ahol vannak az extensionök, és menni fog.
Tanulj meg kicsit célirányosabban keresni, és először mindig a hivatalos dokumentációt nézegesd, ne Youtube-ról meg random oldalakról szedd az infót! -
sztanozs
veterán
válasz
lanszelot #21651 üzenetére
MI a a php verzio?
As of PHP 7.4.0 » libsqlite ≥ 3.7.4 is required. Formerly, the bundled libsqlite could have been used instead.plusz:
Note: Additional setup on Windows as of PHP 7.4.0
In order for this extension to work, there are DLL files that must be available to the Windows system PATH. For information on how to do this, see the FAQ entitled "How do I add my PHP directory to the PATH on Windows". Although copying DLL files from the PHP folder into the Windows system directory also works (because the system directory is by default in the system's PATH), this is not recommended. This extension requires the following files to be in the PATH: libsqlite3.dll. -
lanszelot
addikt
válasz
lanszelot #21650 üzenetére
sqlite-val teljesen el vagyok veszve.
Sehol semmi róla.php ini-ben kivettem a ;-
sqlite3
pdo_sqlite
pdo_msql
mysqli
pgsql
gd
file-ok elől
"Fatal error: Uncaught Error: Class "SQLite3" not found in....."
mindig ezt kapom.
[link] ezt megcsináltam, nem működik
[link] ezt is megcsináltam ez se működik
Mindig ugyanaz a hiba...
Feltöltöttem szerverre, ott működik, tehát nálam van a hibawindows10 -en
-
urandom0
senior tag
válasz
lanszelot #21643 üzenetére
De, használható. Miből szűrted le, hogy nem használható? Én csak azt írtam, hogy nem a legalkalmasabb, meg hogy elég bonyolult.
Maradhatsz a JSON-nál, erre a célra végső soron az is megfelel. Csak tisztában kell lenni a hátrányaival.
A keresés, szűrés mennyire hatékony JSON esetében? Hogy oldod meg egyáltalán, berántod az egészet a memóriába, és átalakítod valamilyen PHP-s formátumra (egymásba ágyazott asszociatív tömbök)? Ha nagyra nő a fájlod, nem fogsz-e belefutni a PHP-nak kiosztott memória- vagy futásidő korlátba (amin ugye nem tudsz változtatni, mivel nem saját szerverről fut az app)? Vagy ha esetleg ketten akarnátok egy időben használni az appot, akkor valamilyen mandatory lock megoldás kell, hogy ne akarjatok egy időben menteni.
Vagy ha leáll a szerver épp akkor, amikor mented a JSON fájlod, akkor mi történik? Marad a lemezen egy csonkolt, hibás JSON fájl...?
Tudod-e biztosítani, vagy egyáltalán kell-e biztosítani a szigorú típusosságot, hogy pl. szám mezőbe ne kerüljön szöveg? Aztán meg csodálkozás van, ha össze akarod adni az 1-et és az "1"-et, és nem az jön ki, hogy 2 dl tej kell a sütibe, hanem 11 dl -
-
urandom0
senior tag
válasz
lanszelot #21641 üzenetére
De, kiderül, csak kissé felületesen állsz hozzá. Ha átrágod magad a tutorialon, kipróbálod a benne leírtakat, eljutsz legalább a join-ig, akkor már lesz elképzelésed róla, hogy kell felépíteni egy receptes appot.
Egyébként nem lehet több mélységű táblát csinálni.Most így hirtelen azt mondanám, kell egy tábla az összetevőknek, ebben lennének olyanok, mint a tojás, a tej, a vaj, stb. Kell egy tábla az mennyiségi egységeknek (db, dkg, ek, dl, stb.), egy tábla az olyan entitásoknak, mint a tészta, öntet, díszités, stb., és egy a recepteknek.
A receptek táblában id alapján lehetne hivatkoznni a tésztára, öntetre, díszítésre, ugye ezek lennének egy külön táblában, és azokhoz lennének hivatkozva az összetevők. Az összetevőknél a mennyiség számértékként szerepelhetne (vagy szövegesen, mert előfordulhat olyan, hogy "annyit cukrot tegyünk bele, amíg elég édes nem lesz", és akkor ez már nem egy egzakt mennyiség, amit lehet számszerűsíteni, hanem ez szöveg), a mennyiségi egység pedig hivatkozva a mennyiségi egység táblából. Az elkészítés, előkészítés pedig a receptek tábla egy-egy szöveges mezője.Nehéz jól összerakni egy ilyet, és ezért is írtam, hogy nem az SQL a legalkalmasabb erre.
Illetve ennél, amit leírtam, lehet egyszerűbben is, pl. a mennyiség egységek nem külön táblából, hanem "1dkg cukor" aztán kész. -
urandom0
senior tag
válasz
lanszelot #21639 üzenetére
Én egyet se találok. Mindegyik annyi, hogy username, pasword, registration. És itt megáll.
Ha ezeket megcsinálod, és megérted a logikáját, akkor már bonyolultabb táblákat is össze tudsz rakni.
A W3C SQL tutorialja egész jó, és nem hiszem, hogy abban el fogsz veszni. És bőven benne van minden, ami neked kell.
De ha neked ez a JSON jobban fekszik, akkor nézhetsz valamilyen NoSQL tutorialt PHP-hoz, csak abból fele annyit nem fogsz találni, mint MySQL-ből.
Azt aláírom, hogy ilyen jellegű receptek tárolásához nem az SQL a legalkalmasabb választás, de meg lehet benne csinálni. -
urandom0
senior tag
válasz
lanszelot #21636 üzenetére
Azért azt nem hiszem, hogy PHP-s SQL videotutorialból ne lenne annyi, mint égen a csillag
Ha csak annyit be Youtube-ra, hogy "php sql", akkor is kidob jópárat...A XAMPP miért kizárt? Kezdő szinten szerintem teljesen jó, még egyetemeken is használják. A XAMPP feluete ugye így néz ki: https://phpgurukul.com/wp-content/uploads/2023/02/xampp-control-panel-1.png
Ha zöld a MySQL, akkor fut, és onnantól már csak csatlakozni kell hozzá. Ez egy parancs PHP-ban:
$mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
És utána lehet query-t indítani:
$result = $mysqli->query("SELECT Name, CountryCode FROM City ORDER BY ID LIMIT 3");
És utána ki lehet szedni a végeredményt:
$rows = $result->fetch_all(MYSQLI_ASSOC);
Ha ez megvan, akkor már van egy működő lekérdezésed (persze, az adatokat előtte fel kell vinni, de arra is lehet írni lekérdezést, illetve ott a Workbench, HeidiSQL, PhpMyAdmin, stb.).
Az más kérdés, hogy ez így messze nem tökéletes, mert több sebből is vérzik. De az alapjai akkor is ezek.
Aztán persze meg kell ismerni legalább alapszinten az SQL-t, és el kell gondolkodni azon, hogy inkább prepared statement-eket használjunk, mysqli helyett esetleg PDO-t, aztán lehet tovább menni ha akarsz, valamilyen ORM irányába (Doctrine, Eloquent), stb.Ha csak hobbi szinten érdekel, akkor szerintem olyan mélyen nem kell belemenni, inkább arra kell figyelni, hogy a karakterkódolást mindig állítsd be, és a biztonságra kell törekedni (escapelés, stb.).
-
-
urandom0
senior tag
válasz
lanszelot #21632 üzenetére
Hello
Abban tárolod az adatokat, amiben akarod. Ha közvetlenül valamilyen fájlban szeretnéd tárolni őket, azt úgy hívják, flat file database. Erre számos megoldás van, a JSON fájl is egy a sok közül, de van XML alapú, van CSV alapú, van bináris (Berkeley DB), stb.
Én viszont a jó öreg SQL híve vagyok, mert ez ACID-képes, mert könnyű benne keresni, könnyű rendezni, könnyen lehet szelektálni, stb., és mert mindenféle varázslás nélkül, natívan támogatja a PHP.
Az adatvesztés ellen pedig szintén a jó öreg napi szintű mentést javaslom. Nem kell nagy dologra gondolni, akár PHP-ban is írhatsz egy scriptet, ami vagy cronnal időzítve, vagy akár kézzel indítva, naponta lementegeti az adatbázis tartalmát.
-
-
pch
senior tag
válasz
lanszelot #21627 üzenetére
https://www.php.net/manual/en/function.header.php
Mondom, hogy engedd el ezt az oktatóanyagot.
Multkor is faszság volt benne...Kimenet:
Először is meg kellene érteni hogy is működik az egész html + php (javascript) kombó.
Mi mit csinál, hogy kommunikál a php az apache-val illetve hogy jön a képbe a javascript.
Mi hol fut milyen kimeneteket generálhat. Mi az a fejléc, milyen értékei lehetnek milyen paraméterei vannak.
Szóval mint mondtam multkor is az alapok nagyon hiányosak.
Így csak próbálgatod, de nem érted miért működik. -
urandom0
senior tag
válasz
lanszelot #21627 üzenetére
Mi az hogy kimenet?
Ha készítesz egy HTML dokumentumot, ami abban van, az a kimenet. Ha statikus HTML van benne, akkor az, ha PHP kód, akkor a PHP által generált végeredmény.
Plusz a HTTP fejlécek.Hova megy ki?
Abba az irányba, ahonnan a HTTP kérés jött. Általában egy böngészőtől jön a HTTP lekérés, tehát amit te a böngészőben látsz, az a kimenet.
Mi küldi ki?
A webszerver (ami a te esetedben az Apache).
-
urandom0
senior tag
válasz
lanszelot #21622 üzenetére
amúgy annak mi értelme, hogy kiírja a username-t és a passwordöt, és azonnal átirányít?
Ez a kérdésem hülyeség volt, utólag már láttam, mindegy...
Nincs fent valahol az egész tutorial, Githubon vagy bárhol?
Én nem hiszem el, hogy be lenne kapcsolva nála az output buffering. Egy tutorial videóban nagyon nem kéne ezt bekapcsolgatni, lévén megváltoztatja a kód működését, s tanuló meg csak néz, ha neki nem működik az, ami a videóban igen.
-
biker
nagyúr
válasz
lanszelot #21622 üzenetére
elég gyatra oktató anyag, nagyjából felsejlik előttem a php 3.x időszaka belőle, olyan 2003 környéke talán
A session vs header átirányításos bug megoldása szerintem a xampp konfigban lehet, esetleg fixen be van kapcsolva az output buffering [link] ekkor nem ír a kimenetre amíg kész nincs az oldal, így működhet az oldal közepébe beszúrt header
ha ezt akarod mindenképp akkor html-ben kell a redirect, pl
<meta http-equiv="Refresh" content="0; url='home.php'" />
""mert ott kimenet van" - mi a kimenet? Ezt nem értem mi az hogy kimenet."
minden ami kimenetként megjelenik. Egy szóköz sem lehet, mert ekkor már elküldi a fejlécet, és ezután mégegyszer nem lehet fejlécet küldeni, sem módosítani, csak új lapbetöltéssel. -
-
pelyib
tag
válasz
lanszelot #21615 üzenetére
en arra tippelnek, h az error_reporting at van allitva nala, de nem neztem vegig mind a 4 orat (nem vagyok biztos, h azzal el tudja rejteni ezt a hibat)
template engine => https://phptherightway.com/#templating (de ugy altalaban az egesz oldalt ajanlom atolvasasra)
frameworks => https://phptherightway.com/#frameworks
pl: Laravel, Slim, Symfony -
urandom0
senior tag
válasz
lanszelot #21615 üzenetére
De neki miért működik úgy?
Miért, neki működik úgy? Te látsz olyan időpillanatot a videón, amikor kitöltetlen adatokkal küldi el a formot? Mert én nem.
header()
függvény hívása előtt nem lehet olyan függvény, ami olyan kimentet ad, ami nem HTTP fejléc. Ebbe beleértendő a dokumentumban lévő HTML kód is.
Tehát a kód, amit #21613-ba bemásoltál, nem fog működni. Ott pontosan azért hivatkozik a 4-es sorra, mert ott kimenet van, és onnantól fogva, hogy a header() előtt kimenet van, a header() nem fog működni.
Vagy javítsatok ki, ha tévednék, de szerintem lehetetlen, hogy működjön az a kód.Itt a logoutnál mi történik pontosan? Kiírja a username-t és a passwordöt, és utána mi történik?
szerk: amúgy annak mi értelme, hogy kiírja a username-t és a passwordöt, és azonnal átirányít?
-
pelyib
tag
válasz
lanszelot #21613 üzenetére
Mert mar elotte elkezdte a valaszt visszaadni (session_start, doctype)
https://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php
(lehet jobban jarnal, ha valami template engine + frameworkot kezdenel hasznalni, html-t PHPvel keverni eleg szivas tud lenni kezdokent) -
lanszelot
addikt
válasz
lanszelot #21612 üzenetére
[link]
ez alapján kezdtem utána járni, de nem találom a hibát.
"php:4" -es sorra utalitt a teljes kod:
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login</title>
</head>
<body>
This is the Login page<br>
<form action="index06.php" method="post">
username:<br>
<input type="text" name="username"><br>
password:<br>
<input type="password" name="password"><br>
<input type="submit" name="login" value="login">
</form>
</body>
</html>
<?php
if (isset($_POST["login"])) {
if (!empty($_POST["username"]) && !empty($_POST["password"])) {
$_SESSION["username"] = $_POST["username"];
$_SESSION["password"] = $_POST["password"];
header("Location: home.php");
} else {
echo "Missing username/password";
}
}
?> -
urandom0
senior tag
válasz
lanszelot #21609 üzenetére
Nem működik másként, csak kicsit rosszul mutatja.
Első körben ugye bepipálta mind a négyet, elküldte, oké.
Következő körben nem volt bepipálva semmi, mégis kiírta, hogy pizza.
Következő körben azt, hogy hamburger, és így tovább... miért?Azért, mert valójában nem 'Küldés' gombra kattintott, hanem csak refreshelt. Mi történik akkor, ha refreshel? Hát az, hogy a böngésző újra küldi a POST-ot, benne a négy bepipált mező értékével.
Próbáld ki te is, bepipálod mind a négyet, küldésre kattinttassz, majd nyomsz egy Ctrl-R-t.
A böngésző figyelmeztet, hogy újra fogja küldeni a kérést. A videóban viszont a VS code ezt elintézi a háttérben, és nincs figyelmeztetés, de a POST kérés (benne a négy bepipált mező értékével) újra elmegy, ugyanúgy, mint ha kézzel refresheltél volna. -
pch
senior tag
-
urandom0
senior tag
válasz
lanszelot #21593 üzenetére
Meglepődnék, ha működne. A komolyabb szolgáltatók, amik elvárják a normálisan kitöltött DKIM, DMARC és SPF rekordokat, úgy fogják visszadobni az e-mailed, hogy max egy pár soros debug hibaüzenetet fogsz kapni. A Gmail-es, Outlookos és hasonló, normális szolgáltatókat használó ismerőseid sosem fogják megkapni az üzeneteid.
-
válasz
lanszelot #21590 üzenetére
Nem ez a lényeg. Ha PHP-ban gondolkodsz, a mail() beépített függvény nem követ semmilyen protokollt, nem biztonságos, az adatvonal nem titkosított, ráadásul többnyire az általa küldött üzenet a spam mappában végzi. Nem mindig, de többnyire.
Ellenben egy PHPMailer-el, ami minden protokollt betart, az adatvonal biztonságos és nem szükséges mindösszesen csak egyszer lefuttatni, függetlenül a címzettek darabszámától.
Viszont! Egyik esetben sem lesz nyoma a te email fiókodban annak, hogy köldtél egy emailt. Azonban a mail() függvény használatával még csak a saját email címedet sem kell megadni, elég annyit, hogy 'kiskacsa'.
Új hozzászólás Aktív témák
Hirdetés
- Fejhallgató erősítő és DAC topik
- Kerékpárosok, bringások ide!
- A fociról könnyedén, egy baráti társaságban
- HiFi műszaki szemmel - sztereó hangrendszerek
- Milyen légkondit a lakásba?
- bambano: Bambanő háza tája
- World of Warships
- Windows 11
- Azonnali fotós kérdések órája
- Melyik tápegységet vegyem?
- További aktív témák...
- AMD Ryzen 7 7700X - Új, 1 év garancia - Eladó!
- Apple Watch ultra 2 49mm Natur Titanium, Új, 1 év Apple garanciával
- Gamer PC - R5 5600, RTX 3060 és 16gb RAM + GARANCIA
- HP Zbook 14 laptop (14FHD/I7-G5/8GB/128SSD/MagyarVilágítós)
- Jó áron ÁRON ELADÓ! Üzleti HP Elitebook 1040 G9 Laptop! / i5-1245U 16GB 256GB
- BESZÁMÍTÁS! MSI X470 R7 5800X 32GB DDR4 512GB SSD ROG STRIX RTX 2080 Super 8GB Rampage SHIVA 650W
- LG FLATRON L1942s 19"-os 1280x1024-es monitor eladó
- Azonnali készpénzes Intel i3 i5 i7 i9 8xxx 9xxx processzor felvásárlás személyesen / csomagküldés
- 0% THM 3 havi részlet! Beszámítás, 27% áfa, Sapphire Nitro+ RX 9070XT 16GB készletről
- Használt és ÚJ Gamer Monitor Felvásárlás Gyors és Korrekt Ügyintézés!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest