ugrás a tartalomhoz

Oldal betöltése div-be, weboldal motor

peter71 · 2009. Aug. 7. (P), 07.56
Tudom, hogy buta kérdés, de milyen megoldásokat alkalmaztok php oldalak div-ben nyitására. Én két megoldást ismerek az egyik egy javascript megoldás (load.js) a másik pedig ez .
Mivel kezdő vagyok szeretnék többet tudni a megoldásokról.
Kérlek benneteket, ajánljatok általatok jónak ítélt megoldásokat.

Köszönöm:
Peter71
 
1

Mi a kérdés

Poetro · 2009. Aug. 7. (P), 19.06
Mit értesz PHP oldalak DIV-ben való megnyitásán? Mikor, és milyen tartalom kerül a DIV-be, milyen követelmények vannak a tartalommal kapcsolatban? Az sem derül ki mi az a load.js, és a másik megoldás alapjaiban jó, azonban ilyen formán nem alkalmazandó, és tele van felesleges részekkel, valamint nem mutat jó kódolási stílust.
2

Azt értem egy oldal div-be

peter71 · 2009. Aug. 7. (P), 20.10
Azt értem egy oldal div-be töltésén, hogy egy oldal valamilyen menüpontján kattintva egy php file fut a már meglévő div-ben, amelyben például mysql lekérdezés van.

A load.js file-t a valahonnan letöltöttem. Sajnos van néhány dolog amit nem értek belőle, ezért nem változtattam rajta semmit.
function load(url,place) {
    document.getElementById(place).innerHTML = "<div style=\"text-align:center;font-family: Calibri; font-size:12px; font-weight:bold; margin-top:100px;;\">Betöltés...<br></div>";
    var req = null;
    if (window.XMLHttpRequest)
        req = new XMLHttpRequest()
    else
        if (window.ActiveXObject) req = new ActiveXObject("Microsoft.XMLHTTP");
    req.onreadystatechange = function() {
                                if (req.readyState == 4)
                                    if (req.status == 200)
                                        document.getElementById(place).innerHTML = req.responseText;
                                    else
                                        document.getElementById(place).innerHTML = "AJAX error.";
                                        }                       
    req.open("GET", url, true);
    req.send(null);
}
Kérlek, magyarázd el az esetleg felmerülő hibákat a load.js-ben, és a már megtalált hibákat a weboldal motorban, szeretnék tanulni.
Ha esetleg van olyan megoldás amit használsz és ajánlasz, örülnék a segítségnek.

Köszönöm:
Peter71
3

+1 sor

Ustak · 2009. Aug. 7. (P), 21.59
Esetleg azt a sort is megmutatod, ahol használod a load függvényt?
Üdv:
Gábor.
6

több probléma & több tipp

yaanno · 2009. Aug. 9. (V), 17.05
tippek:
1. ha mindenképpen saját ajax megoldást készítesz, tedd meg magadnak azt a szívességet, hogy szétbontod az ajax (xmlhttp) és a tartalom domba töltését (load); lehet ugyanis, hogy az előbbit máshol is használnád, illetve az utóbbit nem ajax-szal betöltött tartalmak elhelyezéséhez

2. ne használj saját ajax megoldást :) nagyon jó libraryk (jquery, dojo stb.) vannak erre, kíméld meg magad a js problémáktól, hogy az alkalmazásodra fókuszálhass

3. a load függvénynév semmitmondó, próbáld úgy elnevezni a függvényeidet, hogy később emlékeztessenek arra, hogy mit is csinálnak :) lehetne pl. placeHTML, appendHTML vagy ilyenek; ha libraryt használsz ott már vannak erre kész függvények

4. felejtsd el az onclick-re kötött eseménykezelést; indulj ki abból, hogy nincs javascript (seo szempont is említhető), tehát a html-edben a linkek href-jébe szépen tedd be az urleket; azután ha már úgyis valamilyen javascript libraryt használsz, nézz utána az eseménykezelőknek és hogy miképp lehet ezekhez az eseményekhez hozzákötni a kívánt függvényeket (ajax letöltés + domba töltés)

szerintem nézz szét a jquery dokumentációjában, szép példákat fogsz találni
4

Load.js

