igge, van....mysql :-)
a másik meg hogy ez egy adott dolog, és nem a hasamraütve találtam ki ezt az adattárolási formát.... :-) ha én csináltam volna, énsem igy csináltam volna....de nem én csináltam :-)
Akkor eloszor a kulcs kerdesre valaszolj. Van-e valamilyen sql szerver ahova az adatokat betolthetned? Amugy itt latthattad a dmb-et az iment volt rola szo, az is jobb megoldas mint mondjuk csak siman 1 file-ba :-el elvalasztva :)
"Ha van egy installald mysql-ed, akkor a load infile paranccsal egyszerüen beolvasod, field limiternek ':'-t adsz meg, es a szokasos SQL-utasitasokkal utana azt csinalsz az adatokkal, amit jonak latsz."
na, akkor hogy is van ez kéremszépen? :-))
"Eddigi tapasztalataim szerint ez ugy kb. 400-500 kB-nal nagyobb fajlok eseten gyorsabb megoldas, mint PHP-ben a Bandi-T altal javasolt megoldas."
hát...ez egy kb 800k-1M-ás file...tehát ez lesz a jó megoldás....de hogy is? :-)
Ok ok köszi a sok segítséget,nekem csak lehelletnyi kulcs-érték adattárolásra kell,hogy ne kelljen szuttyognom végigolvasás,csere,izé bizékkel a xxi században,de úgy látszik bele kell szántanom jobban magam,pedig könnyíteni szerettem volna szal megnézem,igaz igaz van egy filenev.lock vagy valami fájl még mellette..köszi még1x!!!
jaja, igy vala :)
Kiegeszitenem meg azzal hogy dbm-et irasra nyitas elott flock-al iras vedette tenni, majd ha megtortent az iras feloldani. Mert tobb egyideju keres nem mehet a dbm-hez. De ezt irjak is ( mondom ezeket a kerdezonek :) )
Can't be writer - az hiszem dbm fájlt egyszerre legfeljebb csak egy program nyithat meg írásra.
Nem lehet, hogy egyszerre több program is megpróbálta megnyitni írásra, és a második (többedik) kapja ezt az üzenetet?
Nem lehet, hogy egy korábbi írásra megnyitás után a megnyitó processz úgy lépett ki, hogy nem zárta le a fájlt, és bejelölve maradt, hogy az már nyitva van írásra?
Nem lehet, hogy a PHP scriptnek unix szinten nincs írási joga a fájlhoz?
Ja, és:
"Note: When safe mode is enabled, PHP checks whether the files or directories you are about to operate on have the same UID (owner) as the script that is being executed."
Este beírom a kódot,nagyon valószínű,hogy írásra való megnyitáskor generálja ezt,most nem vagyok otthon,csak magamnál:),köszi hogy ilyen gyorsan reagáltál rá maradj vonalban Lokator lécci
Kösz
Valaki tudna valaki segíteni,miért írja ki nekem ezt a hibaüzenetet a PHP gbm ,a file t sikerült létrhozni,a könyvtár jogai 777,és nem tudok írni bele...
Warning: dbmopen_gdbm(crawlers.dbm): 10 [Can't be writer]
Visszavonom: nem.
Csak azért gondoltam, mert a session cookie-t nem is írja felül az új setcookie parancs, így a régi érvényben volt, amikor én azt hittem, már az új van engedélyezve...
hat, pedig ez teljesen jo, esetleg ha ugy van beallitva hogy setcookie("userid", $user); es igy session kuki lesz belole, tehat addit tart amig a bongeszo nyitva van, akkor alapcsonyabb biztonsagi szinten ( ez de szar:), nem neked irom csak ez rotlf:) ) is menni fog. Index is csak ilyen session kukikat dobal tobbnyire. Persze kerdes neked mire kell. Ha csak session miatt, tehat csak addig amig user oldalon van, akkor igy jo, de ha emlekezni akarsz a user-re avagy beallitasaira amit a kukiban tarolsz akkor kell az ido is, de akkor meg user legyen ennek tudataban, hogy ha ezt akarja akkor engedelyezni-e kell. Egyebkent is tiszta ostobasag ez az ie meg a kukis kavarasa, raadasul ie6-ba alapbol le is van tiltva minden fele kuki, eh, mind1, ez mar masik tortenet :)
Mostanában ismerkedem a PHP-val. A következő a gondom: cookie-t akarok csinálni. Erre egy parancsot ismerek: setcookie(var, value, expire, path, domain). Ezt alkalmazom is. Csakhogy IE alatt nem hozza létre a cookiet, csak ha egészen alacsonyra állítom a biztonsági szintet, míg mások (pl. az Index) magasabbra állított szint mellett is tudnak cookie-t csinálni.
A felhasználók pedig panaszkodnak, hogy a program azt dobja ki, hogy "Engedélyezze a cookie-kat", miközben minden más oldal tud működni a meglévő beállításai mellett is.
Van erre valami megoldás?
A servert, amin a dolog fut, nem én adminisztrálom, csak megkértek, hogy dobjak rá valami cuccot. De persze ha ott kell valamit állítani, ezt meg tudom üzenni, és átállítják.
Ha van egy installald mysql-ed, akkor a load infile paranccsal egyszerüen beolvasod, field limiternek ':'-t adsz meg, es a szokasos SQL-utasitasokkal utana azt csinalsz az adatokkal, amit jonak latsz.
Eddigi tapasztalataim szerint ez ugy kb. 400-500 kB-nal nagyobb fajlok eseten gyorsabb megoldas, mint PHP-ben a Bandi-T altal javasolt megoldas. Arrol nem is szolva, hogy a szerver eröforrasait kevesbe veszi igenybe :)
Hmm, a felhasználástól függően vagy olvasd be az egészet, és utána mindig iterálj végig rajta és csak a megfelelő rekordokkal végezd el a szükséges műveletet, vagy már beolvasáskor csak a megfelelő rekordokat olvasd be, és utána azokon iterálva végezd el a megfelelő műveletet, vagy rögtön beolvasáskor a megfelelő rekordokra végezd el a műveletet.
Egy fájlt beolvashatszt tömbbe (egy sor - egy tömbelem) a file() függvénnyel. Ez azonban memóriát foglal, nagy fájl esetén ezért nem tanácsolom.
Ilyenkor nyisd meg a fájlt fopen()-nel, és utána fgets() segítségével soronként beolvashatod.
A beolvasott sorról rtrim() segítségével vágd le a sorvéget, majd ezután explode() segítségével vágd fel elemeire a kettőspontok mentén (vigyázat: ez bedöglik, ha valamelyik mezőben is van kettőspont) - ekkor a mezőket tartalmazó tömböt kapsz.
Így már a mezőket külön-külön fel tudod dolgozni, vagy a mezőtömböket belerakhatod egy tömbbe.
Tömbben lehet keresni saját kiértékelőfüggvényt használva: az array_search() az első megfelelő elemet keresi meg és adja vissza, míg az array_filter() olyan tömböt ad vissza, amiben csak a kiindulótömb kiértékelőfüggvény által megfelelőnek minősített elemei vannak benne.
Elég kezdő vagyok a PHP-ban, és eddig csak mysql adatbázisokkal foglalkoztam igazából, de most egy új probléma merült fel: van egy txt file, ami tulképp egy adatbázis... soronként vannak a rekordok, és az 'oszlopok' ugy vannak megoldva, hogy ":"-al vannak elválasztva az adatok...:
1:géza:1084:Budapest:Havasi utca 47:256-84-75
2:jenő:7700:Kecskemét:Jósika utca 8:0687-547-584
3:bori:4400:hajdúszoboszló:bubu utca 7:0633-555-555
...
...
...
és igy tovább...
nomármost...én ezeket az adatokat szeretném szépen szétpakolászni és utánna szürni belőle (pl b-vel kezdődő nevek alapján, vagy 0633-al kezdődő tel. szám alapján..)...jómi? :-)
tudtok erre egy "kifejlesztett" megoldást?
pl hogy egy átmeneti adattáblába beleir, és onnan keres, vagy tömbbe, bár ott nemtom hogy megoldható e eccerüen a keresés....
Szeretném mindkettőtöknek megköszönni a segítséget, végre működik! :)
(Már csak inci-finci dolgokkal szívok, de az már menni fog, remélhetőleg.)
A kutya ott volt elásva, hogy a temporary table-be valami hülye okból mindkét másik táblából akartam keresni, közben oda csak a topik-táblából kell válogatnom.