View previous topic :: View next topic |
Author |
Message |
Seevan Smarty n00b
Joined: 09 May 2012 Posts: 4
|
Posted: Wed May 09, 2012 4:19 pm Post subject: .tpl ausgabe Problem |
|
|
Hallo ,
ich bin neu hier und anfänger mit PHP / SMARTY / AJAX
Ich bin da bei über ein BROWSER-GAME-ENGINE was mit Smarty arbeitet ein eigenes Spiel zu machen .
bei mein problem handelt es sich um die Rohstoffe Anzeige und zwar würde ich sie gerne in Realtime anzeigen lassen .
ich habe schon mit diversen javascripts rum getestet doch greifen die meisten alle auf eine php zu die alle paar sec refesh wird was hier nicht zu trift .
endweder brauch ich einen angepasten code der im tpl was es in realtime ausgibt oder ein ajxa was die tpl in einem div konuirlich neu läd ohne die komplete seite mit zu laden .
in meiner index.tpl lade ich die rohstoff Anzeige so
Code: |
<div id="restop" class="center" style="margin-top: -20px; margin-left: -49px">{include file="menu_resources.tpl"}</div>
|
die menu_resources.tpl schaut so aus
Code: |
{assign var="languageData" value=$smarty.config}
{foreach from=$languageData.resourceIds key=resourceIndex item=resourceId}
{if $resourceCount[$resourceIndex]}
{if $languageData.resource_image[$resourceIndex]}
{/if}
{$resourceCount[$resourceIndex]|number_format:"0":",":"."}
{if !$smarty.config.gui_misc_hide_storage_display}
{/if}
{/if}
{/foreach}
|
|
|
Back to top |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Wed May 23, 2012 1:12 pm Post subject: |
|
|
Du brauchst eigentlich eine Art Schnittstelle/WebService der Daten empfängt (z. B. UserID) und dann die Rohstoffe anhand der UserID abfrägt und diese Zahl(en) dann an den AJAX-Aufruf zurückliefert. Dann muss du diese Daten in JavaScript/HTML verarbeiten und sozusagen das DIV-Element mit der ID "restop" neu "befüllen" bzw. neu erstellen
Für AJAX kann ich nur jQuery empfehlen, da dort ein AJAX-Aufruf relativ leicht zu erstellen ist. Und das erstellen/verarbeiten der Daten im DIV-Element ist auch ziemlich einfach.
Ich hoffe ich habe dich richtig verstanden und konnte dir helfen. |
|
Back to top |
|
Seevan Smarty n00b
Joined: 09 May 2012 Posts: 4
|
Posted: Wed May 23, 2012 10:39 pm Post subject: |
|
|
erst mal danke fürs antworten , dan zu mein problem .
Die Rohstoffe werden ja schon ausgelesen und über ein tpl eingebunden , wie ich ja schon oben beschrieben hatte .
Zu jQuery das kann ich nicht verwenden der engine benutzt schon 2 frameworks und wen ich jetzt noch jQuery benutzte werden andere script blockiert .
aber mal was anders ich verwende jetzt auch eine edwas andere art meine rohstoffe auszugeben .
und zwar so
Code: |
<center>
<table>
<tr>
<td id="bild_1" name"Credits" titel="Credits" class="center"><img src="ws.fv/cred.png"></td>
<td id="bild_2" name"Metalerz" titel="Metalerz" class="center"><img src="ws.fv/metallerz.png"></td>
<td id="bild_3" name"Mineralie" titel="Mineralie" class="center"><img src="ws.fv/min.png"></td>
<td id="bild_4" name"Kristall" titel="Kristall" class="center"><img src="ws.fv/kris.png"></td>
<td id="bild_5" name"Tibanngas" titel="Tibanngas" class="center"><img src="ws.fv/tibanna.png"></td>
<td id="bild_6" name"Durastahl" titel="Durastahl" class="center"><img src="ws.fv/dura.png"></td>
<td id="bild_7" name"Deuterium" titel="Deuterium" class="center"><img src="ws.fv/teri.png"></td>
<td id="bild_8" name"Energie" titel="Energie" class="center"><img src="ws.fv/ener.png"></td>
</tr>
<tr>
<td class="center" id="res1">{$object_resource1}</td>
<td class="center" id="res2">{$object_resource2}</td>
<td class="center" id="res3">{$object_resource3}</td>
<td class="center" id="res4">{$object_resource4}</td>
<td class="center" id="res5">{$object_resource5}</td>
<td class="center" id="res6">{$object_resource6}</td>
<td class="center" id="res7">{$object_resource7}</td>
<td class="center" id="res8">{$object_resource8}</td>
</tr>
</table>
</center>
|
so werden die Rohstoffe auch immer am richtig platz angezeigt und man kan später besser mit arbeiten.
jetzt brauch ich nur noch eine metohde wie ich andwerder nur das tpl jede sec im index.tpl neuladen lasse oder eine metohde wie ich inerhalb des ress.tpl einen reload refesh loop oder irgend was anderes.
wen das mit einem kleinen script zu regeln ist würde ich mich sehr freuen wen mir einer ein beispiel für eine id posten könnte . Würde mich aber auch freun wen mir wer sagt über was ich mich da dan schlau machen mus.
ach die FW die schon benutzt werden sind Prototype und scriptaculous |
|
Back to top |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Thu May 24, 2012 7:15 am Post subject: |
|
|
Ja gut, auch diese JS-Frameworks haben sehr leichte AJAX-Schnittstellen.
Jetzt musst du eine Datei erstellen z. B. GetResources.php und diese Datei dann per AJAX aufrufen. Die Datei nimmt zum Beispiel ein POST-Request entgegen mit der "Variable" "UserID"
Dadurch, dass du die Variable UserID hast, kannst du z. B. aus der DB alle Rohstoffe für den Benutzer mit der UserID X holen und dann an den AJAX-Aufruf zurückgeben. Dort verarbeitest du dann die Daten indem du die TD-Tags mit den IDs res1 - res8 "ansprichst" und den Wert veränderst. Nun musst du mit javascript ein interval setzen, welches den AJAX-Aufruf alle X Sekunden macht ==> setInterval()
Da ich mich wenig mit den JS-Frameworks auskenne die dein Engine verwendet, kann ich schlecht ein Beispiel posten. Aber wenn du magst, kann ich dir ein jQuery Beispiel schicken.
Außerdem verwende ich immer eine art ScriptHandler für AJAX-Aufrufe. Ich rufe immer diese Klasse/Datei auf und übergebe Werte unter anderem die Klasse die dann den eigentlichen Befehl ausgibt. Den Rückgabewert gebe ich dann als JSON an den AJAX-Aufruf zurück
(Wie gesagt, wenn du willst....) |
|
Back to top |
|
Seevan Smarty n00b
Joined: 09 May 2012 Posts: 4
|
Posted: Thu May 24, 2012 10:36 am Post subject: |
|
|
nah das hört sich doch schon mal gut an das müst ich doch irgend wie hinbekommen . Ich würde dein angebot mit dem jQuery Beispiel gerne annehmen evtl habe ich ja auch immer nur was falsch gemacht .Immer hin habe ich dan ein beispiel was gehen müste und das kan ich den ja versuchen irgend wie mit mein FW anzu passen. |
|
Back to top |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Thu May 24, 2012 1:12 pm Post subject: |
|
|
Also in jQuery würde ich folgende Funktion für den Aufruf zum AJAX-Request machen:
Code: |
function GetResources(userID) {
$.ajax({
type: "POST",
url: "./GetResources.php",
data: ({UserID : userID}),
context: document,
success: function(msg){
if(!msg.error) {
//verarbeite msg so, dass die Daten alle in die TDs reinkommen ==> msg ist das Klassenobjekt
}
}
});
}
|
in deiner GetResources.php (ist eine klasse) müsstest du das ganze dann deine Daten so zurückgeben:
Code: | echo json_encode($this) |
Damit hast du dann alle Eigenschaften/Member die du auch in der Klasse hast....
PS: msg.error funktioniert nur, wenn deine Klasse auch die Eigenschaft error hat....
Und vergiss nicht in der GetResources-Datei die Klasse dann zu initialisieren |
|
Back to top |
|
Seevan Smarty n00b
Joined: 09 May 2012 Posts: 4
|
Posted: Thu May 24, 2012 4:21 pm Post subject: |
|
|
hmm das ist wohl doch noch zu hoch für mich aber trotzdem danke ich werde mir das speichern und dan später als update ins spielbringen . Mus mir wohl erst mal noch mehr php und javascript/jaxa grundwiessen verschaffen .
Das so eine kleinigkeit so kompleziert sein kann hät ich net gedacht da ich ja schon mit anderen script gearbeitet habe oder noch dran arbeite und die eigentlich ziehmlich einfach gestrickt sind aber nahja man lernt halt nie aus ^^ .
aber das mit der userid wird mir späterauf jeden fall sehr helfen danke noch mal. |
|
Back to top |
|
|