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.
Hmm, nem értem: az első SELECT-ben miért írsz két táblát?
Másodszor, a hibakeresés kedvéért kérlek tedd meg, hogy a változóneveket egyelőre kihagyod a lekérésekből, és mindenhol konstansokat használsz.
Harmadszor, kérlek irasd ki a crockl által is javasolt mysql_error() függvény által visszaadott hivaüzenetet. Ismered a viccet, amikor az állatorvos orvoshoz megy? Az orvos megkérdezi tőle: 'Mi a panasza?' - Mire az állatorvos: 'Ja, hát így könnyű!'
$mis=mysql_query("CREATE TEMPORARY TABLE new_topics SELECT * FROM $SQL_TOPIC_TABLE, $SQL_FORUM_TABLE
where $SQL_TOPIC_TABLE.forum=$SQL_FORUM_TABLE.f_id && $SQL_TOPIC_TABLE.active>0
order by $SQL_FORUM_TABLE.lastdate limit $honnan,$MCP");
$rbi=mysql_query("SELECT new_topics.*, $SQL_FORUM_TABLE.forum_name FROM new_topics, $SQL_FORUM_TABLE
WHERE new_topics.forum = $SQL_FORUM_TABLE.f_id
ORDER BY $SQL_FORUM_TABLE.f_id, lastdate DESC;");
$peti=mysql_fetch_array($rbi);
És a $petire ad egy "Supplied argument is not a valid MySQL result resource" üzenetet.
$robicsek=mysql_query("CREATE TEMPORARY TABLE fercsike select * from $SQL_TOPIC_TABLE, $SQL_FORUM_TABLE
where $SQL_TOPIC_TABLE.forum=$SQL_FORUM_TABLE.f_id && $SQL_TOPIC_TABLE.active>0
order by $SQL_TOPIC_TABLE.$listByT limit $honnan,$MCP");
if ($robicsek) {
$r=mysql_query("select from fercsike
where $SQL_TOPIC_TABLE.active>0
order by $SQL_FORUM_TABLE.$listByF,$SQL_TOPIC_TABLE.$listByT");
}
De nem tudom megállapítani, a fercsike (a temporary table) milyen mezőket tartalmaz, ezt hogyan tudnám megtenni? Mert anélkül nehéz benne rendezni.
nemtom nem-e volna kedved a pre-t mellozni vagy enter utni idonkent;) megertjuk mi meg ha egybemaszik akkor is ;)
Amugy sql-be lehetoleg hasznalj AND szot, ne &&-et.
Amugy fogd a query-det:
$q1 = "CREATE ....";
print $q1."\n\n";
mysql_query($q1);
es a masik-nal is, majd fogod kimasolod, es bemasolod peldaul phpmyadmin-ba es megnezed :) Amugy mysql_error(); ha hibad van, nezd meg mit ad vissza, valami sql syntax hiba lehet vagy akarmi.
szerintem eloszor ismerkedjel az sql nyelv-el meg ha mysql hasznalsz is, mysql.com/doc es probalgass, tanuld meg az alap dolgokat, 2 tablat osszekapcsolni legalabb 3 modon, stb stb, ha nem megy akkor php-bol eloszor query -> ciklus -> query-k -> ciklus stb stb, ha mar megy az sql akkor lehet tudsz egyszerusiteni es 2-3 query helyett 1-2-t fogsz mar csak hasznalni.
Amugy ha van jogod create table-t mondani akkor siman $res=mysql_query("create temporary table ize select * from tabla order by oszlop limit 10");
if($res) { $res_2=mysql_query("select * from ize"); .. }
Itt egy select peldaul ami kiszedi hasonlo strukturaju 2 tablabol a legutolso egy hetes hozzaszolasokat, abbol is legfrissebb 10-et:
select m.grpid,g.grptitle,count(msgid) mcount,max(msgdate) msgdate from forum_msg m,forum_grp g where m.grpid = g.grpid and msgdate >= DATE_SUB(NOW(), INTERVAL 7 DAY) group by m.grpid order by msgdate DESC,mcount DESC limit 10
mysql_query("CREATE TEMPORARY TABLE fercsike select * from $SQL_TOPIC_TABLE, $SQL_FORUM_TABLE where $SQL_TOPIC_TABLE.forum=$SQL_FORUM_TABLE.f_id && $SQL_TOPIC_TABLE.active>0 order by $SQL_FORUM_TABLE.$listByF,$SQL_TOPIC_TABLE.$listByT limit $honnan,$MCP");
$r=mysql_query("select fercsike.*, $SQL_FORUM_TABLE.forum_name from fercsike, $SQL_FORUM_TABLE where fercsike.forum=$SQL_TOPIC_TABLE.f_id order by $SQL_FORUM_TABLE.$listByF,$SQL_TOPIC_TABLE.$listByT");
És ezt a választ kaptam rá:
Warning: Supplied argument is not a valid MySQL result resource in /var/www/bandijanos/mucsinak/trefforum2/index.php on line 160