View previous topic :: View next topic |
Author |
Message |
bufffuchs Smarty Rookie
Joined: 19 Apr 2010 Posts: 11
|
Posted: Wed Jun 06, 2012 6:05 pm Post subject: array ausgabe im template |
|
|
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 |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Fri Jun 08, 2012 7:28 am Post subject: |
|
|
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 |
|
bufffuchs Smarty Rookie
Joined: 19 Apr 2010 Posts: 11
|
Posted: Thu Jun 14, 2012 9:26 pm Post subject: |
|
|
das array kommt aus der daten bank |
|
Back to top |
|
bufffuchs Smarty Rookie
Joined: 19 Apr 2010 Posts: 11
|
Posted: Fri Jun 15, 2012 5:53 pm Post subject: |
|
|
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 |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Fri Jun 15, 2012 6:50 pm Post subject: |
|
|
Wenn du das ganze aus der Datenbank holst, dann ist es ein ganz einfaches Spiel 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 |
|
Back to top |
|
bufffuchs Smarty Rookie
Joined: 19 Apr 2010 Posts: 11
|
Posted: Fri Jun 15, 2012 6:57 pm Post subject: |
|
|
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 |
|
Back to top |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Fri Jun 15, 2012 7:36 pm Post subject: |
|
|
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 |
|
bufffuchs Smarty Rookie
Joined: 19 Apr 2010 Posts: 11
|
Posted: Fri Jun 15, 2012 7:50 pm Post subject: |
|
|
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 |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Fri Jun 15, 2012 8:14 pm Post subject: |
|
|
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 |
|
bufffuchs Smarty Rookie
Joined: 19 Apr 2010 Posts: 11
|
Posted: Fri Jun 15, 2012 9:00 pm Post subject: |
|
|
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}
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 |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Sat Jun 16, 2012 8:30 am Post subject: |
|
|
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 |
|
bufffuchs Smarty Rookie
Joined: 19 Apr 2010 Posts: 11
|
Posted: Sat Jun 16, 2012 2:01 pm Post subject: |
|
|
ich habs hinbekommen, eigentlich simple wenn man mal dahinter steigt
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 |
|
|