- 420 mm-es AIO-val jön a DeepCool "lopakodó" alaplapokat is támogató nagytornya
- Primary RGB Tandem OLED panelt kap az LG 27 hüvelykes gaming monitora
- Megmenti a Sony 8K-s ígéretét a Pure Pool Pro
- Sallangoktól mentes ultraszéles monitorral jelentkezett az LG
- Válságba taszíthatja Oregon államot az Intel leépítése
- Xiaomi Pad 6 - kiapadhatatlan jóság
- TCL LCD és LED TV-k
- Milyen házat vegyek?
- Házimozi belépő szinten
- LG LCD és LED TV-k
- Vezeték nélküli fülhallgatók
- AMD GPU-k jövője - amit tudni vélünk
- Úgy tér vissza a Commodore 64, ahogy titkon mindenki várja
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Melyik tápegységet vegyem?
Új hozzászólás Aktív témák
-
sonar
addikt
válasz
Jester01 #596 üzenetére
Nah megtaláltam a megoldást
my.ini -ben (win alatt, linuxnál my.cnf)
[mysqld]
log=query.log
illetve ezt a parancsot kell még kiadni: SET GLOBAL general_log = 'ON';és már minden query loggolva van.
Loggolás likapcsolása
SET GLOBAL general_log = 'OFF';Még vmi.
Ha update paracsot adom ki akkor kell léteznie a rekordnak? Akkor is lefut ha nem létezik?
Csak azért kérdem mert most per pill 2 napig nem leszek olyan gép közelbe, hogy ki tudjam próbálni. -
sonar
addikt
Sziasztok,
Hogyan tudom monitorozni, hogy milyen SQL parancsok érkeztek be a MySQL serverbe?
Nézegettem ezt a MySQL Administratort, de nem igazán találtam semmi idevonatkozót.
Vki esetleg? V vmi konfigurálás kéne hozzá? -
nuendo
tag
nem kell nagyon bajlódni az eltárolással! csináld 2 új oszlopot, egyik a word-nek másik a pdf-nek! és oda irogatod be az aktuális fájlokat fájlkiterjesztéssel.pé walami.doc - valami01.pdf..
php-be meg egsszerüen kiiratod és kész! vagy is hát teszel oda egy link-et a kiiratáshoz! -
attis71
tag
Sziasztok!
Szeretnék mysql adatbázisba pdf és word dokumentumokat tenni, ezt egy webszerveren futtatni. Majd PHP segítségével lekérdezni, lehet úgy írni lekérdezést, hogy pdf-ben kapjak viszza minden lekérdezést. Gondolom, ez valahogy úgy müködik, hogy Pl.: pdf dokumentumot átalakítja mysql adatbázissá, majd lekérdezéskor vissza konvertálja pdf fájlnak. Ez így működik?
Üdv attis71
-
Jester01
veterán
-
anjani182
őstag
válasz
Jester01 #588 üzenetére
Attacholtam! Most az xy számlázó program sql serverében van 2 adatbázis, ha átnevezem a beattacholtat, akkor sem indul a program, ezért gondoltam, hogy át kellene importálni a mentést az üres adatbázisba!
Vagy hogy tudom megadni, hogy az uj beattacholt adatbázisból dolgozzon az mssql server?! Nem értek hozzá, ezért lehet hogy már működnie kellene, csak valamit nem jól csinálok
MOD: közben a kiexportált fájlbol akartam importálni, ugyanugy ugyanaz a hiba!
-
anjani182
őstag
válasz
Sk8erPeter #586 üzenetére
Egyelőre úgymond, egymáson akartam importálni, exportálni...tehát volt a szűz adatbázis, ami most üres, nincs benne adat, beattacholtam a régit, volt ez a kettő, és akkor az egyiket a másikra akartam importálni, így nem ment!
Most kiexportálom egy új .mdf-be, és onnan majd megpróbálom beimportálni a másikba.
Az exportálás egy új .mdf-be most sikeres!
-
Sk8erPeter
nagyúr
válasz
anjani182 #585 üzenetére
Már magánál az exportnál is hibák vannak? Fájlba is próbáltad exportálni a tartalmat? Mert akkor esetleg lehetne azt is csinálni, hogy phpmyadmin felületen SQL-parancsként végrehajtod az exportált fáljban található utasításokat (sima szövegszerkesztővel megnyitva és kimásolva onnan) - mármint ott, ahol importálni kéne. Én legalábbis így csináltam, amikor exportáltam adatbázist, igaz, az nem volt egy hatalmas adatbázis.
-
anjani182
őstag
válasz
Sk8erPeter #584 üzenetére
Közben sikerült letölteni a fullos verziót, próbáltam export-importot, nem fut végig, hibákat talál
Elsőnek valami duplicate valami, kivettem azt a részt, utána megint hibázott, tehát nem fut le se az export, se az import
Ezt nem értem!
Akkor talál hibákat, amikor a "create a temporary table transfer package for.." részt csinálja!
Megpróbálom hogy a régit "export", az újba meg "import"...hátha
-
-
anjani182
őstag
Üdv!
Nem tudom, hogy jó helyre írok-e, de lenne egy kérdésem.
Adott egy számlázó program, aminek az adatbázisa mssql-ben van. A programban van adatmentési lehetőség, de ez elmaradt. Újra kellett telepíteni a számítógépet, nyilván visszamásolással nem lehet visszatenni az adatokat. Tehát hiába vannak meg az mdf fájlok, a program így nem kezeli. A cég, akitől van a program nem akar segíteni, azaz 18+áfáért, amint átutaljuk küldi az átkonvertált adatbázist, saját formátumú mentési fájlként, ezt eléggé lehúzásnak tartom, vannak más könyvelő/számlázó programjaink és az ők rendszergazdáik mindig segítőkészek, nem a lehúzásra mennek.
Mi a megoldás, hogy a régi adatbázis fusson újratelepítés után? Nem értek hozzá, totál hülye vagyok ehhez...
Van valami beimportálási lehetőség mssql alatt?! Vagy áthelyezés vagy bármi...
Köszi előre is a választ!
-
Bazsesz
őstag
Hali!
Szeretném megkérdezni, hogy adott mondjuk a PELDA tábla, és annak adatait szeretnem a SORBA oszlop 6. karaktere szerint sorrendbe rendezni.
Addig, stimm, hogy SELECT * FROM PELDA ORDER BY ???SORBA??? ASC. Csak azt nem tudom, hogy oda kérdőjeles részhez pontosan mi kerülne?
Remélem, hogy tudja valaki.
Előre is köszönöm!
Üdv: Bazsi
-
ates71
csendes tag
válasz
Sk8erPeter #574 üzenetére
Hali Lementettem az users táblát gondolom abban vannak az adatok,sql mezöbe bemásoltam mire végzett vele ezt irta ki Unknown column 'users.random2' in 'field list'
-
Sk8erPeter
nagyúr
Hali!
Én hasonló probléma esetén exportáltam az egész adatbázis (vagy csak az adott adattábla) tartalmát egy külön sql-kiterjesztésű fájlba, megnéztem a fájl tartalmát szövegszerkesztővel, a szükséges részt kimásoltam, és a phpmyadmin külön SQL-parancs kiadó ablakába bemásoltam, lefuttattam, és tökéletesen működött a korábban md5-tel titkosított jelszavakkal együtt.
Előbb nyilván a táblalétrehozó SQL-parancsot futtattam, aztán a konkrét adatmezőket (értékeket) beillesztő parancsot.
Persze elvileg lehetne az egész adatbázist is átültetni az új oldalra az importálás paranccsal, én szerettem volna külön-külön csinálni.
Működnie kell. Ha mégsem megy valamiért, írd le a hibaüzenetet."Élesben nem merem kiprobalni."
Ha úgyis egy tök új oldalra viszed át az adatokat, akkor miért nem mered kipróbálni? Legfeljebb ha nem jársz sikerrel (valamiért rosszul importálja az adatokat), akkor kitörlöd az új oldalon a létrejött táblákat a phpmyadmin felületen, és kész, mintha nem is csináltál volna semmit.
Semmi kockázatot nem rejt magában, ha úgysincs egyelőre adatbázis az új oldalon. -
ates71
csendes tag
Hello van egy oldalam amit szeretnék más tárhelyre költöztetni,de nemakarom hogy a felhasználoimnak ujra keljen regisztrálniuk.Tehát ha az adatbázist lementem a régi oldalrol akkor csak elég az uj oldalra vissza importálni?Fog ez müködni?Mi a teendö ilyenkor? egy ingyenes tárhelyen probálgattam de nemtudta az adatbázist beimportálni mert hibát irt ki.Élesben nem merem kiprobalni.
-
#95904256
törölt tag
Sziasztok!
Még csak most ismerkedem a MySQL-lel, így egy egyszerű kérdéssel fordulnék hozzátok.
Hogyan lehet összetett elsődleges kulcsot létrehozni?
A feladat az lenne, hogy egy olyan táblát kell létrehoznom amiben az egyik és a másik mező is többször előfordulhat, de a kettő kombinációja mindig egyedi.Mert ugye ez így nem működik:
create table rendelesek_tetelei ( rendeles_szama int not null primary key, rendelt_cikk in not null primary key, rendelt_mennyiseg int );
Hiszen az adott rendelésen több tétel is szerepelhet, illetve ugyanaz a cikk több rendelésen is szerepelhet, de olyan nincs, hogy ugyanazon a rendelésen ugyanaz a cikk többször szerepeljen, így ettől lenne egyedi az azonosító.
Üdv,
Ákos -
cucka
addikt
válasz
Sk8erPeter #567 üzenetére
Válasz a php kérdések topikban, mert ennek semmi köze a mysql-hez.
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #567 üzenetére
ÓÓÓÓ basszus, csak annyit kellett változtatni, hogy átírtam így:
while ($result = mysql_fetch_assoc($query))
És máris tökéletes.
Mondjuk tök érthető, mivel a ciklus meghívása előtt még nyilván 1-et kapott a $result eredményül. Tehát a while ciklusban folyamatosan 1-et érzékel, annak értéke nem változik meg.Thx!
-
Sk8erPeter
nagyúr
hát igen, erre gondoltam én is, de én úgy értelmeztem, hogy a mysql_fetch_assoc addig ad 1-et eredményül, amíg egyáltalán van mit lekérdeznie. Ezek szerint rosszul gondoltam?
A while(!$result)-tal sem megy - szerk.: mondjuk ezzel nyilvánvalóan nem megy-, hogyan kellene átírni? Tehát mikor lesz 0 az értéke?
Vagy mitől állna meg a ciklus?
-
cucka
addikt
válasz
Sk8erPeter #565 üzenetére
while ($result)
Ebben a sorban a feltétel mindig igazra értékelődik ki, ezért kerül végtelen ciklusba.
-
Sk8erPeter
nagyúr
Hali!
Valamilyen oknál fogva végtelen ciklusba kerül a MySQL adatbázis lekérése, eddig konkrétan csak egyetlen sor van az adattáblában, annak a megjelenését ismételgeti folyamatosan a böngésző.
Rá tudnátok nézni a kódra, hogy mi lehet vele a gáz?
A "kepek" adattábla "menupont" értékétől függően kéri le az adatot, egyelőre csak a kép elérési útját kérem le, amely a "kep_200" oszlopban tárolódik.$parancs = "SELECT * FROM kepek WHERE menupont = '$menupont'";
$query = mysql_query ($parancs)
or die ("Nem lehet lekérni az adatot a MySQL-táblából.<br />Hiba: ". mysql_errno() . "\n\r". mysql_error() ."<br />");
echo "<div><table>";
$result = mysql_fetch_assoc($query)
or die ("Para van! Assoc fv.-nél: ". mysql_errno() . "\n\r".mysql_error()."<br />");
while ($result)
{
print "<tr><td>
<img src=".$result['kep_200']." />
</td></tr>";
}
echo "</table></div>";Lehet, hogy valami egyértelmű kerülte el a figyelmem, segítség!
Köszi! -
tildy
nagyúr
ma nagyon gyenge vagyok sqlből segítségeteket kérném.
Van egy lista, amelyben cikkid-k vannak, cimkenevek, meg hogy mennyi találat van rá.
szeretném a legtöbb találatot tartalmazó 100 id-t listazni , cimkenev szerint abc sorrendben.
Így próbáltam :SELECT id,TagName, sumart FROM tags order by sumart DESC,TagName ASC LIMIT 0,100
de ez nem jól adja ki....
mondjuk két sql lekéréssel már menne talán, de egyben jobb lenne :SELECT id FROM tags order by sumart DESC LIMIT 0,100
Ezt bele egy tömmbe, aztán meg SELECT id,TagName, sumart FROM tags where id in (előző select ereménytömbje) order by TagName ASC
-
Tottu
senior tag
Üdv!
Akadt egy kis gondom a Derby adatbázis-kezelő rendszerrel mégpedig az, hogy hogyan lehet a karakterkódolást beállítani? Már az elején elakadtam mivel sehol nem találtam olyat, hogy hogyan lehet beállítani az adatbázis létrehozásakor a kódolást.
Végül így hoztam létre:
connect 'jdbc:derby:myDB;create=true;user=admin;password=admin';Ezt követően megpróbáltam létrehozni egy táblát:
CREATE TABLE USERS (
...
...
...
) DEFAULT CHARSET=utf8 COLLATE=utf8_bin;Erre a következő hibaüzenetet kaptam: Szintaktikai hiba: Encountered "DEFAULT" at line ... (a CHARSET-et se ismeri fel)
A kód helyes mivel WAMP-on is kirpóbáltam és ott szépen létrehozta a táblát.
Valakinek van ötlete, hogy hogyan lehetne beállítani a karakterkódolást?
-
VladimirR
nagyúr
mysql> explain extended SELECT posts.topic_id, COUNT( posts.num ) AS num, postnum FROM posts INNER JOIN topics ON posts.topic_id = topics.topic_uid GROUP BY topic_id HAVING num != postnum;
+----+-------------+--------+------+------------------+---------+---------+----------------------------+--------+---------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------+------+------------------+---------+---------+----------------------------+--------+---------------------------------+
| 1 | SIMPLE | topics | ALL | PRIMARY | NULL | NULL | NULL | 104148 | Using temporary; Using filesort |
| 1 | SIMPLE | posts | ref | PRIMARY,topic_id | PRIMARY | 3 | ph_search.topics.topic_uid | 19 | Using index |
+----+-------------+--------+------+------------------+---------+---------+----------------------------+--------+---------------------------------+
2 rows in set, 1 warning (0.02 sec) -
VladimirR
nagyúr
az egyik szerverhez nem ferek hozza, csak a web-en lathato forumhoz, az adatokat egy crawler gyujti, igy a megszamlalas nem igazan lehetseges
jelenleg ugy nez ki a dolog, hogy egy crawler vegigszalad a forumtemak felsorolasan (ez eleg gyorsan megvan) es frissiti a topics tablat, beleetve a hozzaszolasszamokat is
ezt kellene valahogy (az en fenti peldamnal gyorsabban) osszevetni a meglevo hozzaszolasok szamaval -
cucka
addikt
válasz
VladimirR #556 üzenetére
Ha csak annyit kell eldönteni, hogy kell-e frissíteni, akkor miért nem számolod meg egyszerűen a topikokat és a hozzászólásokat mindkét szerveren?
Gondolom mindent kell szinkronizálni, tehát ha a hozzászólások száma különbözik, id szerint meg fogod tudni mondani, mely sorokat kell áthozni.. -
VladimirR
nagyúr
van ket tablam, az egyikben forumtemak fejlecei (cim, inditotta, elso, utolso post, hozzaszolasszam, lekerdezesszam, etc), a masikban a hozzaszolasok
mivel ez nem sajat forum, hanem egy "mirror", ezert figyelni kell, megvan-e minden hozzaszolas egy-egy topic-bolen arra gondoltam, megszamolom a post-okat, topic-onkent osszehasonlitom a topics tabla tartalmaval, s ha nem egyezik a szamolt hozzaszolasszam a topics tabla hosszaszolasszam oszlopaval, akkor frissitek
hogyan lehetne ezt egyszeruen, gyorsan megcsinalni?
az alabbi tobb, mint 20 percig tart:SELECT posts.topic_id, COUNT( posts.num ) AS num, postnum FROM posts INNER JOIN topics ON posts.topic_id = topics.topic_uid GROUP BY topic_id HAVING num != postnum;
(posts.topic_id a topic azonositoja, topics tabla elsodleges kulcsa, posts.num a hozzaszolas sorszama, postnum pedig a topics tablaban tarolt topic-onkenti hozzaszolasszam)
ha jol sejtem, az a gond, hogy elobb csinalja meg a join-t, s csak utana a group by-t
ra lehet venni valahogyan a mysql-t (egy lekerdezesben), hogy elobb menjen a group by (az magaban megvan eleg gyorsan), s csak utana, a megmaradt sorokra eroltesse a join-t? -
Louloudaki
aktív tag
válasz
Louloudaki #554 üzenetére
ne mondjátok már, hogy nem tudtok ilyet, mert mindenki kézzel gyárt le többszáz bejegyzést pl vendégkönyv teszteléséhez...
-
Louloudaki
aktív tag
kellene nekem olyan progi ami tesztadatokkal feltölt mysql adatbázist, a queryt txt fájlba menti és nem próbál csatlakozni a dbhez. data spawner nem jó, mert a távoli db szerverhez nem tudok becsatlakozni, txt-t meg nem tudok kirugdosni belőle, pedig jó az a progi. most kéne hirtelen és itt nincs fejlesztő környezet a gépen (nem is lehet)
a mező típusa meghatározható legyen pl ha van egy "nev" mezőm akkor megadhassam hogy emberi nevekkel töltse fel, ne asdfasdf jellegű szeméttel stb. -
Kommy
veterán
Igen lefutott rendesen, de a furcsa az hogy ha azona gépen próbálom amin van a mysql szerver ás megadoma hoszt ip címét akkor access denied van viszont ha helyette localhost-ot írok akkor beenged, viszont a távoli gépről nem is látja a server 2003-as hiba , telnetelni tudok a 3306-os porton.
Nézem a SELECT * FROM `user` lekérdezés eredményét és ami az én felhasználóm ott mindenhol N van lehet ez lesz a hiba, vagy nem tudom.
Az is jó lenne ha valaki leírná lépésről lépésre, hogy mit kéne csinálni is akkor biztos nem rontanám el, -
Kommy
veterán
Sajnos még mindig nem érem el távolról a mysql- adatbázist, kiadtam ezt a parancsot mysql -u root -p ként belépve a mysql-be :
grant all on enomalism2.* to enomal@'192.168.1.%' identified by passwd;
ezután újraindítottam a mysql daemont, és ezután kiadva a :
mysql -u enomal -h 192.168.1.121 -p enomalism2
parancsot azt kapom, hogy ERROR 1044 (42000): Access denied for user 'enomal'@'192.168.1.%' to database 'enomalism2'. Viszont ha ai ip cím helyére localhost-ot írok akkor beenged.
A my.cnf-ben beállítottam a bind_address-t 192.168.1.121-re. -
jss
aktív tag
-
jss
aktív tag
illetve rosszul írtam:
AUTO_INCREMENT=20
ebben az esetben 20-tól kezdődik a számolás, vagy 20-asával számol? -
PazsitZ
addikt
ha létezik egy sor a relációban, ahol az idegen kulcsban levő attribútumok valami adott értékeket vesznek fel, akkor léteznie kell a hivatkozott relációban is egy olyan sornak, ahol a hivatkozott attribútumok értékei ugyanezek.
lekérdezésben kapcsolatot idegen kulcs nélkül is létrehozhatsz.
[link]AUTO_INCREMENT
[I]To let the AUTO_INCREMENT sequence start with another value, use the following SQL statement:ALTER TABLE Persons AUTO_INCREMENT=100
[/I]
Az egynél többel növelést nem tudom még sosem próbáltam. A SQL Server esetén ír róla, alapból nem.
-
jss
aktív tag
Az volna még a kérdésem, hogy ha azt írom, hogy increment by 25, akkor 25-ről indul a számolás, vagy 1 ről indul és 25-el nő?
-
jss
aktív tag
Az volna a kérdésem, hogy ha mysql tábla létrehozásakor az adott táblában idegen kulcs van, akkor kell -e azt jeleznem, elég ha csak felveszem mezőnek és nem írom oda hogy foreign key, vagy ha ezt nem teszem meg, akkor nem lesz kapcsolat a táblák közt?
-
Kommy
veterán
Valiki tudna nekem abban segíteni, hogy mit kéne beállítani, hogy elérjem távolról is a mysql szervert és localból is. A felállás van egy linuxos gép amin fut a mysql szerver innen be is tudok jelentkezni, van egy másik linuxos gép innen viszont nem (innen is kéne tudni írni az adatbázisba) a két gép között egy switch van látják egymást a gépek.
-
tkazmer
addikt
lehet mysql-ben a felhasználóknak táblák helyett nézetekre adni select(vagy akármilyen) jogot?
-
Louloudaki
aktív tag
válasz
Atti1112 #538 üzenetére
programot elindítod, ablakot áthúzod kettes moncsira, és ott bezárod. onnantól kezdve minden programindításkor oda fog megnyílni. nálam legalább is ezt csinálja. persze amíg át nem rakod az egyesre egyszer az ablakot és ott is zárod be, mert akkor onnantól kezdve megint oda nyílik mindig. asszem restart után is megmarad így, bár fene tudja, nem nagyon kapcsolom ki a gépemet.
-
Atti1112
aktív tag
válasz
Louloudaki #537 üzenetére
sorry. elnéztem a topicot
Egyébként ha már ide került : tudod a választ esetleg ?
-
Louloudaki
aktív tag
válasz
cellpeti #535 üzenetére
cellpeti: google -> mysql tutorial
o'reilly sorozatból bármi ami mysql témával foglalkozik.
de ha mysqlt akarsz tanulni, kell hozzá valami szerver oldalon futó script nyelv, ami kommunikál az adatbázissal és adatokat kér le/ír be, pl phpAtti1112: ezt lehet nem itt kellett volna megkérdezni, semmi köze mysql-hez.
-
Atti1112
aktív tag
Szeva mindenki ! Egy olyan kérdésem lenne : hogyan lehet megoldani ,hogyha elindítok egy programot ,akkor az a kiterjesztett (2) monitoron induljon el ? Mindig. Ötlet ? (példa : Egy wordöt elindítva az asztalról parancsikonból (1) ,mindig a másik (2) monitoron induljon el.) ? (XP sp3)
-
cellpeti
nagyúr
Sziasztok!
Szeretném megtanulni a MySQL-t. Milyen könyvet ajánlotok hozzá és milyen programot?
-
Drizzt
nagyúr
Volna két kérdésem, ami egy, de kettő.
Szóval van egy táblám, amiben volt egy szöveges érték, legyen mondjuk cím. Mostantól viszont külön címtáblában tárolnám a címet, mert lenne hozzá még vagy 5 mező. És ID alapján akarom azonosítani a címeket a korábbi címük helyett. Megcsináltam a cím táblát, be is másoltam a distinct címeket. Most viszont szeretném az eredeti táblába bevinni az id-ketz, s nem sikerül a dolog. Php mysql-queryvel próbálkozok. Kb. ilyen lekérdezéssel: először is select cim, id from cím. Aztán ennek minden során végigmegyek, s szeretném az eredeti táblát updatelni, valahogy így: update eredeti set cimid=cimid(az aktuális mysql_assoc tömb id eleme...) where cim.cim=eredeti.cim(pl.: xy utca, mert mysql fetch assocon végigmegyek...)). Namost mivel varchar van, utf8 encodinggal, ezért tök 0-kat kapok. Mi lehetne a megoldás? Próbáltam az egyenlőség helyett a like-ot is, de semmi eredmény. Vagy esetleg mysql-ből is el tudom érni a kívánt eredményt valahogy.
-
emitter
őstag
képek adatbázisban: tf, hogy átlagosan egy felhasználó 3 képet tölt fel (bár 10 a max megengedett, de nem fognak ennyit). Egy kép nem lehet több 200kB-nál. És kb 100-200 felhasználóm lesz maximum. Így 200*3*200k=120MB lesz a képek összmérete. Ez mennyire terheli meg az adatbázist? Most kell eldöntenem, hogy hol akarom táolni a képeket..
-
cucka
addikt
Mindkettő helyes, de az első talán szebb.
A lényegi különbség, hogy a tömb indexében hogyan fűzöd össze a stringeket. Igazából tökmindegy, a lényeg, hogy a végeredmény is string legyen.(#526) emitter
A képek adatbázisban való tárolásánál nem csak az az előny, hogy könnyebb lementeni. A lényeg, hogy sokkal elegánsabb, ha nem választod szét a képeket a többi adattól, mert ugye mindkettő ugyanahhoz az adatstruktúrához tartozik. További előny, hogy nehezebb hibásan megírni. File-os tárolásnál a könyvtár és filenevek generálását azért eléggé át kell gondolni, hogy ne legyen benne potenciális hibaforrás.
A hátrány, hogy bizonyos adatmennyiség fölött lassíthatja az adatbázis működését a sok blob adat, szóval ügyesen kell megtervezni. -
emitter
őstag
bocs, de elbizonytalanodtam a sztringindexekes tömböknél.. ez így helyes? A fordító elfogadja, de
$query = "INSERT INTO tmp_foto (szallas_id, fajlnev, comment) VALUES ( '$id', '{$formData['image'.$id]}', '{$formData['comment'.$id]}' )";
Vagy pedig így helyes?
$query = "INSERT INTO tmp_foto (szallas_id, fajlnev, comment) VALUES ( '$id', '{$formData['image'."$id"]}', '{$formData['comment'."$id"]}' )";
-
emitter
őstag
Kisméretű képeket adatbázisban érdemes tárolni? Ennek az az előnye meglenne, hogy az adatbázis lementésével a képek is mentődnének, nem kéne még külön a könyvtárukat lementeni a szerverről..
-
emitter
őstag
ja, a join eléggé homály volt, most már látom
közben ráakadtam egy kis vizuális szemléltetőre, az is segített megérteni.
És köszi a tömbindexes magyarázatot is, ezt sem tudtam eddig. -
cucka
addikt
Join:
A join-oknak érdemes lenne utánaolvasnod, totál téves, amit írtál.
A korábbi hozzászólásomban ott volt egy sql lekérdezés. Az annyit csinált, hogy a szállás táblához hozzácsapta a megye tábla név mezőjét is. Tehát nem kell külön lekérdezned az összes megye nevét, vagy minden egyes szálláshelyre lekérni a nevet, mert annak az egy lekérdezésnek az eredményében ott lesz.
Próbáld megérteni azt a lekérdezést, cseréld ki a mezőneveket a megfelelőre és nézd meg, mi lesz az eredménye.Viszont az echo"..."-ban lévő tömbindexelésnél meg csak úgy működik, ha elhagyom az egyszeres idézőjeleket, így:
Megint csak nem jó, méghozzá azért nem, mert egybefolyik nálad a tömb indexelés szintaktikája és a stringek megadásának a szintaktikája.1. PHP-ban string-eket kétféleképpen lehet megadni: sima és dupla idézőjelekkel. A dupla idézőjeles megadás annyiban tér el a simától, hogy az abban található egyszerű változókat kiértékeli.
2. Dupla idézőjellel megadott string-ben a "komplex" változókat (pl. tömb egyik eleme, ahogy a példádban van) úgy tudod kiértékeltetni, hogy { } közé rakod.
3. Ha a tömb indexe string, akkor indexbe mindig stringként kell írni.
4. Ha egy string-be egy függvény visszatérési értékét akarod berakni, vagy egyszerűen csak sima idézőjelesen akarod megadni, akkor használj összefűzést (ez a . operátor)
5. HTML-ben az egyes elemek tulajdonságai mindig dupla idézőjelekben vannak. Tehát a példádban a <span style="float:left"> lenne a helyes.Példák a string-ed helyes megadására:
Sima behelyettesítéssel. Figyeld meg, hogy a dupla idézőjeles string-ben a dupla idézőjeleket le kell zárni a \ karakterrel. Ez sima idézőjeleknél is így van.
echo "<span style=\"float: left;\">{$row['nev']}</span>";
String összefűzéssel:
echo "<span style=\"float: left;\">".$row["nev"]."</span>";
Sima idézőjelekkel:
echo '<span style="float: left;">'.$row['nev'].'</span>';Ja, és a fentiek ellenére a te kódod is működik, csak egyrészt rossz, mert kihasználja a php gyenge ellenőrzését, másrészt ilyen stílusú kódok legtöbbször elég sok notice-t vagy warning-ot eredményeznek. Ezek ellenére a php kód le fog futni, de a jó kód az, ami nem generál ilyeneket.
-
emitter
őstag
join:
ahogy megértettem, ez összepárosítja a szallas táblában levő megye_id-kat a megye táblában levő megyenevekkel. Akkor úgy érdemes csinálnom, hogy egyetlen egyszer join-olok, az eredményként kapott megyeneveket berakom egy php-tömbbe, amiből aztán kedvemre válogatok (aszerint, hogy az adott id-jű szálláshoz milyen megye_id tartozik?)szintaktika:
1. igen, lemaradtak az idézőjelek, bár így is működik (de javítottam). Viszont az echo"..."-ban lévő tömbindexelésnél meg csak úgy működik, ha elhagyom az egyszeres idézőjeleket, így:echo "<span style='float: left;'>$row[nev]</span>"
2. értem, azt hittem, ennek így mennie kellene...
3. javítottam az ellenőrzést
-
cucka
addikt
Az indexnek (idegen kulcsnak) mi pontosan az értelme?
Bizonyos esetekben gyorsít. Olvass lejjebb.Ez akkor is működne, ha a megye_id nem lenne idegen kulcs, csak egy sima mező, nem?
Igen.
Viszont ha jól látom, azt csinálod, hogy a szállás tábla összes sorára lekéred a megye táblából az adott megye_id-hez tartozó nevet. Na ezt leginkább join-okkal szokás megoldani, mert a lényeg, hogy kevés és gyors query-t adjunk ki az adatbázisnak. Plusz itt már jól jönnek az idegen kulcsok is..Például
select szallas.id id,szallas.nev nev,szallas.cim cim,megye.nev megye_nev from szallas left join megye on (szallas.megye_id=megye.id)
Természetesen azt nem tudom, milyen oszlopaid vannak a szállás táblában, de a lényeg remélem érthető így is. Próbáld ki, nézd meg, mit kapsz eredményül.
A másik, hogy miért nem működik az a szintaktika, hogy:
Azt nem tudom, miért nem működik, de valóban nem. Igazából abban az egy sorban 4, azaz négy hiba van
1. A tömb indexei vagy számok, vagy string-ek. Nálad egyik sem, mert lemaradtak az idézőjelek ahhoz, hogy string index legyen.
2. Ha függvény visszatérési értéke tömb, akkor annak nem tudod ilyen formában elérni valamelyik mezőjét.
3. A mysql_fetch_assoc nem mindig tömbbel tér vissza, semmi nem garantálja, hogy létezik az a ['nev'] mező, amire hivatkozol. Ez esetben a minimum, hogy kapsz egy warning-ot, de valószínüleg további problémát is okozhat (mert a $megye változód így null marad)
4. A mysql_fetch_assoc függvénynek csak egy paramétere van. A második paramétert a mysql_fetch_array-nél használjuk és arra jó, hogy megmondja neki, hogy legyen indexelve az eredményül kapott tömb - számokkal, mezőnevekkel vagy mindkettővel. A mysql_fetch_assoc() ugyanezt csinálja, de kizárólag mezőnevekkel indexel. -
emitter
őstag
Az indexnek (idegen kulcsnak) mi pontosan az értelme?
Dolgozom a szallas tábla adataival, ahol a szallas tábla mezői között van egy idegen kulcs a megye tábla id-jára. A megye táblában van egy 'nev' nevű mező, ez kell nekem szallas tábla feldolgozása során. Jól csinálom?
Ez akkor is működne, ha a megye_id nem lenne idegen kulcs, csak egy sima mező, nem?if ( !($tmp_result = mysql_query("SELECT nev FROM megye WHERE id=$row[megye_id]")) ) {
die("Error: " .mysql_error());
}
$megye = mysql_fetch_array($tmp_result, MYSQL_ASSOC);
$megye = $megye[nev];A másik, hogy miért nem működik az a szintaktika, hogy:
$megye = mysql_fetch_array($tmp_result, MYSQL_ASSOC)[nev];
Köszi!
-
emitter
őstag
Amikor auto timestamp-et akarok beállítani phpmyadminnal, ezt kapom, de miért?
SQL query:
ALTER TABLE `tmp_szallas` CHANGE `frissitve` `frissitve` DATE ON UPDATE CURRENT_TIMESTAMP NOT NULL
MySQL said: Documentation
#1294 - Invalid ON UPDATE clause for 'frissitve' column -
cucka
addikt
A mysql szervernek ezzel mondod meg, hogy az adatbázis kapcsolaton milyen kódolással fogja megkapni a szöveget. (Nem csak a stringeket, hanem tulajdonképpen minden input-ot)
Pl. amikor elküldöd a szervernek a "Bács-kiskun" szövegrészletet, akkor azt nem tudja automatikusan kideríteni, hogy milyen karakterkódolásban küldted, ugyanis ahogy láttad, utf8 mellett más kódolásokkal is értelmezhető az adott bináris adathalmaz. -
emitter
őstag
köszi cucka, kész a struktúra
most a karakterkódolással gyűlt meg a bajom. Ahogy írtad, mindenhol utf8_general_ci-re állítottam a kódolást:
MySQL charset: UTF-8 Unicode (utf8)
MySQL connection collation: utf8_general_ci
az adatbázis, a táblák és a mezők is ugyanilyen kódolásúak.Php-ból próbaként csináltam egy insertet, a php-fájl és a weblapom utf8-as, a böngésző is felismeri - mégis pl. Bács-Kiskun helyett Bács-Kiskun az eredmény
Próbáltam a phpmyadminban mindent átállítani utf8_hungarian_ci-re, majd utf8_unicode_ci-re, semmi változás..
-
cucka
addikt
ha egy szállásnak sok jellemzője van, pl. fürdő, konyha, étkezési lehetőség, sportolás, stb. akkor ezeket tegyem bele nyugodtan a 'cim' táblába, vagy csináljak nekik egy külön táblát mondjuk 'adat' névvel?
Tedd bele nyugodtan, minden szempontból jobban jársz így, mint ha szétdarabolnád a táblát.Akkor ebben a táblában az id mező csak simán pr. key, vagy foreign key a 'cim' tábla 'id' mezőjére?
Ahogy javasoltam, az alap, hogy minden táblában van egy id mező, ami minden esetben auto_increment és primary key tulajdonságokkal rendelkezik. Ez egyébként nem kötelező, van aki máshogy csinálja, de szerintem sokkal előnyösebb mindenhova automatikusan berakni azt az id mezőt..Először is: minden képet külön sorban tárolj. Így nem szúrsz ki magaddal, és gyakorlatilag bármely szálláshelyhez tetszőleges számú képet hozzá tudsz majd rendelni.
A fotó tábla ezek szerint:
Minden képnek van azonosítója, ugyanakkor azt is akarjuk tudni, hogy az adott kép melyik szálláshoz tartozik, ezért be kell venni a táblába a szállás_id nevű mezőt. Ez a mező foreign key, méghozzá azért, mert egy másik táblában található indexelt mezőhöz köthető. Itt konkrétan a szállás_id a szállás tábla id mezőjével van összekötve. Például az 5-ös azonosítójú szálláshelyhez a fotó táblában azok a sorok tartoznak majd, amelyeknél a szállás_id mező értéke 5.tehát a fotó tábláa szerkezete:
id (primary key, auto increment)
szallas_id (foreign key)
további mezők, amire szükséged van (elérési út, kép címe, stb.)Remélem érthető volt, ha nem, kitalálok valami példát.
-
emitter
őstag
még egy utolsó kérdés a szerkezethez:
ha egy szállásnak sok jellemzője van, pl. fürdő, konyha, étkezési lehetőség, sportolás, stb. akkor ezeket tegyem bele nyugodtan a 'cim' táblába, vagy csináljak nekik egy külön táblát mondjuk 'adat' névvel?csináltam külön egy 'foto' nevű táblát, amiben szállásonként 5db képet lehet tárolni, ezért van egy 'id' mezője, és 5 mező 'foto1'..'foto5' (ezek majd a képek elérési útját fogják tartalmazni). Akkor ebben a táblában az id mező csak simán pr. key, vagy foreign key a 'cim' tábla 'id' mezőjére?
-
cucka
addikt
válasz
Louloudaki #509 üzenetére
Igen, ez pontosan így van.
-
Louloudaki
aktív tag
akkor ez azt jelenti, hogy ha van egy nagy látogatottságú weboldalam, pl fórum, és 2 ember ugyanabban a tizedmásodpercben postol hsz-t ugyanabba a táblába, és ugyanabban a pillanatban egyszerre 2 sort kéne insertelni, és autoincrementes az id, akkor simán megoldja a dolgot a db, egyik id lesz 22 a másik meg 23?
-
cucka
addikt
A megyék táblája valahogy így nézzen ki
id (primary key)
nevA szálláshely tábla pedig
id (primary key)
megye_id (foreign key)
nev, leiras, stb.Megye szerinti keresésnél a szálláshely táblát fogod megye_id szerint szűrni.
(#506) Louloudaki
Azt írtad, hogy az auto_increment php-ből történő szimulálása lassabb és bonyolutabb, mint a mysql-es. Valójában a probléma nem a sebességgel vagy a bonyolultsággal van, hanem azzal, hogy a php-s megoldás alapvetően nem jó, mert két azonos időben érkező kérés esetén előfordulhat, hogy hibásan működik. Ráadásul egy bonyolult rendszerben elég csúnya dolog ilyen jellegű hibákat keresni, mert ugye hiába próbálgatod, az esetek 99.99%-ában azt fogod látni, hogy minden hibátlanul működik.
Megkereshetsz privátban, de valószínüleg csalódást fogok okozni, a látszattal ellentétben egyátlalán nem érzem magam nagy db gurunak. -
emitter
őstag
Ez egy szálláshely-adatbázis lesz. Ha egy adott megyére akarom majd szűkíteni a találatokat, akkor érdemes a megyéknek egy külön táblát készíteni, ahol idegen kulcs az id - vagy elég, ha a címeket tartalmazó táblában futom végig a megye-oszlopot, és keresem a megfelelő sorokat..?
-
emitter
őstag
válasz
Louloudaki #503 üzenetére
értem, köszi.
akkor pk-nek állítom mindenhol az id-t. Az idegen kulcs mire jó? Kb. 1 éve tanultam ezt a témát, és emlékszem, h volt ilyen kulcs is, csak már nem emlékszem, mikor kellett.
szerk: most már ez is világos, thx cucka :-)
-
cucka
addikt
mező attribútumoknál be kell állítani valamit (unsigned; unsigned zerofill; on update current timestamp), vagy hagyjam üresen?
Attól függ, mire akarod használni azt a mezőt. Az unsigned azt jelenti, hogy a mezőben található számnak nincs előjele (tehát midnig pozitív), az unsigned zerofill ugyanez, csak ott a mezőben található szám elé berak annyi 0-t, ami befér. Az on update current timestamp azt csinálja, hogy amikor kiadsz egy update-et a sorra, az adott mezőbe berakja az aktuális unix timestamp-et. Tehát pl. ha valamilyen hozzászólásnál/cikknél/stb. el akarod tárolni az utolsó módosítás időpontját, akkor arra jó.továbbá, ha van több táblám, amelyeknél az id mező azonos lesz, csak a legelső(nek nevezett) táblában legyen primary key, a többiben foreign-key; vagy mindegyikben prim.key?
Az id mezőt a sorok egyszerű és gyors azonosítására használd. Ebből következik, hogy javaslom, mindegyik tábládnak legyen egy id mezője, amely primary key.
Foreign key akkor jó, amikor két tábla közötti relációról van szó. Tehát pl. van egy személy táblád, benne egy id mező. Van egy hozzászólás táblád, amiben van egy személy_id meződ. Értelemszerűen a két tábla között kapcsolat van, amit az említett mezők valósítanak meg. Ilyenkor a személy_id mezőre kell a foreign key.És az auto_increment mire jó, hogyan működik?
Az auto_increment az tulajdonképpen egy szekvenciát jelent. Kb. úgy képzeld el, mint egy változót az adatbázisodban, ami minden lekérdezésnél megnöveli 1-el az értékét.Főleg a táblák id mezőjénél használod. Beállítod az id mezőre, hogy primary key és auto_increment, ekkor minden egyes új sor beszúrásánál az id mező automatikusan egy értéket, ami szigorúan egyedi az adott mezőben és mindig nagyobb, mint az előzőleg beszúrásnál kapott érték. (Tehát az azonosítók szigorúan monoton növekvő sorozatot alkotnak)
(#503) Louloudaki
Az auto_increment php-ból történő szimulálása elsőre nagyon rossz ötletnek tűnik. A mysql által megvalósított auto_increment az atomi műveletnek számít, míg php-ból lekérdezni a legnagyobbat majd 1-et hozzáadni az nem atomi művelet.
Ha egy időben jön két ilyen kérés a szerverre, akkor a mysql megoldása működik, a php-ból megvalósítottnál pedig előfordulhat, hogy két sor ugyanazt az azonosítót kapja. (Ami primary key-nél rögtön hibát is fog jelenteni) -
Louloudaki
aktív tag
unsigned szám típusú mezőknél kell, ha biztos nem lesz negatív szám
a current timestamp dátum típusú mezőknél az aktuális dátumot veszi alapból
auto increment magától növeli a mező, pl id értékét minden új felvitelnél. de növelheted phpval is, kérdés mire jó, hogy lekérdezed az aktuális legnagyobb id-t, majd hozzáadsz egyet és úgy rögzíted az új adatokat, mikor ezt a db megcsinálja magától rövidebb idő alatt 1 lekérdezést spórolva.most ezt hogy érted, hogy több táblánál azonos az id mező? minden táblába kell egy primary key ami általában az id szokott lenni.
cucka, hasznos volt a link, köszi én is ;)
-
emitter
őstag
köszi!
mező attribútumoknál be kell állítani valamit (unsigned; unsigned zerofill; on update current timestamp), vagy hagyjam üresen?
továbbá, ha van több táblám, amelyeknél az id mező azonos lesz, csak a legelső(nek nevezett) táblában legyen primary key, a többiben foreign-key; vagy mindegyikben prim.key? És az auto_increment mire jó, hogyan működik? Végülis php-ból is inkrementálhatom a egy új bejegyzéskor az id értékét, nem?
Új hozzászólás Aktív témák
Hirdetés
- Iphone 13 Pro Max 128 GB Graphite garanciás, újszerű
- Asus A15 FA506NC 15.6" FHD IPS Ryzen 5 7535HS RTX 3050 16GB 1TB NVMe magyar vbill gar
- ASUS TUF Gaming Monitor
- 16" Macbook Pro M4 Max 48 GB RAM, EZÜST, HU keyboard- 1 TB SSD 2025.11.11-ig gari
- Új, bontatlan SteelSeries Apex Pro TKL Wireless Gen 3 (2025) UK/ISO
- BLUESUMMERS NVMe SSD adapter
- Bomba ár! HP EliteBook 840 G5 - i5-8G I 8GB I 128GB SSD I 14" FHD I HDMI I Cam I W11 I Gari!
- DELL PowerEdge R730xd 26SFF rack szerver - 2xE5-2680v3 (24c/48t, 2.5/3.3GHz), 64GB RAM, 10G, H730
- Külföldi csomagszállítás Packeta csomagpontokon keresztül!
- BESZÁMÍTÁS! 32GB ADATA XPG Lancer RGB 7200MHz DDR5 garanciával hibátlan működéssel
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest