|
Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon. |
|
View previous topic :: View next topic |
Author |
Message |
HatschiBu Smarty n00b
Joined: 19 May 2014 Posts: 2
|
Posted: Mon May 19, 2014 12:01 pm Post subject: Mehrere While-Schleifen in Abhängkeit richtig ausgeben |
|
|
Hallo.
Ich denke ich hab einen Gedankenfehler.
Ich möchte eine Rechnungsausgabe programmieren auf welcher man die letzten 10 Rechnungen die ausgestellt wurden sehen kann, daher dacht ich mir ich hole aus der Datenbank die Kopfdaten und anschließend in Abhängigkeit dieser die Bodydaten.
Würde dann wie folgt aussehen...
(Script nur symbolisch! Mir geht es um die Funktion )
Code: |
$int01 = 0;
$header_abf = mysql_query("SELECT ... where kunde = $kunde ORDER BY RechnungsID ASC, LIMIT 10");
while ($header_anz = mysql_fetch_array($header_abf )) {
$rechnunggsnummer = $header_anz[rechnungsnummer];
uvm...
$rechnungsres[$int01]['RID'] = $rechnunggsnummer ;
uvm...
$int02 = 0;
$body_abf = mysql_query("SELECT ... [b] where rechnungsnummer = $rechnunggsnummer[/b] AND kunde = $kunde");
while ($body_anz = mysql_fetch_array($body_abf )) {
$positionsnummer = $body_abf [positionsnummer];
$artikelnummer= $body_abf [artikelnummer];
uvm...
$rechnungsdetailres[$int02]['POS'] = $positionsnummer;
$rechnungsdetailres[$int02]['ARTIKEL'] = $artikelnummer;
uvm...
$int02++;
}
$int01++;
}
|
Soweit so gut. Oder doch nicht?
Übergabe zum Template:
Code: |
$T->assign('rechnungskopf', $rechnungsres);
$T->assign('rechnungspositionen', $rechnungsdetailres); |
Im TEMPLATE mach ich nun folgendes...
Code: |
{foreach name=rechnungskopf_letztenzehn from=$rechnungskopf item="kopfdaten"}
{$kopfdaten.RID} | uvm...
{foreach name=rechnungsdetails_letztenzehn from=$rechnungspositionen item="bodydaten"}
{$bodydaten.POS} | {$bodydaten.POS} | uvm....
{/foreach}
{/foreach}
|
Mein Problem ist jetzt, dass ich für alle Rechnungsheader die gleichen Rechnungsbodies angezeigt bekomme.
So ist es:
Code: |
Rechnungskopf1:
-> Artikel 1 von Rechnungskopf 1
-> Artikel 2 von Rechnungskopf 1
-> Artikel 3 von Rechnungskopf 1
Rechnungskopf2:
-> Artikel 1 von Rechnungskopf 1
-> Artikel 2 von Rechnungskopf 1
-> Artikel 3 von Rechnungskopf 1
Rechnungskopf3:
-> Artikel 1 von Rechnungskopf 1
-> Artikel 2 von Rechnungskopf 1
-> Artikel 3 von Rechnungskopf 1
|
Und so sollte es sein:
Code: |
Rechnungskopf1:
-> Artikel 1 von Rechnungskopf 1
-> Artikel 2 von Rechnungskopf 1
-> Artikel 3 von Rechnungskopf 1
Rechnungskopf2:
-> Artikel 1 von Rechnungskopf 2
-> Artikel 2 von Rechnungskopf 2
-> Artikel 3 von Rechnungskopf 2
Rechnungskopf3:
-> Artikel 1 von Rechnungskopf 3
-> Artikel 2 von Rechnungskopf 3
-> Artikel 3 von Rechnungskopf 3
|
Ich hoffe ich hab es verständlich genug ausdruckt was ich vorhabe und bin jetzt schon über eure Antworten dankbar...
Liebe Grüße, Achim |
|
Back to top |
|
Grizzly Smarty Pro
Joined: 15 Apr 2011 Posts: 172 Location: Germany
|
Posted: Mon May 19, 2014 1:27 pm Post subject: |
|
|
Ich weiß jetzt deinen Datenbanktabellen-Aufbau nicht, aber geht es nicht, dass du alle daten mit nur einer einzigen SQL-Abfrage holst?
Ansonsten müsstest du alles in ein Array/Objekt speichern und dir dann in der zweiten Schleife nur die holen vom aktuellen Rechnungskopf.
ODER:
du übergibst an smarty deine Klasse und rufst die Methode GetHeader oder so auf, holst dir deine Dinge und rufst in Smarty dann deine zweite Methode GetArticelForHeader oder so auf. Also im Prinzip so, dass du den aktuellen PHP Code als "Smarty-Code" machst...
Alternative dazu wäre ja dann eine Smarty-Funktion. |
|
Back to top |
|
HatschiBu Smarty n00b
Joined: 19 May 2014 Posts: 2
|
Posted: Mon May 19, 2014 2:20 pm Post subject: |
|
|
Nein... Es ist mir durch Prüfungen und Zwischenschritte nicht möglich nur eine einzige Abfrage zu machen.
Quote: |
Ansonsten müsstest du alles in ein Array/Objekt speichern und dir dann in der zweiten Schleife nur die holen vom aktuellen Rechnungskopf.
|
Wie würde diese Möglichkeit aussehen?
Der zweite Vorschlag kommt nicht in Frage. Dann könnte ich mein damals selbstgebautes Template-Engine auch wieder verwenden und ich will doch wegen der sauberen Programmierung weg von dem. |
|
Back to top |
|
U.Tews Administrator
Joined: 22 Nov 2006 Posts: 5068 Location: Hamburg / Germany
|
Posted: Mon May 19, 2014 6:41 pm Post subject: |
|
|
Zum Beispiel so:
Code: | $int01 = 0;
$header_abf = mysql_query("SELECT ... where kunde = $kunde ORDER BY RechnungsID ASC, LIMIT 10");
while ($header_anz = mysql_fetch_array($header_abf )) {
$rechnunggsnummer = $header_anz[rechnungsnummer];
uvm...
$rechnungsres[$int01]['RID'] = $rechnunggsnummer ;
uvm...
$int02 = 0;
$body_abf = mysql_query("SELECT ... [b] where rechnungsnummer = $rechnunggsnummer[/b] AND kunde = $kunde");
while ($body_anz = mysql_fetch_array($body_abf )) {
$positionsnummer = $body_abf [positionsnummer];
$artikelnummer= $body_abf [artikelnummer];
uvm...
$rechnungsres[$int01]['DETAIL'][$int02]['POS'] = $positionsnummer;
$rechnungsres[$int01][DETAIL'][$int02]['ARTIKEL'] = $artikelnummer;
uvm...
$int02++;
}
$int01++;
} |
Code: | $T->assign('rechnungsres', $rechnungsres); |
Code: | {foreach from=$rechnungsres item="rechnung"}
{$rechnung.RID} | uvm...
{foreach from=$rechnung.DETAIL item="bodydaten"}
{$bodydaten.POS} | {$bodydaten.POS} | uvm....
{/foreach}
{/foreach} |
|
|
Back to top |
|
|
|
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
|