kléni Posted November 11, 2011 Posted November 11, 2011 Hát akkor ezt benéztem Erre én is a SESSION-t ajánlom.
Pjotr Posted November 15, 2011 Posted November 15, 2011 Ha van egy objektumom, amit törölni szeretnék, azt hogyan tehetem meg? NULL-ra állítás, unset() nem játszik, több referencia is mutat ugyanarra az elemre, és nekem az kellene, hogy, ha egy helyen kérem a törlését, akkor törlõdjön valójában is.
Pjotr Posted November 15, 2011 Posted November 15, 2011 PHP objectekkel nem szokás ezt csinálni, illetve kb. hasztalan is lenne. Egyáltalán hogyan tudom meghívni? __destruct-ot nem lehet hívni, a referencia NULL-ra állítása szintén nem segít.
kléni Posted November 15, 2011 Posted November 15, 2011 Miért akarod törölni? Azzal csak hibaüzenetet kaphatnál.
arpsoft Posted November 16, 2011 Posted November 16, 2011 Már hogyne lehetne meghívni: foo->__destruct(); Az egy másik kérdés, hogy végrehajtja-e! A PHP eredndõen csak akkor szünteti meg magát az objektumot, ha a rá mutató összes referencia megszûnik létezni. (A saját magára mutatók is.)
Pjotr Posted November 16, 2011 Posted November 16, 2011 Magyarul nem fogja. Maradok a jelenlegi módszeremnél, egy "flaget" true-ra állítok ezzel jelezvén, hogy már törölt.
Dani991 Posted November 19, 2011 Posted November 19, 2011 Egy kis segítséget szeretnék kérni REGEX kifejezések terén. Van egy szövegem, amiben BB code tagek vannak és ezeket le kellene cserélni HTML-re. Azonban van néhány tag, amelyeket nem kell lecserélni abban az esetben, ha egy másik köztük van. Példa: $szoveg = "The [tag]quick brown [eztne]fox[/tag] jumps [tag]over the lazy[/tag] dog."; preg_replace(#\[tag\](.*?)\[/tag\]#, "<p>\\1</p>", $szoveg); Visszaadja ezt: The <p>quick brown [eztne]fox</p> jumps <p>over the lazy</p> dog. De én ezt szeretném visszakapni: The [tag]quick brown [eztne]fox[/tag] jumps <p>over the lazy</p> dog. Tehát valahogyan meg kellene vizsgálni, hogy a két kicserélendõ tag között benn van-e az a bizonyos harmadik, és ha igen, akkor ne cserélje le.
Kiskalóz Posted November 24, 2011 Posted November 24, 2011 Egy kérdésem lenne. Kapok 1 adathalmazt txt-ben. 7 "oszlop" van, és a táblázat egyszerû TXT formátumú, tabulátorokkal tagolt. Bármilyen szövegszerkesztõvel, vagy táblázatkezelõvel megnyitható. Kérdésem, hogy azt hogyan tudom felvinni adatbázisba.
payskin Posted November 24, 2011 Posted November 24, 2011 Beolvasod soronként, explode-dal felrobbantod mezõkre, mezõket beírod az adatbázisba. Alternatív lehetõség: fogsz egy jobb szövegszerkesztõt (Notepad2), és csinálsz a fájlból egy SQL parancsot (lecseréled a TAB-okat vesszõre, eléírod, hogy INSERT INTO...
Kiskalóz Posted November 24, 2011 Posted November 24, 2011 na ebbõl a soronkénti beolvasás nem fog menni..
payskin Posted November 24, 2011 Posted November 24, 2011 Miért nem? Tessék, soronkénti beolvasás + feldolgozás: $f = fopen(DIR_FS_TEMP . 'actua/' . $process_filename, "r") or die('Nem tudom megnyitni a fájlt!'); while (($data = fgets($f)) !== false) { $sor = explode(';', trim($data)); // a trim kiveszi a végéről a sorvége jelet --> nem kerül be az utolsó $sor tömbelembe! dequote($sor); if (count($sor) >= 3 && is_numeric($sor[1])) { $list[] = array('barcode' => trim($sor[1]), 'name' => trim($sor[3])); } } fclose($f); Ez az egyik CSV feldolgozóm részlete. Az fopen után a fájlt kell megadni az elérési útjával, illetve hogy hogyan szeretnéd megnyitni (r = read, többit lásd doksi). fgets beolvas egy sort, vagy ha már nincs több, akkor false-t ad vissza (ez van a while-ban), utána robbantjuk a sort pontosvessző mentén (neked tab, azaz "\t" mentén kell), aztán mindenféle feldolgozósat játszunk vele (a dequote saját függvény, leveszi a mező elejéről és végéről az idézőjeleket), és amikor végeztünk fclose-zal bezárjuk a fájlt.
Kiskalóz Posted November 24, 2011 Posted November 24, 2011 Ciki vagy sem, de nem tudom, hogy kell soronként beolvasni. Egyben beolvasom és feldarabolom explode-al. Kapok 1 k*rvanagy tömböt. Az a baj, hogy a sorvégeket sem jelzik sehogy. most 500 sor van benne.. de ki tudja menyi lesz.. $text = file_get_contents("data.txt"); $exp = explode(' ', $text); Szerk: Közben írtál te is. Köszönöm Kipróbálom ez alapján!
Kiskalóz Posted November 24, 2011 Posted November 24, 2011 Na szuperul mûködik, leszámítva, hogy nem igazán azt kapom amit akartam. Ugyanis ha a \t-nél darabolom, akkor soronként veszi külön. De gondolom ez azért van, mert nem jól kapom meg a txt-t. Így csináltam, Balázs példája alapján: $f = fopen('data.txt', "r") or die('Nem tudom megnyitni a fájlt!'); while (($data = fgets($f)) !== false) { $sor = explode('\t ', $data); echo $sor[0].'<br>'; } fclose($f);
payskin Posted November 24, 2011 Posted November 24, 2011 Az a baj, hogy perjeles kódok csak dupla idézőjelek között játszanak, tehát a fenti esetben a szegény explode nem talál semmit, ami mentén robbanthatna, és ezért berakja az egész sort a $sor[0]-ba. Úgyhogy '\t ' --> "\t" csere, és figyelj oda, hogy most még egy szóköz is van az idézőjelek között, az valószínűleg nem kell, ha tényleg a TAB az elválasztó karakter! Visszatérve a példádra, a file_get_contents működhet, két feltétellel: nem baromi nagy a fájl (befér a memóriába), és tudod, hogy mik a sor vége jelek! Notepad2-ben [Ctrl]+[shif]t+[9]-cel lehet ki-be kapcsolni a megjelenítésüket. Elvileg 3 állapot lehetséges: CRLF - Carriage Return + Line Feed (PHP-ban: "\r\n") - Windowsban létrehozott fájlokra jellemző LF - Csak Line Feed (PHP-ban: "\n") - Linuxban létrehozott fájlokra jellemző CR - Csak Carriage Return (PHP-ban "\r") - nagyon ritka, főleg Macintoshokon létrehozott fájlokra jellemző, talán már ott sem Szóval, ha tudod, mi a sorvége jel, akkor berántod a fájlt file_get_contents-szel, szétrobbantod az egészet sorokra, majd végigmész a sorokon és azokat még robbantgatod mezőkre: $text = file_get_contents("data.txt"); $sorok = explode("\r\n", $text); foreach($sorok as $sor) { $mezok = explode("\t", $sor); ... $mezok feldolgozása ... } Ennek megvan az a baromi nagy előnye, hogy eltünteti a sor vége jeleket a sorokból! Erre érdemes odafigyelni, mert amikor az fgets-szel olvasol be soronként, és robbantasz TAB mentén, a tömb utolsó eleme tartalmazni fogja a sorvége jelet is! Épp ezért érdemes trimmelni a sort, robbantás előtt. Ki is javítom a fenti példámat!
Pjotr Posted December 18, 2011 Posted December 18, 2011 Hulladék jön vissza MySQL-ből: [Password] => kiss.p [WrongPasswordCount] => terllll.jklkkjk@gmail.comˆ558f49979da779a7532acd87a58f5d451f5c26db741c6c76384f33614b7c42b0100619a24 [CreateDate] => 1d8ac07134727baa1cd43f9d12e4d40aeb738c6f37fa850f9f8f [LastLogin] => 578848d37Û 7Û 4$Û :2Û 9 kiss [LastActivity] => peterÛ *$huð?þ*2011-11-26 10: [PasswordExpire] => A fenti kimenet print_r hívás eredménye, szerintem egyértelmű, hogy mi a hiba. Azon dolgoznék, hogy futtatni tudjak az ORM-emmel tárolt eljárásokat prepared statement-ekkel, de nem működik 100%-osan.
arpsoft Posted December 19, 2011 Posted December 19, 2011 Szerintem használj valami értelmes adatbáziskezelõt a MySQL helyett.
Pjotr Posted December 19, 2011 Posted December 19, 2011 Nagyon szívesen használnék MSSQL-t, de most MySQL-t kell. Van valami ötlet egyáltalán arra, miért lehet ez, vagy hogyan keressek rá a probléma megoldására? --- Totális baromságot ír a sorok hosszára is.
arpsoft Posted December 20, 2011 Posted December 20, 2011 Ezek a mezõk az objektumod tulajdonságai vagy az SQL által visszaadott tömb elemei?
arpsoft Posted December 20, 2011 Posted December 20, 2011 És tényleg ez van a táblában, vagy ez csak a prepared statement eredménye?
Pjotr Posted December 20, 2011 Posted December 20, 2011 A táblában minden adat szép is jó, olvasható. Ez már a prepared statement + tárolt eljárás eredménye, maga a tárolt eljárás multiple query-t "ad vissza".
arpsoft Posted December 20, 2011 Posted December 20, 2011 Olyan, mintha valahol hiányozna egy string terminátor \0 és ezért összeborul az egész.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now