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

Mehrere While-Schleifen in Abhängkeit richtig ausgeben

 
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
HatschiBu
Smarty n00b


Joined: 19 May 2014
Posts: 2

PostPosted: Mon May 19, 2014 12:01 pm    Post subject: Mehrere While-Schleifen in Abhängkeit richtig ausgeben Reply with quote

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 Wink )

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 Sad und bin jetzt schon über eure Antworten dankbar...

Liebe Grüße, Achim Wink Wink Wink Wink Wink Wink
Back to top
View user's profile Send private message
Grizzly
Smarty Pro


Joined: 15 Apr 2011
Posts: 172
Location: Germany

PostPosted: Mon May 19, 2014 1:27 pm    Post subject: Reply with quote

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


Joined: 19 May 2014
Posts: 2

PostPosted: Mon May 19, 2014 2:20 pm    Post subject: Reply with quote

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
View user's profile Send private message
U.Tews
Administrator


Joined: 22 Nov 2006
Posts: 5068
Location: Hamburg / Germany

PostPosted: Mon May 19, 2014 6:41 pm    Post subject: Reply with quote

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
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