Archívum - 2012
január 10
Php függvény szerver teljesítmény
Szerintetek mennyiben jobb, ha a következő függvényben az sql lekérdezés eredményét a cím szerint átadott paraméterbe töltöm, mint ha return-el küldeném vissza az eredményt? Nagyobb adatmennyiségnél (gondoljunk pl nagy TEXT típusú mezőkre) jelentős memóriamennyiséget foglalhat el egy komolyabb lekérdezés eredménye, főleg ha nagyon sok sor is van. Emellett egyetlen lapletöltésnél sok sql lekérdezés is lefuthat. Nem cím szerinti átadásnál egyszer létrejön ez az adat a függvényen belül egy változóban, majd létrejön a visszaadott változóban (pl $x = sql("SELECT * FROM a") fgv-en belül és utána $x-ben is, míg cím szerinti átadás esetén, ahogy a példában van csak egyszer kerül betöltésre a megadott változóba). Véleményetek szerint van ennek érdemleges hatása, vagy egyszerűbb lenne a minimálisan jobb kezelhetőség kedvéért simán return-el visszaadni az értéket? A függvény lényege, hogy roppant egyszerű módon egyetlen php sorban feltölthetjük pl egy select option elemeit közvetlenül az adatbázisból, de bármilyen egyéb lekérdezés is gyorsan és egyszerűen elvégezhető vele (validálást stb nem végez).
■
function sql($sql,&$data,$id="", $no_array_value = "")
{
$data = array();
$result = mysql_query($sql);
if (mysql_num_rows($result)) {
while($row=mysql_fetch_assoc($result)) {
if ($id == "") {
if ($no_array_value)
$data[] = $row[$no_array_value];
else
$data[] = $row;
}
else {
if ($no_array_value)
$data[$row[$id]] = $row[$no_array_value];
else
$data[$row[$id]] = $row;
}
}
}
}
JQuery + iframe gond chrome es opera alatt
Adott egy már régóta működő oldal, az http://www.rtvstat.hu/ .
Az 5. és a 6. helyezett közé bannerek kerültek iframe-be
Az itt lévő többcsatornás rádiókat pedig le lehet nyitni és vissza lehet csukni (JQuery).
Pár hete észrevettem, hogy Chrome és Opera alatt ha az oldal alján lévő rádiót szeretnék lenyitni akkor a lenyitás pillanatában felugrik a bannerhez. Firefox és IE alatt nem csinálja, ezekkel tökéletesen működik.
Milyen paramétert adjak meg az iframenek hogy ne legyen köze a JQuery-hez?
■ Az 5. és a 6. helyezett közé bannerek kerültek iframe-be
Az itt lévő többcsatornás rádiókat pedig le lehet nyitni és vissza lehet csukni (JQuery).
Pár hete észrevettem, hogy Chrome és Opera alatt ha az oldal alján lévő rádiót szeretnék lenyitni akkor a lenyitás pillanatában felugrik a bannerhez. Firefox és IE alatt nem csinálja, ezekkel tökéletesen működik.
Milyen paramétert adjak meg az iframenek hogy ne legyen köze a JQuery-hez?
január 9
Facebook api kérdések
Sziasztok!
Felmerült két probléma a facebook sdk használata közben.
1. Az egyik oldalamon a főoldalt betöltve lekérném a bejelentkezett felhasználókhoz tartozó adatokat, de amíg a kliens oldalon úgy tűnik, hogy be van jelentkezve a user (a Kijelentkezés gombot rendereli a megfelelő helyre), addig a szerver oldalon azt mondja a fb, hogy nincs bejelentkezve senki. A facebook doksijából kiindulva ez a kód állapítja meg, hogy be van-e jelentkezve a felhasználó (szerver oldalon):Tehát a kérdésem az volna, hogy mi miatt van kliens oldal szerint bejelentkezve, míg szerver oldal szerint nem a user?
2. A másik alkalmazásomban a bejelentkezés után érdekes módon meghívódik az auth.logout eseményre definiált függvény is. Oké, kis netes keresés után rábukkantam, hogy másnál is előfordul ilyen. Gondoltam, hogy ha lekérem a login status-t, akkor azzal letudom kezelni a "login logout" eseteket. A következő kódot próbáltam:Nem értem ez hogyan lehetséges, de a konzolra először kiír egy tök üres objektumot, majd 2-3 mp elteltével megjelenik az authResponse (ugyanabban a konzol sorban, ami az előbb még teljesen üres volt). Természetesen így meg nem tudom leellenőrizni, hogy be van-e még jelentkezve a felhasználó vagy sem. Találkozott már valaki ilyennel? Miért fut le a callback függvény a válasz megérkezése előtt?
Köszönöm a válaszokat!
■ Felmerült két probléma a facebook sdk használata közben.
1. Az egyik oldalamon a főoldalt betöltve lekérném a bejelentkezett felhasználókhoz tartozó adatokat, de amíg a kliens oldalon úgy tűnik, hogy be van jelentkezve a user (a Kijelentkezés gombot rendereli a megfelelő helyre), addig a szerver oldalon azt mondja a fb, hogy nincs bejelentkezve senki. A facebook doksijából kiindulva ez a kód állapítja meg, hogy be van-e jelentkezve a felhasználó (szerver oldalon):
try {
$user = $facebook->api('/me','GET');
$userId = $user['id'];
} catch(FacebookApiException $e) {
$userId = false;
}
if($userId) { /* A user bejelentkezve */ }
2. A másik alkalmazásomban a bejelentkezés után érdekes módon meghívódik az auth.logout eseményre definiált függvény is. Oké, kis netes keresés után rábukkantam, hogy másnál is előfordul ilyen. Gondoltam, hogy ha lekérem a login status-t, akkor azzal letudom kezelni a "login logout" eseteket. A következő kódot próbáltam:
FB.Event.subscribe('auth.logout', function() {
FB.getLoginStatus(function(response) {
console.log(response.authResponse);
});
});
Köszönöm a válaszokat!
Ékezetes betű probléma
Sziasztok!
Olyan problémám van, hogy ékezetes betűt a localhost(Xamp) jól megjelenít, de az nt-hosting szerver ékezetes betűket kérdőjeleké alakítja ha feltöltöm oda.
Mi lehet a gond?
Egyébként ez egy php file (index.php).
kódrészlet:
Előre is köszi.
■ Olyan problémám van, hogy ékezetes betűt a localhost(Xamp) jól megjelenít, de az nt-hosting szerver ékezetes betűket kérdőjeleké alakítja ha feltöltöm oda.
Mi lehet a gond?
Egyébként ez egy php file (index.php).
kódrészlet:
<?php echo '<?xml version="1.0" encoding="iso-8859-1"?>'; ?>
<?php session_start();
header('Content-Type: text/html; charset=iso-8859-1');
include "login.php";
$login = new Login();
if ($_GET["kilepes"] == 1) {
$_SESSION['isLogin'] = false;
unset($_SESSION['user']);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu" lang="hu">
<head>
<title>WizardSoft Kft. - Kezdőlap</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link href="style.css" rel="stylesheet" type="text/css" />
<link href="layout.css" rel="stylesheet" type="text/css" />
<script src="rollover.js" type="text/javascript"></script>
</head>
<?php session_start();
header('Content-Type: text/html; charset=iso-8859-1');
include "login.php";
$login = new Login();
if ($_GET["kilepes"] == 1) {
$_SESSION['isLogin'] = false;
unset($_SESSION['user']);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu" lang="hu">
<head>
<title>WizardSoft Kft. - Kezdőlap</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link href="style.css" rel="stylesheet" type="text/css" />
<link href="layout.css" rel="stylesheet" type="text/css" />
<script src="rollover.js" type="text/javascript"></script>
</head>
Előre is köszi.
január 9
Osztálymetódos meghívása példányosítás nélkül
Épp a statikus osztálymetódusokról olvasgattam, amikor egy érdekes dolgot vettem észre:Itt ugye szépen kiírja a várt szöveget, ami rendben is van: statikus tagfüggvénynél működik a példányosítás nélküli függvényhívás.
Azonban ha kihagyom a static kulcsszót a függvény meghatározásából, akkor is meg lehet azt hívni objektumpéldány nélkül. Tehát kvázi direktben lehet hívni egy osztálymetódust (amelyik persze public vagy protected), anélkül, hogy mondjuk a konstruktor is automatikusan lefutna.Csak nekem fura ez a viselkedés?:)
■
class Foo {
public static function bar() {
print 'Egy bar vagyok.';
}
}
print Foo::bar();
Azonban ha kihagyom a static kulcsszót a függvény meghatározásából, akkor is meg lehet azt hívni objektumpéldány nélkül. Tehát kvázi direktben lehet hívni egy osztálymetódust (amelyik persze public vagy protected), anélkül, hogy mondjuk a konstruktor is automatikusan lefutna.
class Foo {
public function __construct() {
throw new Exception('Itt le kéne állni!');
}
public function bar() {
print 'Egy bar vagyok.';
}
}
//$foo = new Foo();
print Foo::bar();PHP SESSION --> JavaScript
Sziasztok,
lenne egy olyan kérdésem, hogy egy PHP-ben generált $_SESSION változót miként tudom alkalmazni egy JavaScript kódban?
PHP --> $_SESSION['user'];
ezt szeretném alkalmazni Js-ben:
ezt a sort szeretném módosítani:
'folder' : 'tmp'
így:
'folder' : 'tmp/$_SESSION[username]/'
Teljes kód:
<script type="text/javascript">
$(function() {
$('#custom_file_upload').uploadify({
'uploader' : 'lib/uploadify/uploadify.swf',
'script' : 'lib/uploadify/uploadify.php',
'cancelImg' : 'lib/uploadify/cancel.png',
'folder' : 'tmp',
'multi' : true,
'auto' : true,
'fileExt' : '*.jpg;*.gif;*.png',
'fileDesc' : 'Image Files (.JPG, .GIF, .PNG)',
'queueID' : 'custom-queue',
'queueSizeLimit' : 3,
'simUploadLimit' : 3,
'sizeLimit' : 10240000,
'removeCompleted': false,
'onSelectOnce' : function(event,data) {
$('#status-message').text(data.filesSelected + ' files have been added to the queue.');
},
'onAllComplete' : function(event,data) {
$('#status-message').text(data.filesUploaded + ' files uploaded, ' + data.errors + ' errors.');
}
}); });
</script>
■ lenne egy olyan kérdésem, hogy egy PHP-ben generált $_SESSION változót miként tudom alkalmazni egy JavaScript kódban?
PHP --> $_SESSION['user'];
ezt szeretném alkalmazni Js-ben:
ezt a sort szeretném módosítani:
'folder' : 'tmp'
így:
'folder' : 'tmp/$_SESSION[username]/'
Teljes kód:
<script type="text/javascript">
$(function() {
$('#custom_file_upload').uploadify({
'uploader' : 'lib/uploadify/uploadify.swf',
'script' : 'lib/uploadify/uploadify.php',
'cancelImg' : 'lib/uploadify/cancel.png',
'folder' : 'tmp',
'multi' : true,
'auto' : true,
'fileExt' : '*.jpg;*.gif;*.png',
'fileDesc' : 'Image Files (.JPG, .GIF, .PNG)',
'queueID' : 'custom-queue',
'queueSizeLimit' : 3,
'simUploadLimit' : 3,
'sizeLimit' : 10240000,
'removeCompleted': false,
'onSelectOnce' : function(event,data) {
$('#status-message').text(data.filesSelected + ' files have been added to the queue.');
},
'onAllComplete' : function(event,data) {
$('#status-message').text(data.filesUploaded + ' files uploaded, ' + data.errors + ' errors.');
}
}); });
</script>
Mysqlben szürés a join egyik oldalán álló rekordok száma alapján
Sziasztok!
Elakadtam egy lekérdezésnél: Adott két tábla egyikben albumok, másikban a hozzájuk tartozó képek.
Elegánsan hogyan lehet lekérdezni azokat az albumokat, amikhez több kép tartozik mint egy?
Szörnyeteg módon meg tudtam oldani, de amikor ránéztem a "művemre" elborzadtam. :)
■ Elakadtam egy lekérdezésnél: Adott két tábla egyikben albumok, másikban a hozzájuk tartozó képek.
Elegánsan hogyan lehet lekérdezni azokat az albumokat, amikhez több kép tartozik mint egy?
Szörnyeteg módon meg tudtam oldani, de amikor ránéztem a "művemre" elborzadtam. :)
Mostantól magyar webfejlesztőknek is hozzáférhető lesz a Windows Store
Két napja jelentette be a Microsoft, hogy immár Magyarország is benne van a fejlesztők számára elérhető Windows Store országok között. Tekintettel arra, hogy a HTML5 és JavaScript alapú fejlesztés roppant magas szinten támogatott a Store-ba majdan kerülő alkalmazásoknál, mi több a lehetőségeket tekintve teljesen egyenrangú úgy a natív C++/WinRT, mint a C#/WinRT alkalmazásokéval, ez igen kedvező a webfejlesztők számára is.
php weblap őű megjelenítési probléma
Sziasztok!
Tudom hogy már nagyon sok ilyen őű megjelenítési problémás fórum indult.Böngészve se találtam problémámra orvosságot.
Segítségeteket szeretném kérni.
Olyan problémám lenne mi szerint készítettem egy HTML oldalt index.html néven. Ahol az ékezetek normálisa müködtek, de mivel hogy php kód is szerepel az oldalamon ezért az index.php-vá alakítottam át. Az ékezetes betűk ez után kérdőjelek sorává alakultak.
Charset-et már többször átállítottam,de nem csinál semmit.
Milyen megoldásokat próbáljak ki rajta, hogy az ékezeteket is vegye és ne essen szét?
Kód részlet:
■ Tudom hogy már nagyon sok ilyen őű megjelenítési problémás fórum indult.Böngészve se találtam problémámra orvosságot.
Segítségeteket szeretném kérni.
Olyan problémám lenne mi szerint készítettem egy HTML oldalt index.html néven. Ahol az ékezetek normálisa müködtek, de mivel hogy php kód is szerepel az oldalamon ezért az index.php-vá alakítottam át. Az ékezetes betűk ez után kérdőjelek sorává alakultak.
Charset-et már többször átállítottam,de nem csinál semmit.
Milyen megoldásokat próbáljak ki rajta, hogy az ékezeteket is vegye és ne essen szét?
Kód részlet:
<?php session_start();
include "login.php";
$login = new Login();
if ($_GET["kilepes"] == 1) {
$_SESSION['isLogin'] = false;
unset($_SESSION['user']);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu" lang="hu">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link href="style.css" rel="stylesheet" type="text/css" />
<link href="layout.css" rel="stylesheet" type="text/css" />
<script src="rollover.js" type="text/javascript"></script>
</head>
include "login.php";
$login = new Login();
if ($_GET["kilepes"] == 1) {
$_SESSION['isLogin'] = false;
unset($_SESSION['user']);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu" lang="hu">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link href="style.css" rel="stylesheet" type="text/css" />
<link href="layout.css" rel="stylesheet" type="text/css" />
<script src="rollover.js" type="text/javascript"></script>
</head>
Státusz megőrzése form-resubmit tiltással
Sziasztok!
A bonyolult cím ellenére a probléma elég gyakori:
1. Szeretném megakadályozni, hogy a lapot újratöltve a felhasználó ismételten elküldhesse az űrlapot.
2. Úgy eleget tenni az egyes pontnak, hogy a szkript "emlékezzen" arra, hogy az űrlap ki lett töltve, és annak megfelelően dobjon egy státusz-üzenetet. (Ez után a form újra szerepel, tehát külön fájlba nem tehető, illetve az URL után se fűzzünk semmit - és a lapot újratöltve a státusz már ne jelenjen meg.)
Arra lennék kíváncsi, hogy a legegyszerűbb megoldást találtam-e meg, vagy létezik-e erre jobb gyakorlat. Az én megfejtésem szerint:
1. Az elküldött űrlap feldolgozása után
2. Ezért az átirányítás előtt egy
Tehát van-e ennél jobb, célszerűbb módszer?
Előre is köszönve a válaszokat,
Ádám
■ A bonyolult cím ellenére a probléma elég gyakori:
1. Szeretném megakadályozni, hogy a lapot újratöltve a felhasználó ismételten elküldhesse az űrlapot.
2. Úgy eleget tenni az egyes pontnak, hogy a szkript "emlékezzen" arra, hogy az űrlap ki lett töltve, és annak megfelelően dobjon egy státusz-üzenetet. (Ez után a form újra szerepel, tehát külön fájlba nem tehető, illetve az URL után se fűzzünk semmit - és a lapot újratöltve a státusz már ne jelenjen meg.)
Arra lennék kíváncsi, hogy a legegyszerűbb megoldást találtam-e meg, vagy létezik-e erre jobb gyakorlat. Az én megfejtésem szerint:
1. Az elküldött űrlap feldolgozása után
header('Location: '.$_SERVER['REQUEST_URI']); - Ez eddig tökéletes, csak emiatt már nem fog emlékezni az újratöltés után, hogy post-olva lett a form.2. Ezért az átirányítás előtt egy
$_SESSION['message'] változóban jelzem, hogy milyen visszajelzést kell adni a felhasználó számára (persze átirányítás után exit(), hogy a sessionbe bele is írja - vagy akár előtte egy session_write_close(), de előbbivel nem fut tovább feleslegesen a szkript), majd utána kiolvasom, és megjelenítem, ha talált $_SESSION['message']-et, végül unset()-elem azt.Tehát van-e ennél jobb, célszerűbb módszer?
Előre is köszönve a válaszokat,
Ádám



