Smarty Forum Index Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon.

.tpl ausgabe Problem

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: German
View previous topic :: View next topic  
Author Message
Seevan
Smarty n00b


Joined: 09 May 2012
Posts: 4

PostPosted: Wed May 09, 2012 4:19 pm    Post subject: .tpl ausgabe Problem Reply with quote

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
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Wed May 23, 2012 1:12 pm    Post subject: Reply with quote

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
View user's profile Send private message Visit poster's website
Seevan
Smarty n00b


Joined: 09 May 2012
Posts: 4

PostPosted: Wed May 23, 2012 10:39 pm    Post subject: Reply with quote

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
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Thu May 24, 2012 7:15 am    Post subject: Reply with quote

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
View user's profile Send private message Visit poster's website
Seevan
Smarty n00b


Joined: 09 May 2012
Posts: 4

PostPosted: Thu May 24, 2012 10:36 am    Post subject: Reply with quote

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
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Thu May 24, 2012 1:12 pm    Post subject: Reply with quote

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
View user's profile Send private message Visit poster's website
Seevan
Smarty n00b


Joined: 09 May 2012
Posts: 4

PostPosted: Thu May 24, 2012 4:21 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    Smarty Forum Index -> Language: German All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group
Protected by Anti-Spam ACP