peter71 · 2009. Aug. 7. (P), 22.32
Ez egy általam félig elkészített oldalból van. A script hívása: load(php file, div id).
			<div class="kozep">
				<div class="balsav">
					<a href="javascript:void(0)" onclick="load('kiir.php?kuld=uzletpolitika','tartalom')">Első</a><br>
					<a href="#" onclick="load('kiir.php?kuld=referenciak','tartalom')">Második</a><br>
					<a href="#" onclick="load('kiir.php?kuld=termekek','tartalom')">Harmadik</a><br>
					<a href="#" onclick="load('kiir.php?kuld=linkek','tartalom')">Negyedik</a><br>
					<a href="admin.php">admin </a>
				</div> <!-- balsáv vége -->
				<div id="tartalom">
					<script>
						load('kiir.php?kuld=bemutatkozas','tartalom')
					</script>
				</div> <!-- tartalom vége -->
			</div> <!-- közép vége -->
5

Szerintem nem szerencsés

Ustak · 2009. Aug. 9. (V), 17.04
belerakni a load függvényt a divbe, melybe bele akarod tölteni, inkább jobb lenne a záró body elem elé rakni, vagy a vagy a <body onload tulajdonsághoz kötni, vagy használj jQuery-t ahol is a document.ready függvényhez kötheted.
Így lefut a script, de nem találja meg a divet, mert az még nincs "kész".
A php-ban előbb teszteld egy egyszerű echo val hogy működik -e egyáltalán a dolog, (próbáld ki közvetlenül a böngésző címsorában is, hogy működik e a php), majd firebuggal teszteld a javascripet, mi lehet a baj, stb stb...
üdv:
Gábor.
7

A függvény nem a saját div-be

peter71 · 2009. Aug. 9. (V), 22.29
A függvény nem a saját div-be tölt, említettem a 4. hozzászólásban, hogy a paraméterben a betöltendő php file nevét és a div id nevét kell megadni. A fent mutatott kódban látszódik, hogy a függvény meghívása a "balsáv" nevű div-ben van az onclick eseménynél viszont a "tartalom" id-re mutat. A body onload tulajdonságához a mutatott esetben nem köthetem, hiszen a baloldali menüben működtetem a függvényt, amely a tartalom részbe tölti a megadott php file-t.

A 2. számú hozzászólásban említettem, hogy a függvényt nem én írtam, én csak letöltöttem és változás nélkül használom. Sajnos azt is említettem, hogy van néhány dolog amit nem értek belőle. Az ajaxhoz egyáltalán nem értek, ezt a függvény úgy találtam, hogy a szakdolgozatomat készítettem és a neten keresgélve akadtam rá.

Az eredeti kérdésem pont arra irányult, milyen megoldásokat használtok php file-ok dv-be töltésére. Egyáltalán, mit használtok más file-ok betöltésére. A load.js függvényt csak példának írtam, hogy ezt találtam és használtam eddig. Sajnos a fent említett "weboldal motor" a jelenlegi feladatomban nem segít php file-ok betöltésében és így a load.js az egyetlen általam ismert megoldás.

Kérlek, segítsetek.

Köszönöm:
Peter71
8

Nohát

Ustak · 2009. Aug. 9. (V), 22.57
A függvény nem a saját div-be tölt...

<div id="tartalom">  
        <script>              
           load('kiir.php?kuld=bemutatkozas','tartalom')  
       </script>  
</div> <!-- tartalom vége --> 


Én itt konkrétan erre a részre gondoltam, tehát itt épp a függvény "saját" divbe tölt, a tartalom divben hívod meg hogy a tartalom divben töltsön. A böngészők motorja egy értelmező (interpreter), de ezt biztos tanultad. Elindul a legelső elemtől, és végignézi az egészet, és az utasításoknak megfelelően értelmezi, majd megjeleníti az oldalt. Mivel a div nek fent még nincs "vége", nem biztos hogy jó eredményt ötöl ki belőle szegény.
A body onload tulajdonságához a mutatott esetben nem köthetem, hiszen a baloldali menüben működtetem a függvényt, amely a tartalom részbe tölti a megadott php file-t.

És ez az egész dolog nincs valami ilyesmi struktúrában:

<!DOCTYPE valamilyen>
<html>
<head>
   <title></title>
</head>
<body>
  <baldiv><tartalomdiv><jobbdiv><stbdiv>
