- sziku69: Szólánc.
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Fűzzük össze a szavakat :)
- hcl: MS Office365 Linuxon
- Luck Dragon: Asszociációs játék. :)
- gban: Ingyen kellene, de tegnapra
- VoidXs: Tényleg minden játék optimalizálatlan?
- Mr Dini: Mindent a StreamSharkról!
- erkxt: A Roidmi becsődölt – és senki nem szól egy szót sem?
- Hieronymus: Három júniusi képem
Új hozzászólás Aktív témák
-
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
-
lanszelot
addikt
Hello,
2 dologot nem tudok:
1-<select name="toltelek_mertekegyseg">
<option disabled selected value>válassz mértékegységet</option>
(csak kód részlet, hogy ha rosszul írnám)select tagnál szeretném ha alapból nem lenne értéke.
De ha így teszek, akkor post lekérésnél ha az marad akkor az true értéket fog felvenni
és a kód rossz miatta.
Hogy tudom megoldani, hogy!empty
megfogja?2-
ha jól tudom if vagy try -nál nincs scope csak function-nál van
mégis "id" változót nem tudom elérni$id = $receptekData->lastInsertRowid();
miért? -
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());
?> -
lanszelot
addikt
Köszönöm szépen a választ.
Olvastam mind, meg is köszöntem.
Majd válaszoltam
"Amiket írtál az mind megvan."
- ez azt jelenti, hogy ezeket tudom is"sql-ben /nem php sql-ben/ meg van a :
create, select, insert, update, like, count, limit, between, join és biztos hagytam is ki"
- ez is azt jelenti ezeket tudom is, de nem php-ben + ezt kiemeltem"nem egységesek.
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.A linkeket #21690 -ben kaptam. Mind másként írja ugyanazt. Pl van idézőjel, nincs idézőjel. Na most kell? Nem kell?
Emiatt "Nem tudok konkrétumot kérdezni, mert túl sok a kérdés."Ti írtátok fentebb. mikor véletlen kitöröltem a táblázat részeit, és nem vettem észre, hogy az úgy nem jó, de a böngésző nem mutatta, mert javította.
Ezért nem akarok rosszat megtanulni. Idézőjellel írom, a böngésző javítja, de helytelen.De az idézőjel csak példa, rengeteg ilyen van.
Így kellene [link] itt érthetően le van írva minden. Mit, hogy, mik a paraméterek...stb
De ott alig van valami amit használni tudok. Pl insert sincs, se semmiNem hiszitek el, de rengeteget járok utána, de sehol semmi.
-
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...
-
lanszelot
addikt
válasz
urandom0 #21691 üzenetére
Először is köszönöm szépen a válaszokat.
Pláne a magyarázatot.Amiket írtál az mind megvan.
Talán még a php try throw catch is - hiba kezelés ha jól tudom
Nem használtam, így csak dereng.sql-ben /nem php sql-ben/ meg van a :
create, select, insert, update, like, count, limit, between, join és biztos hagytam is kiDe ezt írtam. hogy ezekkel semmire se megyek, mert php-ban máshogy kell.
Nem tudom kitalálni vajon hogy kellhet.
Kellene egy rendes leírás,
Amit találtam, a linkek amiket beraktál nem egységesek.
Itt ez van, ott az. Honnan tudjam melyik jó, és melyik az "ezt a hibát javítja magától"
pl már a legelején CREATE TABLE kell idézőjel, vagy sem?
vagy ettől is alapabb: data tipusok mekkora értéket tudnak max felvenni?
Mert már ez is mindenhol más. varchar van ahol 255 de van ahol 65535
Ezért írtam, hogy nem jó az sql, és a mysql se.
Sqlite php valami ahol megtudhatom, hogy lehet e "like" -t használni vagy az csak mysqli. É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.
Pl a hiba kezelést te úgy írtad, de van ahol$db->enableExceptions(true);
Tehát rengeteg minden eltér, és kezdőként nem tudom most akkor hogy is van ez.
Nem tudok konkrétumot kérdezni, mert túl sok a kérdés.
Ezért keresek valamit ahol ott van kezdőknek.
És ezt is néztem [link] , de itt össze vissza van minden, és nekem zagyva.
Nem nem értem az sql-t, hanem nem tudom php - val az sqlite -t hogy kell kezelni. -
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
urandom0 #21690 üzenetére
Egyébként még mindig azt gondolom, hogy túl gyorsan akarsz haladni, de ez nem így megy. Egészen a múlt hétig nem voltál tisztában olyan alapfogalmakkal, hogy mi a PHP kimenete, de közben receptes appot írsz.....
Nade mindegy is, hagyjuk. Próbálok segíteni.Szóval, van a webszerver, ami nálad Apache (de lehetne nginx, lighthttpd, caddy, stb., sok van). Annak van egy modulja, a PHP, ami a PHP kódot végrehajtja, és elkészíti a PHP kimenetet, amit visszaad az Apache-nek, majd az Apache ezt berakja a HTML dokumentum megfelelő helyére, és kiküldi a kliensnek (a böngésződnek).
És van egy különálló adatbázis program, a te esetedben az SQLite3, amit SQL nyelven lehet kezelni.Csakhogy a PHP-t és az SQLite3 adatbázis programot valahogy össze kell, hogy együtt tudjanak dolgozni, és hogy tudd a PHP-ból az SQL-t használni. Erre valók a PHP SQLite3 függvényei (pontosabban osztálya).
Eddig gondolom minden világos.Nézzük ezt a tutorialt: https://brainbell.com/php/sqlite.html
Kezdjük onnan, hogy "Create or Open SQLite Database".<?php
$db = new SQLite3('brainbell_db.sqlite');
echo 'Connected to the database.';
$db->close();Ez a három sor mit csinál?
Készít egy új SQLite3 objektumot, amit visszaad a $db változóba. Az objektum konstruktorának egyetlen paramétert ad át, azt, hogy "brainbell_db.sqlite", ez lesz az új adatbázisfájlunk neve. Az SQLite3 osztály ennek megfelelően elkészíti az adatbázist.
Utána jön egy echo, amelyben kiírja, hogy 'Connected to the database.', végül az utolsó sor lezárja az adatbáziskapcsolatot.Namost itt jó lenne tudni, hogy miért kell lezárni a kapcsolatot, egyáltalán mi ez a kapcsolat, mi az osztály, mi az objektum, mi a metódus, mi a konstruktor, stb. Erről most csak annyit írok, hogy a kapcsolat azért kell, mert az adatbáziskezelő program (adatbázisszervernek vagy angol rövidítéssel RMDBS-nek szokás hívni) egy, a PHP-tól különálló program, amihez valahogy kapcsolódnunk kell. A végén pedig azért kell lezárni, hogy a kapcsolathoz lefoglalt erőforrások fel tudjanak szabadulni.
Menjünk tovább.
Creating a Table in SQLite DB
<?php
try {
$db = new SQLite3('brainbell.db');
$db->query('CREATE TABLE IF NOT EXISTS user_table
(name, email, UNIQUE (email))');
echo 'Table Created';
$db->close();
}
catch (Exception $e) {
echo $e->getMessage();
}Nem feltételezem rólad, hogy a try..catch szintaktikával tisztában vagy
Pedig jó lenne. Na mindegy, nézzük a lényeget:$db->query('CREATE TABLE IF NOT EXISTS user_table (name, email, UNIQUE (email))');
Mit csinál ez a sor?
Meghívja az imént létrehozott $db objektumunk query metódusát, és átad neki egy stringet, ami egy SQL lekérdezést tartalmaz. Ha ezt meg tudod csinálni, akkor gyakorlatilag mindent meg tudsz csinálni (még ha nem is tökéletesen).Nézzük meg ezt az SQL lekérdezést, vajon mit csinálhat?
CREATE TABLE IF NOT EXISTS user_table (name, email, UNIQUE (email))
Ez arra utasítja az RMDBS-t, hogy hozzon létre egy táblát (ha még nem létezik) user_table néven, aminek legyen kettő mezője, name és email. Az email mezőt egyedi kulcsnak (unique key) állítja be, ami azt jelenti, hogy nem lehet két azonos e-mail című rekord a táblában (ez logikus is, hiszen két felhasználónak nem lehet azonos e-mail címe). Ezt az SQLite szépen le fogja kezelni, hibát fog dobni, ha két ugyanolyan e-mail címet akarsz bevinni.
Innen nem megyünk tovább, hanem szépen megnyitjuk a W3C SQL tutorialját, mert abban bizony benne van az, hogy kell adatokat módosítani ill. törölni.
Adatok módosítására az (egyik) módszer az SQL UPDATE eljárása: https://www.w3schools.com/sql/sql_update.asp
Adatok törlésére pedig a DELETE eljárás: https://www.w3schools.com/sql/sql_delete.aspHa valami nem tiszta, kérdezz.
-
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"; -
lanszelot
addikt
válasz
urandom0 #21687 üzenetére
Várjunk kicsit, kérlek.
Kérlek szépen olvassátok már el mit mire írok. Mert anélkül semmi értelme.
biker felhasnáló folyamatosan rúgdos a magas lóról.
Persze hogy könnyű bele rúgni a kezdőbe.Te írtad, hogy a W3school -t belinkelted, és el se olvastam.
Erre írtam, hogy az nem működik php-ban.
Mr. Y megírta hogy:
"Mindent pontosan ugyan úgy kell, mint natív SQL-ben."
Ezt biker helyeselte.
Erre a válaszokra tettem be a képet, hogy nálam az nem működik.
Most pedig leszólsz azért, hogy "Erre te beírod két php tag közé a SQL kódot."
Hiszen ti írtátok. Ti állítottátok, hogy így kell.
Persze, hogy jó amit találtam, szepen el van magyarázva.
Azt is elmondtam, hogy amit találtam, az jó, de kevés.
Nincs benne se módosítás, se törlés.Ti állítottátok, hogy nem olvasok tutorialt. Nem csináolk semmit, csak várom, hogy a sült galamb a számba repüljön.
Ha jól emlékszem a php ini problémát én oldottam meg,
Ti egy php sqlite tutorial linket se küldtetek, én találtam egyet és meg is osztottam, ha bárkinek kellene.
Semmi rosszat nem írtam.
Kérdeztem, ez miért baj?
Ti is voltatok kezdők, csak már elfelejtettétek.
Nekem senki nincs a környezetemben aki akár egy Windows-t fel tudna telepíteni.
Miért kell így viselkedni?
Nekem nem ez a szakmám, de a szakmámban se rugdosom a kezdőket, sőt. Pedig az egyik legjobb vagyok. De én emlékszem arra amikor elkezdtem.
Nem szabad így viselkedni.
Kezdő kérdez. Lehet, hogy butaságot, de ki lehet javítani. És a kezdők hbáznak, sokat.
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. -
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... -
-
lanszelot
addikt
válasz
urandom0 #21680 üzenetére
A sima sql-el semmire se megyek
Próbáltam, nem működik php-ben.
Valahogy másképp kell beírni
Semmire se megyek azzal, nekem csakis php alól kell kezelni mindent.
Nem tudom miért állítod, hogy nem olvastam. Akkor hogy használtam dbbrowser alól?
Probálgattam php alá is beírni, nem lehetNem érdekel az ai. Egyikbe se regelek.
-
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!
-
lanszelot
addikt
válasz
urandom0 #21678 üzenetére
Valaszoltam is rá, hogy azt már előtte átnéztem, de semmit sem er, mert nem php.
A dbbrowser-nél kell azokat beírni
Úgy csináltam meg először az adatbázist.
De az nekem nem jó, mert php alól kell kezelnem.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 stb
Találtam egy másik oldalt is, de magyarázat nélkül, ott a kiiratás volt ul listába, úgy meg már bárhogy ki lehet íratni.
Azt az oldalt véletlen beszartam, ezért nem tudtam megosztani.Majd tákolok kicsit. Hibás bevitelnél manuálisan törlöm.
Úgy se fogja senki használni. Szerintem a párom lusta lesz bevinni a receptjeit. -
lanszelot
addikt
válasz
urandom0 #21675 üzenetére
Először is nagyon szépen köszönöm a választ.
tr és td -t valószínű véletlen töröltem ki.
De már nincs meg az a file, és nem tudom mit kavartam.
Az a gond, hogy rengeteg idő/energiám megy el az sql -re, ami mellett csinálnám az oldalt, de nem haladok az sql miatt, így sokszor kavarodom bele, hogy épp mit csinálok, hol tartok.
JS-nek át adtam az adatot, és magát a kiiratást azzal csinálom.
Sokkal egyszerűbb.php -val a login-t csináltam meg,
Illetve az adatbázison szerencsétlenkedem vele, de teljes a kudarc, sehol semmi hozzá
DB browser-el létre hoztam az adatbázist, és raktam bele 1 adatot.
Ezt be tudom olvasni, és kiíratni, de itt kifújt az sqlite+php
A vliágon sehol se találom hogy lehet adatot bele írni.
Millió leírást olvastam, és rengeteg videót néztem, de semmi. -
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.
-
lanszelot
addikt
válasz
urandom0 #21672 üzenetére
Hello,
Jelenleg ezekkel csak azt nézem, hogy jól kérem e ki.
Természetesen nem print_r -t fogok használni, csak az megmutatja, ha hibásan kérem ki, hogy hol rontottam.
Ebben az esetben mindegy mivel kérem ki, mert egy string "Tojás" amit kiiratok.
De átítram echo -ra, és ugyanaz a probléma.
Kimászik a táblázatból H1 és a table közé.$data tartalma:
Array ( [0] => stdClass Object ( [id] => 001 [name] => Kókusz kocka [hozzávalók] => stdClass Object ( [tészta] => Array ( [0] => stdClass Object ( [hozzávaló] => Tojás [mennyiség] => 2 [mértékegység] => db ) [1] => stdClass Object ( [hozzávaló] => Porcukor [mennyiség] => 30 [mértékegység] => dkg ) [2] => stdClass Object ( [hozzávaló] => Vaj [mennyiség] => 8 [mértékegység] => dkg ) [3] => stdClass Object ( [hozzávaló] => Méz [mennyiség] => 3 [mértékegység] => ek ) [4] => stdClass Object ( [hozzávaló] => Kakaó [mennyiség] => 1 [mértékegység] => ek ) [5] => stdClass Object ( [hozzávaló] => Tej [mennyiség] => 1.5 [mértékegység] => dl ) [6] => stdClass Object ( [hozzávaló] => Rétes liszt [mennyiség] => 38 [mértékegység] => dkg ) [7] => stdClass Object ( [hozzávaló] => Sütőpor [mennyiség] => 0.5 [mértékegység] => csomag ) ) [tötelék] => Array ( ) [öntet] => Array ( [0] => stdClass Object ( [hozzávaló] => Vaj [mennyiség] => 23 [mértékegység] => dkg ) [1] => stdClass Object ( [hozzávaló] => Cukor [mennyiség] => 38 [mértékegység] => dkg ) [2] => stdClass Object ( [hozzávaló] => Kakaó [mennyiség] => 5 [mértékegység] => dkg ) [3] => stdClass Object ( [hozzávaló] => Tej [mennyiség] => 6 [mértékegység] => ek ) ) [díszítés] => Array ( [0] => stdClass Object ( [hozzávaló] => Kókusz reszelék [mennyiség] => 1 [mértékegység] => csomag ) ) ) [elkészítés] => stdClass Object ( [előkészítés] => Lorem ipsum dolor sit amet consectetur adipisicing elit. Odio nisi voluptatum quasi voluptatibus, ipsam consequuntur? [elkészítés] => Lorem ipsum dolor sit amet consectetur adipisicing elit. Odio nisi voluptatum quasi voluptatibus, ipsam consequuntur? ) ) )
biker
Megnéztem nincs előtte semmi, és a php html között se. -
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
-
lanszelot
addikt
válasz
urandom0 #21669 üzenetére
Nagyon szepen köszönöm a segítséget
Nagyon jól esik.
Leszedtem most, és az első ami felugrik, mielőtt elindulna a telepítő...pont amit írtamKi van kommentelve, hogy írhatna ki bármit? Az csak komment.
A változóban ott a teljes json file.$data = file_get_contents('receptek.json');
$data = json_decode($data);
így csináltam[link]
Így dobtam fel , őt követtemDe előbb volt a php a gépen. Azt még a tanárommal raktuk fel, és terminalból indítottam. Az már rég volt. Nem emlékszem rá mit hogyan.
C:\php egy az egybe az amit leszedsz a php oldaláról, és kicsomagolod.
C:\Apache24 itt van
[link] az egész csak 12Mb így becsomagoltam, innen elérheted -
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.
-
lanszelot
addikt
válasz
urandom0 #21667 üzenetére
Amiket ítál azoknál léteznie kell a file-nak, csak írsz bele, törölsz belőle, módosítod...stb.
De nem létező filet nem hoz létre.
Tehát a valami könyvtárban 1 file van: akarmi.php, semmi más.
php futtatása után 2 file-nak kellene lenni. akarmi.php és új.json.a kikomentezett semmit, azzal néztem meg, hogy elérem e a file-t. kitörölhetem
a változó a json file-ból jön
Értem, hogy az én hibám, de JS-nél id vagy class alapján pontosan oda rakom ahova akarom. $data változót egyszerűen átadom JS-nek.Nem akarok se wamp, se xamp se mást. Kezdődik azzal hogy biztonsági rést nyit.
Ki is írja telepítésnél.
Majd a hibák amiket dobál. Már elég oldalt kezdtem újra az elejétől, az ilyen programok miatt. -
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?! -
lanszelot
addikt
válasz
urandom0 #21663 üzenetére
Php -vel nem lehet új file-t létrehozni. (pl: create empty file: 002.json)
Ezt python tudja, ezért kellene.<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>Ez a kód miért fut rosszul?
sztem amit kellene produkálnia: Hozzávalók, Tészta, print_r
amit produkál: Hozzávalók, print_r, TésztaEzért kell a JS , azzal nincs ilyen gond.
c:\php\php.ini
Itt van a php könyvtáraban."Ugye nem valami php.ini-development vagy php.ini-production nevű fájlban dolgoztál egész eddig??" - de igen, de amikor a sqlite részek elől töröltem a pontosvesszőt reggel, akkor átíratm, és apache-t újra indítottam, gépet is.
Azt hittem onnantól él az ini. Ezt írta a php dokumentum.
De csak most vettem észre, hogy nem. -
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. -
lanszelot
addikt
válasz
urandom0 #21658 üzenetére
A hivatalos dokumentummal kezdtem, de egy árva szócskát se értettem
Így sqlite oldal hivatalos dokumentum, abból se értettem semmit,
ezért el kezdtem keresgélni"extension_dir" a php ini -ben:
1 -
; Directory in which the loadable extensions (modules) reside.
; https://php.net/extension-dir
;extension_dir = "./"
; On windows:
;extension_dir = "ext"2-
[sqlite3]
; Directory pointing to SQLite3 extensions
; https://php.net/sqlite3.extension-dir
;sqlite3.extension_dir =Nekem a php elerési útja: c:\php
sqlite elérési útja : C\:sqlite
pont úgy ahogy a hivatalos oldalon írják.
Gondolom nekem egy kiterjesztést se használ, mert ki van pontosvesszőzve.
Melyiket aktiváljam? -
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! -
lanszelot
addikt
válasz
sztanozs #21654 üzenetére
Loaded Modules:
core mod_win32 mpm_winnt http_core mod_so mod_actions mod_alias mod_allowmethods mod_asis mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dir mod_env mod_include mod_isapi mod_log_config mod_mime mod_negotiation mod_setenvif mod_phpez pedig a php ini
[kép] -
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
-
lanszelot
addikt
Huhh, nagyon szépen köszönöm mindenkinek
Ez a kis beszélgetés alatt nagyon jó ötleteket adtatok.
Sql-ba beviszem az id-t és recept nevét.
Azzal működik majd a kereső és a lista.
Magát a recepteket külön külön json-ba tárolom.
Js vagy php az olvasás oldal.
Php a login és bevitel oldal.
Ez nagyon jó kis tanuló oldal.Amit már nem tudok, hogyan mentsem külön file-okba.
File neve egyértelműen az id szám 001, 002...stb -
-
-
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 -
-
lanszelot
addikt
válasz
urandom0 #21642 üzenetére
Ezek szerint az sql egyáltalán nem használható erre. Marad a json.
"1dkg cukor aztán kész.":
ez sok szempontból nem jó.
- nehéz vele számolni, mert ha 1 személyt át állítom 3 személyre, akkor szét szedni, számmá alakítani, művelet, össze rakni...
- mivel webes felületről lesz bevitel íy lenne:
cukor 1 dkg
1 deka cukor
stb
Bonyolult a honlap amit elgondoltam, de ilyenből lehet tanulni -
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. -
lanszelot
addikt
válasz
urandom0 #21638 üzenetére
Köszönöm szépen a válaszokat.
Mivel ez már nem php így át mentem sql topikba [link]
"nem hiszem, hogy PHP-s SQL videotutorialból ne lenne annyi, mint égen a csillag"
Én egyet se találok. Mindegyik annyi, hogy username, pasword, registration. És itt megáll.
Ez nekem egyik se kell. Sokkal összetettebb database kell nekem, másik topikban leírtam.
Össze dobtam egy json -t, ezek kellenek bele, csak nem tudom hogy néz ez ki sql -ben
[link]Xampp - pont azért ami fentebb volt. Hiba hiba hátán, és félre tanulom/értelmezem, aztán tépem a hajam miért nem jó a szerveren, mikor a gépemen meg jó.
pch: "SQLite+hez nem kell terminálba turkálni."
akarhol nézem mindenhol csak terminal-ban turkálnak. Semmit se találok hogy kell telepíteni, mit kell telepíteni. Csak a terminálos pötyögések. Pedig sokkal jobbnak tűnik mint a mysql, az amit olvastam róla. -
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.).
-
lanszelot
addikt
Köszönöm szépen a válaszokat mindenkinek.
Excel 3 dolog miatt nem jó:
- nem tudja bárkivel megosztani /biztonsági okból/
- meg kellene tanulnom hozzá a VBA-t /most épp php -vel szórakozom/
- php tudásom nem nő tőlepch: sqlite-hoz alig találok valamit. Mindenhol mysql van, pedig sqlite-t több minden támogatja. De terminal-ban kell pötyörészni, hogy installáljam, és onnan kezelni...nagyon bonyolult.
urandom0: json-t már csináltam. SQL-t még nem , ezért az érdekelne. De a php sql video tutorialok hiányoznak. Nem video tutorial-al az a bajom, hogy elveszek benne, nem értem. Pl a gépemre felrakni mysql-t vagy sqlite -ot nem találtam olyat amit megértenék. Xamp stb kizárt. Talán fent is van az xamp fent van talán még /fogalmam sincs hol kell keresni ha fent is van/, de 1 szer elindítottam, és felraktam inkább a php + apache-t.
Mysql-t installáltam, de véletlen csak a workbench-et raktam véletlen, és nem tudom most hogy kapcsolam össze a php+apache-val, mert arról semmit se találok.
Szerver oldalon tanulni, meg nem tudom jó ötlet-e, mivel free szerver, és nem akarom, hogy tiltsanak, ha valami marhaságot csinálok, vagy túl sokáig vagyok fent... -
-
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.
-
lanszelot
addikt
Hello,
Én csak így hobbiból tanulgatok program nyelveket
Gondoltam a páromnak készítenék egy oldalt, ahova beírhatja a receptjeit a füzetéből.
Sütemény nevek lista, hozzá adás.
Listából választva megnézheti a receptet.
Ott megadhaja hány személyre és az összetevők úgy valtoznak.
Illetve hozzáadásra kattintva be kell lépnie és úgy bevinni a hozzávalót, és elkészítést.Json-ban tároljam az adatokat?
Vagy mi a legjobb módszer?
Fontos, hogy könnyen le tudjam menteni saját gépre a teljes oldalt, ha valami lenne a szerverrel ne bukja el.
Ingyenes szervereket használok, mivel ez csak szórakozás. -
-
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).
-
lanszelot
addikt
válasz
urandom0 #21626 üzenetére
Nagyon szépem köszönöm a választ mindenkinek.
Én nem használok se live servert, se xampp -ot.
php és apache -t használok.
Többször megszivatott a live szerver, hogy teljesen előlről kellett kezdeni az egész oldalt /js/ és akkor elegem lett, és felraktam rendesen, és így sose volt gondom. Mint ahogy most is kidobja a hibákat.
Ennek nagyon örülök, mert rosszul tanulnám meg. Így pedig látom a hibákat is, ami extra tanulás.Azt nem értem ő miért a végére dobálja a php-t? Hogy jól látható legyen amikor magyaráz? Mert ahogy látom főleg fentre kell tenni, illetve oda ahol lefusson, pl egy kiiratás ne a submit elé írja ki.
Vagy rosszul gondolom?"minden ami kimenetként megjelenik" Ezt a kimenetet még mindig nem értem.
Mi az hogy kimenet? Hova megy ki? Mi küldi ki?
Biztos hatalams marhaságot kérdezek, de ha nem teszem nem fogom megérteni. -
biker
nagyúr
válasz
urandom0 #21624 üzenetére
"Én nem hiszem el, hogy be lenne kapcsolva nála az output buffering."
Ez nem hit kérdése, hanem xampp-ot használ a videóban, és ez az alap ott: XAMPP appears to set
output_buffering
to 4096 by default. (So content is served in 4K chunks - a possible performance benefit. Although this can lead to unexpected bugs (eg. "headers already sent" etc.) if deploying on a server where this is disabled, which incidentally is the PHP default.) -
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. -
lanszelot
addikt
válasz
urandom0 #21616 üzenetére
Köszönöm szépen a választ mindenkinek.
Ez egy oktató videó. Session-t magyarázza itt.
"amúgy annak mi értelme, hogy kiírja a username-t és a passwordöt, és azonnal átirányít?"
Az, hogy ha bejelentkezek a login oldalon, és el kezdek barangolni az oldalak között nem kell minden oldalon bejelentkezni.Ezt mutatja meg ebben a részben.
Azért íratja ki hogy lássuk, hogy oda átvitte."Te látsz olyan időpillanatot a videón, amikor kitöltetlen adatokkal küldi el a formot?"
Igen, amikor átmegy a másik oldalra ott jeleníti meg.
Nekem is átviszi, az jól működik.
Csak nem ugrik át az index06.php oldalról a home.php oldalra.
De ha manuálisan átmegyek a home,php oldalra, akkor nekem is ott a név és jelszó, amit az index06.php oldalon bevittem, csak nem ugrott át.
Neki átugrik, pedig nekem is minden úgy van mint neki."mert ott kimenet van" - mi a kimenet? Ezt nem értem mi az hogy kimenet.
pelyib:
12 perces, nem 4 órás. 3:04:57 től 3:16:47 ig tart.
Minden részt nulláról kezd. -
-
nevemfel
senior tag
-
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?
-
lanszelot
addikt
válasz
pelyib #21614 üzenetére
Először is köszönöm szépen a választ.
De neki miért működik úgy?
home.php -ban a logout -nál is működik nekem:<?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 Home page<br>
<form action="index06.php" method="post">
<input type="submit" name="logout" value="logout">
</form>
</body>
</html>
<?php
echo $_SESSION["username"] . "<br>";
echo $_SESSION["password"] . "<br>";
if (isset($_POST["logout"])) {
session_destroy();
header("Location: index06.php");
}
?>pedig itt is lent van
stackoverflow -t olvastam, de egy árva szócskát se értek
"template engine + frameworkot kezdenel hasznalni" ez nem tudom mit jelent
a videót követem, ott így van -
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";
}
}
?> -
lanszelot
addikt
Hello
Ismét elakadtam.
[link]
3:14:10 -nélheader("Location: home.php");
Warning: Cannot modify header information - headers already sent by (output started at.........on line 33
arra a sorra hivatkozik amit beszúrtam ide, maga a header function-ra
nekem 33 ik sor a videoban 31 ik sor -
lanszelot
addikt
válasz
urandom0 #21610 üzenetére
Nagyon szépen köszönöm a segítséget mindenkinek.
Így van értelme.
Azt kerestem mi pakolja be a tömbbe az elemeket, ha nincs kijelölve semmi.
Ezért nem szeretem, és nem is használok live server-t.
Nagyon oda kell rá figyelni, és sokszor nem úgy működik ahogy kellene. Több honlapot az elejéről kellett kezdenem a live server miatt. Akkor töröltem végleg. -
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
-
lanszelot
addikt
Hello,
[link]
itt 2:26:24-nél neki működik anelkül, hogy bejelölné bármelyik checkbox-ot.
Nekem hibát dob, ha nem jelölök be:
Warning: Undefined array key "foods"Ha bejelölök, akkor annyi van a tömbben amennyit bejelöltem.
Neki mindig mind benne van.
Miért?<body>
<h1>Checkbox 02</h1>
<form action="index04.php" method="post">
<input type="checkbox" name="foods[]" value="Pizza">Pizza<br>
<input type="checkbox" name="foods[]" value="Hamburger">Hamburger<br>
<input type="checkbox" name="foods[]" value="Hotdog">Hotdog<br>
<input type="checkbox" name="foods[]" value="Taco">Taco<br>
<input type="submit" name="submit">
</form>
</body>
</html>
<?php
//02
if (isset($_POST["submit"])) {
$foods = $_POST["foods"];
echo $foods[1];
// foreach ($foods as $food) {
// echo $food . "<br>";
// }
}
?>
Mit rontottam el? -
lanszelot
addikt
Hello
Ez miért nem jó?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="index02.php" method="get">
<label for="">username: </label><br>
<input type="text" name="username"><br>
<label for="">password: </label><br>
<input type="password" name="password"><br>
<input type="submit" value="Log in">
</form>
<form action="index02.php" method="post">
<label for="">username2: </label><br>
<input type="text" name="username2"><br>
<label for="">password2: </label><br>
<input type="password" name="password2"><br>
<input type="submit" value="Log in">
</form>
</body>
</html>
<?php
if (!empty($username) && !empty($password)) {
echo "GET látszik az url -ben<br> Ezáltal a link bookmark -olható<br>";
echo $_GET["username"] . "<br>";
echo "{$_GET["password"]} <br>";
}
if (!empty($username2) && !empty($password2)) {
echo "POST nem látszik az url -ben<br>Emiatt mindig az alap oldalra mutat, nem bookmark -olható<br>";
echo $_POST["username2"] . "<br>";
echo "{$_POST["password2"]} <br>";
}
?>
if nélkül első futásnál hibát dob, és amit nem töltök ki az is folyamatosan.
Ezért tenném bele az if-et. -
lanszelot
addikt
válasz
nevemfel #21601 üzenetére
Nagyon szépen köszönöm mindenkinek
Azt hittem ezt php-val oldják meg, és a php része érdekelt volna.
Amire meg kaptam a választ, és tanulás szempontjából el kezdtem utána olvasni.De email küldésre azt hiszem a bcc és saját magamnak küldés lesz a legegyszerűbb nekem, hisz csak pár embernek küldöm az időpontot.
-
Új hozzászólás Aktív témák
- SZÉP Lenovo ThinkPad P15 G2 Tervező Laptop -75% 15,6" i9-11950H 64/2TB RTX A4000 8GB UHD OLED
- Szép! Lenovo Thinkpad T14s G2 Üzleti "Golyóálló" Laptop 14" -50% i7-1185G7 4Mag 16GB/512GB FHD IPS
- Eladó Apple MacBook Pro 13" A1706 (Late 2017, Silver - EMC 3163)
- Amazfit GTR 2 Classic okosóra dobozában töltőkábellel
- Mac mini M1 chip 8 magos CPU-val, 8 magos GPU-val
- Bomba ár! Dell Latitude 5495 - Ryzen 5 I 16GB I 256SSD I 14" FHD I HDMI I Radeon I Cam I W10 I Gari!
- ÚJ Apple Macbook Air 15,3 M4 10C CPU/10C GPU/16GB/256GB - Ezüst -(2025) - 3 év gari - MAGYAR
- Lenovo S10-2 Intel Atom retró csajszis netbook eladó
- Apple iPhone 13 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- Macbook White 13" unibody
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest