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

array ausgabe im template

 
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
bufffuchs
Smarty Rookie


Joined: 19 Apr 2010
Posts: 11

PostPosted: Wed Jun 06, 2012 6:05 pm    Post subject: array ausgabe im template Reply with quote

hy, ich stehe voll auf dem schlauch. ich übergebe ein array aus einer php in das template.
funktioniert.
in dem array ist folgendes drin

Code:

array
(
    [0] => Array
        (
            [fahrer] => 91
            [platz] => 1
            [user] => neuer
        )

    [1] => Array
        (
            [fahrer] => 87
            [platz] => 2
            [user] => neuer
        )

    [2] => Array
        (
            [fahrer] => 97
            [platz] => 3
            [user] => anderer
        )

    [3] => Array
        (
            [fahrer] => 93
            [platz] => 4
            [user] => anderer
        )


die ausgabe funktioniert ohne probleme NUR möchte ich ja nicht das der user im array mehrmals ausgegeben wird sondern 1 mal

die ausgabe sollte so aussen

user = neuer fahrer= 91 fahrer=87 platz =1 platz= 2
user = anderer (hier natürlich genauso)
Back to top
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Fri Jun 08, 2012 7:28 am    Post subject: Reply with quote

Hi,

dein Array muss sortiert nach dem User vorliegen.

Dann machst du in deiner Schleife eine Abfrage ob der aktuelle Array-User mit dem Letzten User (temporäre variable) der selbe ist, wenn ja, dann gebe nur den Fahrer und den Platz an. Ansonsten speichere den Array-User in die Temporäre Variable und gebe den User auch mit aus.

Was allerdings zum problem führt, dass du nicht zu deinem Ergebnis kommst dass der user steht dann DIE fahrer und dann DIE Plätze

Wie baust du denn dein Array auf? Also von wo holst du dir deine Daten?
Back to top
View user's profile Send private message Visit poster's website
bufffuchs
Smarty Rookie


Joined: 19 Apr 2010
Posts: 11

PostPosted: Thu Jun 14, 2012 9:26 pm    Post subject: Reply with quote

das array kommt aus der daten bank
Back to top
View user's profile Send private message
bufffuchs
Smarty Rookie


Joined: 19 Apr 2010
Posts: 11

PostPosted: Fri Jun 15, 2012 5:53 pm    Post subject: Reply with quote

Code:

Array
(
    [bufffuchs] => Array
        (
            [1] => Array
                (
                    [tipp_id] => 1
                    [user_id] => 7
                    [rennen] => 45
                    [saison] => 2012
                    [fahrer] => 88
                    [platz] => 1
                    [tipp_abgabe] => 2012-05-26 13:54:48
                    [berechnet] => 1
                    [gp_id] => 45
                    [punkte] => 10
                    [differenz] => 0
                    [jahr] => 2012
                    [datum] => 2012-05-27 14:00
                    [nr] => 6
                    [user] => bufffuchs
                )

            [2] => Array
                (
                    [tipp_id] => 2
                    [user_id] => 7
                    [rennen] => 45
                    [saison] => 2012
                    [fahrer] => 91
                    [platz] => 2
                    [tipp_abgabe] => 2012-05-26 13:54:48
                    [berechnet] => 1
                    [gp_id] => 45
                    [punkte] => 3
                    [differenz] => 3
                    [jahr] => 2012
                    [datum] => 2012-05-27 14:00
                    [nr] => 6
                    [user] => bufffuchs
                )

            [3] => Array
                (
                    [tipp_id] => 3
                    [user_id] => 7
                    [rennen] => 45
                    [saison] => 2012
                    [fahrer] => 93
                    [platz] => 3
                    [tipp_abgabe] => 2012-05-26 13:54:48
                    [berechnet] => 1
                    [gp_id] => 45
                    [punkte] => 10
                    [differenz] => 0
                    [jahr] => 2012
                    [datum] => 2012-05-27 14:00
                    [nr] => 6
                    [user] => bufffuchs
                )

        )

    [neuer] => Array
        (
            [4] => Array
                (
                    [tipp_id] => 4
                    [user_id] => 8
                    [rennen] => 45
                    [saison] => 2012
                    [fahrer] => 88
                    [platz] => 1
                    [tipp_abgabe] => 2012-05-26 15:54:48
                    [berechnet] => 1
                    [gp_id] => 45
                    [punkte] => 5
                    [differenz] => 0
                    [jahr] => 2012
                    [datum] => 2012-05-27 14:00
                    [nr] => 6
                    [user] => neuer
                )

            [5] => Array
                (
                    [tipp_id] => 5
                    [user_id] => 8
                    [rennen] => 45
                    [saison] => 2012
                    [fahrer] => 91
                    [platz] => 2
                    [tipp_abgabe] => 2012-05-26 15:54:48
                    [berechnet] => 1
                    [gp_id] => 45
                    [punkte] => 1
                    [differenz] => 3
                    [jahr] => 2012
                    [datum] => 2012-05-27 14:00
                    [nr] => 6
                    [user] => neuer
                )

            [6] => Array
                (
                    [tipp_id] => 6
                    [user_id] => 8
                    [rennen] => 45
                    [saison] => 2012
                    [fahrer] => 93
                    [platz] => 3
                    [tipp_abgabe] => 2012-05-26 15:54:48
                    [berechnet] => 1
                    [gp_id] => 45
                    [punkte] => 5
                    [differenz] => 0
                    [jahr] => 2012
                    [datum] => 2012-05-27 14:00
                    [nr] => 6
                    [user] => neuer
                )

        )
)

das array sieht nun so aus, jeder user baut ein array auf. jetzt habe ich das problem, wie gebe ich es im tpl aus O_o
Back to top
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Fri Jun 15, 2012 6:50 pm    Post subject: Reply with quote

Wenn du das ganze aus der Datenbank holst, dann ist es ein ganz einfaches Spiel Very Happy zumindets denke ich das ^^

nehmen wir mal an du hast eine Klasse namens "UserInformation"

Code:

<?php

class UserInformation extends Smarty
{
   public function __construct()
   {
      $this->assign("users", $this->getAllUsers());
      $this->assign("userinfo", $this);
      $this->display("userinfo.tpl");
   }
       
   public function getAllUsers()
   {
      //Hole alle BenutzerIDs aus der Datenbank und gebe Sie zurück als ARRAY
   }
   
   public function getInformationForUser($dbColumn, $userID)
   {
      //Hole alle Spalten mit dem Namen $dbColumn
      //für den Benuter mit der ID = $userID aus Datenbank
      //und gebe das Ergebnis zurück als ARRAY
   }
}

?>


Also du musst praktisch eine Instanz der Klasse erstellen und schon hast du im template alles was du brauchst. Mit dem Array mit den ganzen UserIDs musst du dann in der foreach-schleife auf die Funktion getInformationForUser zugreifen. Diese Funktion ist nur dafür da um bestimmte informationen für den Benutzer mit der ID X zu holen und dann zurückzugeben wieder als Array. Dieses verarbeitest du dann in Smarty. Ich gebe dir mal ein Beispiel:

Code:

{foreach $users as $user}
   User =
   {foreach $userinfo->getInformationForUser("fahrer", $user) as $fahrer}
      fahrer = {$fahrer}
   {/foreach}
   
   {foreach $userinfo->getInformationForUser("platz", $user) as $platz}
      platz = {$platz}
   {/foreach}
   
   {foreach $userinfo->getInformationForUser("saison", $user) as $saison}
      saison = {$saison}
   {/foreach}
   <br/>
{/foreach}


Ich hoffe das klappt (ich habe es nicht getestet) und ich hoffe du verstehst was ich meine ^^

Wenn du noch fragen haben solltest, dann sag bescheid Wink
Back to top
View user's profile Send private message Visit poster's website
bufffuchs
Smarty Rookie


Joined: 19 Apr 2010
Posts: 11

PostPosted: Fri Jun 15, 2012 6:57 pm    Post subject: Reply with quote

danke dir erstmal für die antwort. das problem ist, das er ja alle user holt und diese dann mit den dazugehörigen tipps ausgibt, wie es sein soll.
mit dieser funktion blicke ich nicht wirklich durch, also würde ich das lieber irgendwie ,mit smarty realisieren, wenn möglich Smile
Back to top
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Fri Jun 15, 2012 7:36 pm    Post subject: Reply with quote

Ich verstehe nicht ganz was dein erwähntes "Problem" ist. Wenn du doch mit Datenbanken arbeitest, kannst du doch bestimmen was du dir holst.

Und mit Smarty realisierst du das ja auch. Du rufst im template einfach immer eine Funktion auf, die dir die nötigen Werte als Array aus der DB zurückliefert.

Das problem ist, dass du es sehr kompliziert bzw. unübersichtlich und nicht sehr schön machen müsstest, wenn du dir alles holst und dann alles so ausgibst wie du es willst. Würdest du zum Beispiel eine Ausgabe haben wollen wie:

User = neuer:
Platz = 1
Fahrer = 5
Saison = 2012
Platz = 4
Fahrer = 20
Saison = 2010
....


Dann würde es sehr leicht realisiert werden können
Back to top
View user's profile Send private message Visit poster's website
bufffuchs
Smarty Rookie


Joined: 19 Apr 2010
Posts: 11

PostPosted: Fri Jun 15, 2012 7:50 pm    Post subject: Reply with quote

die ausgabe sollte am ende so aussehen.

Username: | 1.platz | 2.platz | 3.platz | 4.platz.........
hier username | fahrer | fahrer | fahrer | fahrer........

2. username | fahrer | fahrer | fahrer | fahrer........

bei fahrer sollen dann die fahrer auftauchen im jeweiligen rennen die plätze belegt haben. über fahrer werde ich dann die punkte klein anzeigen die der user mit seinem tipp erreich hat
hoffe ist verständlich
Back to top
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Fri Jun 15, 2012 8:14 pm    Post subject: Reply with quote

Sorry ich hatte vorhin dein Array falsch "gesehen" versuchs mal in deinem Smarty-Template so:

Code:

{assign var="tempUser" value=""}
{foreach $users as $user}
   {if $user@key != $tempUser}
      {assign var="tempUser" value=$user@key}
      Username: | {$user@key}
   {/if}   
   
   {foreach $user as $fahrer}
      fahrer = {$fahrer.fahrer}
   {/foreach}
   
   {foreach $user as $saison}
      saison = {$saison.saison}
   {/foreach}
   
   {foreach $user as $platz}
      platz = {$platz}
   {/foreach}
   <br/>
   {continue}
{/foreach}


Die Variable $users ist dann dein übergebenes Array an Smarty welches du oben gepostet hast!
Back to top
View user's profile Send private message Visit poster's website
bufffuchs
Smarty Rookie


Joined: 19 Apr 2010
Posts: 11

PostPosted: Fri Jun 15, 2012 9:00 pm    Post subject: Reply with quote

bin jetzt soweit das ich mir verschachtelten foreach´s zu folgendem ergebniss komme

Code:

{foreach from=$gesamt key="geskey" item="daten" }
     Daten 1 foreach: {$geskey} = {$daten} =>
          {foreach from=$daten key=id item=value}
         Daten 2 foreach: {$id} = {$value} =></br>
                {foreach from=$value key=key item=daten}
                    &nbsp;&nbsp;Daten 3 foreach: {$key} = {$daten}<br />
                {/foreach}
     {/foreach}
   <br><br>
{/foreach}

gibt folgendes aus
Code:

Daten 1 foreach: rene = Array => Daten 2 foreach: 7 = Array =>
       Daten 3 foreach: tipp_id = 7
       Daten 3 foreach: user_id = 4
       Daten 3 foreach: rennen = 45
       Daten 3 foreach: saison = 2012
       Daten 3 foreach: fahrer = 88
       Daten 3 foreach: platz = 1
       Daten 3 foreach: tipp_abgabe = 2012-05-26 14:54:48
       Daten 3 foreach: berechnet = 1
       Daten 3 foreach: gp_id = 45
       Daten 3 foreach: punkte = 5
       Daten 3 foreach: differenz = 0
       Daten 3 foreach: jahr = 2012
       Daten 3 foreach: datum = 2012-05-27 14:00
       Daten 3 foreach: nr = 6
       Daten 3 foreach: user = rene
Daten 2 foreach: 8 = Array =>
       Daten 3 foreach: tipp_id = 8
       Daten 3 foreach: user_id = 4
       Daten 3 foreach: rennen = 45
       Daten 3 foreach: saison = 2012
       Daten 3 foreach: fahrer = 93
       Daten 3 foreach: platz = 2
       Daten 3 foreach: tipp_abgabe = 2012-05-26 13:54:48
       Daten 3 foreach: berechnet = 1
       Daten 3 foreach: gp_id = 45
       Daten 3 foreach: punkte = 1
       Daten 3 foreach: differenz = 1
       Daten 3 foreach: jahr = 2012
       Daten 3 foreach: datum = 2012-05-27 14:00
       Daten 3 foreach: nr = 6
       Daten 3 foreach: user = rene
Daten 1 foreach: iche = Array => Daten 2 foreach: 12 = Array =>
       Daten 3 foreach: tipp_id = 12
       Daten 3 foreach: user_id = 5
       Daten 3 foreach: rennen = 45
       Daten 3 foreach: saison = 2012
       Daten 3 foreach: fahrer = 93
       Daten 3 foreach: platz = 3
       Daten 3 foreach: tipp_abgabe = 2012-05-26 10:54:48
       Daten 3 foreach: berechnet = 1
       Daten 3 foreach: gp_id = 45
       Daten 3 foreach: punkte = 10
       Daten 3 foreach: differenz = 0
       Daten 3 foreach: jahr = 2012
       Daten 3 foreach: datum = 2012-05-27 14:00
       Daten 3 foreach: nr = 6
       Daten 3 foreach: user = iche
Daten 2 foreach: 11 = Array =>
       Daten 3 foreach: tipp_id = 11
       Daten 3 foreach: user_id = 5
       Daten 3 foreach: rennen = 45
       Daten 3 foreach: saison = 2012
       Daten 3 foreach: fahrer = 91
       Daten 3 foreach: platz = 2
       Daten 3 foreach: tipp_abgabe = 2012-05-26 10:54:48
       Daten 3 foreach: berechnet = 1
       Daten 3 foreach: gp_id = 45
       Daten 3 foreach: punkte = 3
       Daten 3 foreach: differenz = 3
       Daten 3 foreach: jahr = 2012
       Daten 3 foreach: datum = 2012-05-27 14:00
       Daten 3 foreach: nr = 6
       Daten 3 foreach: user = iche

jetzt bekomm ich im 3. foreach keinen zugriff auf z.b. saison
Back to top
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Sat Jun 16, 2012 8:30 am    Post subject: Reply with quote

Warum nimmst du nicht den Vorschlag von mir o.O

Mit meinem Vorschlag kannst du auf alle Daten zugreifen die dir in deinem Array zur verfügung stehen...
Back to top
View user's profile Send private message Visit poster's website
bufffuchs
Smarty Rookie


Joined: 19 Apr 2010
Posts: 11

PostPosted: Sat Jun 16, 2012 2:01 pm    Post subject: Reply with quote

ich habs hinbekommen, eigentlich simple wenn man mal dahinter steigt Very Happy

hier der code:
Code:

         {foreach from=$gesamt key="geskey" item="daten"}
         <div class="tipps_name">{$geskey|truncate:10:"..":true}</div>
            {foreach from=$daten key="id" item="value"}
               {foreach from=$value key="key" item="daten"}

               {/foreach}
<div class="tipps_pkt" title="" onmouseover="balloon.showTooltip(event,'{$value.p_name}<br />Rennposition: {$value.erg_pos}<br />Dein Tipp: {$value.tipp_pos}<br />Differenz: {$value.differenz}<br />TippPunkte: {$value.punkte}')" >{$value.p_name|truncate:8:"...":true}</div>
            {/foreach}
         <div class="right_holder"></div>
         {/foreach}
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