</body>
</html>
Tehát csak benne van a body-ban vagy nem? Minden esetre tényleg ne kösd hozzá, mert a fentebb szólónak teljesen igaza van az onakarmi tulajonságok téves használatáról, és a jQuery használatának előnyeiről :-)

Véleményem szerint az ajaxos megoldás akkor hasznos, ha úgy látod, hogy a felhasználónak fontos az azonnali, teljes oldalfrissítés nélküli válasz a szerverről, esetleg sokszor, kis adatokat vándoroltatsz ide-oda, nagy képek és html töredékek ilyen módon való közvetítése talán nem olyan jó ötlet, ilyen esetben egy egyszerű include -al és if-else szerkezettel php oldalon megoldhatod a dived tartalmát, de lehet hogy erre mások mást mondanak .-)
Üdv:
Gábor.
9

Igazad van, tévedtem,

peter71 · 2009. Aug. 9. (V), 23.19
Igazad van, tévedtem, bocsánat.
Sajnos amit tanultam az édes kevés, inkább csak a netről próbálok tanulni.
Egyenlőre a megoldás érdekel, nem tudom, hogy kell-e hozzá ajax vagy nem. Ha a baloldalon van egy menü, a menüpontra kattintva a mellette levő "tartalom" div-be kellene töltődni valaminek, jelenleg egy sql lekérdezés eredményének. Mivel több menüpont van úgy gondoltam az a leghelyesebb, ha a lekérdezéseket és a visszakapott eredményeket egy külön file-ban kezelem és csak azt töltöm vissza.
Ráadásul szükségem van egy admin menüre is, amiben két menü van egyszerre. Az egyik az oldalak adatait kérdezi le és tölti be, a másik a letöltött eredmények kezelését teszi lehetővé. Például az első menüvel elérem a dolgozókat és kilistázom őket a másikkal pedig újat tudok felvenni, módósíthatok vagy törölhetek. Ezt egy oldalon kellene elvégezni, feltéve, hogy megtudom oldani egy új file megjelenítését a menü alatt elhelyezkedő div-ben.

Köszönöm
10

jQuery +1

TeeCee · 2009. Aug. 10. (H), 09.53
Szia, énis a jQuery-t javasolnám...
A load() függvénnyel próbálkozz, ha több logikát akarsz a JS-be tenni, akkor úgyis JSON-os kommunikáció lesz belőle, akkor meg a .get() lesz a jóbarátod...
http://docs.jquery.com/Ajax/load
11

Úgy látom mindenki a JQuery-t

peter71 · 2009. Aug. 10. (H), 20.00
Úgy látom mindenki a JQuery-t ajánlja. Sajnos nem értek a JS-hez, ebből adódóan az AJAX-hoz és a JQuery-hez sem. A JSON-ról pedig most hallottam először.

Ráadásul az angol is nehezen megy. Kérlek ne írjátok le, hogy az angol nélkül nem jutok semmire, mert már néhányszor megkaptam. Csak nem veszem a számba a luparát!

Azért megpróbálok valamit kisilabizálni belőle.
Letöltöttem a jquery-1.3.2.js file-t. Mit kell még letöltenem?


Köszönöm
12

sorry...

TeeCee · 2009. Aug. 21. (P), 23.59
... csak most olvastam...

Nos, ahogy gondoltad: először tölts le egy angol nyelvoktatót :P

Úgy hiszem, hogy nincs magyar jQuery doksi, ellenben itt van pár cikk hozzá magyarul:
http://www.opendir.hu/?freedom=/tartalom/jquery/jquery_alapozo
Megjegyzem: ezt guglival találtam...

A kérdésre visszatérve:
nem kell mást letöltened, behúzod a jquery*.js fájlt az oldalba és használod a jQuery-s függvényeket.

És akkor a szokásos ijesztgetős rosszhír: NEM fogod tudni megoldani a problémádat, csak ha tanulsz. Js-tudás nélkül nem fogsz tudni JS-es oldalat készíteni. Olvass jQuery-t, csinálgass mindenféle Js-es dolgot és ha már fejből tudod a jQuery-s függvények felét-harmadát (igénytől függ) akkor nekiláthatsz a feladatnak, amit eredetileg meg szerettél volna oldani!

Üdv: TeeCee :o)