loop mit Variable

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
webazubi
Mitglied
Beiträge: 96
Registriert: 30.07.2005 01:13

loop mit Variable

Beitrag von webazubi »

Hallo.
Ich will mir über eine Funktione eine Variable ausgeben und mit dieser einen Loop definieren. MEINE_VARIABLE wird durch eine Funktion erzeugt, ist also dynamisch.
Geht das irgendwie? So jedenfalls nicht:

Code: Alles auswählen

<!-- BEGIN {MEINE_VARIABLE} -->
...
<!-- END {MEINE_VARIABLE} -->
ergibt:
Parse error: parse error, unexpected T_STRING in meinedatei.php(175) : eval()'d code on line 25
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

[php:foreach]

Variablen müssen in PHP übrigens mit $ beginnen.
KB:knigge
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Das ist ein HTML Kommentar:
<!-- BEGIN {MEINE_VARIABLE} -->
Das kannst Du nicht zwischen <?php ?> einfügen, außer Du gibst es z.B. mit echo aus.

z.B. kannst Du mit foreach sowas machen:

Code: Alles auswählen

<?php
foreach ( $array as $element )
{
?>
<!-- BEGIN {<?= $element ?>} -->
<?php
}
?>
Ansonsten stell mal ein bisschen mehr Code zur Verfügung oder erklär was Du machen willst.

Gruß
Marc
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
webazubi
Mitglied
Beiträge: 96
Registriert: 30.07.2005 01:13

Beitrag von webazubi »

mgutt hat geschrieben: Ansonsten stell mal ein bisschen mehr Code zur Verfügung oder erklär was Du machen willst.
Okay, versuche iche es mal kurz zu erklären.
Es geht um eine Termindatenbank. Eine MySQL-Abfrage gibt alle Termine sowie jeweils die Zusatzinformationen aus. Diese Zusatzinformationen selektiere ich anschließend mit php.
Beispiel: Alle Termine, wo die TERMIN_ART = 12 (für Konzert) ist, sollen an der enstprechenden Stelle meiner HTML-Template-Datei ausgegeben werden.
Also ganz normal:

Code: Alles auswählen

$template->assign_block_vars('konzerte', array(
'T_ANF_AM' => anfangsdatum,
'T_ANF_UM' => anfangszeit
 ...)
Jetzt kommt aber die nächste Veranstaltungskategorie, von mir aus Kino. Wieder mache ich wie oben assign_block_vars('kino', array( ...

In der entsprechenden Html-Datei muss nun ich alle Veranstaltungskategorien aufführen:

Code: Alles auswählen

<!-- IF konzerte --><!-- BEGIN konzerte --><!-- END konzerte -->
<!-- IF kino --><!-- BEGIN kino --><!-- END kino -->
Da ich viele Kategorien und Zusatzinfos habe, habe ich viel Code und hoffte, eine Schleife machen zu können, so dass ich nicht jede Veranstaltungskategorie einzeln in die Html-Datei schreiben muss.

Deine PHP-Lösung schaue ich mir mal näher an, vielleicht komme ich damit weiter. Danke.
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Wenn ich das richtig verstanden habe:

Code: Alles auswählen

foreach ($items as $item)
{
  $template->assign_block_vars('items', array(
    'TITLE' => $item['title'])
  );

  foreach ($items['subitems'] as $subitem)
  {
    $template->assign_block_vars('items.subitems', array(
      'TITLE' => $subitem['title'])
    );
  }
}
und im Template:

Code: Alles auswählen

<!-- BEGIN items -->
<h1>{items.TITLE}</h2>
<ul>
  <!-- BEGIN subitems -->
  <li>{items.subitems.TITLE}
  <!-- END subitems -->
</ul>
<!-- END items -->
Daraus solltest du dir einen entsprechenden Code basteln können. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
webazubi
Mitglied
Beiträge: 96
Registriert: 30.07.2005 01:13

Beitrag von webazubi »

S2B hat geschrieben: Daraus solltest du dir einen entsprechenden Code basteln können. :wink:
Danke. Das mit subloops hatte ich schon gelesen aber nicht hinbekommen.
Habe folgendes versucht und stoße auf das Problem, das unter der jeweiligen Terminart alle Termine, also auch die ohne die entsprechende Terminart, angezeigt werden.
Gruppiert werden soll nach dem Feld [Art].
Mein Array $termine :

Code: Alles auswählen

array(12)
 { 
 [0]=>  array(9) 
 { 
 ["titel"]=>  string(37) "Schmetterlinge" 
 ["sortierdatum"]=>  string(8) "20080123" 
 ["id"]=>  string(3) "268" 
 ["art"]=>  string(2) "21" 
 } 
 [1]=>  array(9) 
 { 
 ["titel"]=>  string(101) "Testtermin2" 
 ["sortierdatum"]=>  string(8) "20080124" 
 ["id"]=>  string(3) "505" 
 ["art"]=>  string(2) "23" 
 } 
 }
meine PHP:

Code: Alles auswählen

foreach ($termine as $item)
{
  $template->assign_block_vars('items', array(
    'ART' => $item['art'])
  ); 

foreach ($termine as $subitem)
  {
    $template->assign_block_vars('items.subitems', array(
      'TITLE' => $subitem['titel'])
    );
  }
}	
Meine html

Code: Alles auswählen

	<!-- BEGIN items -->
<h1>{items.ART}</h2>
<ul>
  <!-- BEGIN subitems -->
  <li>{items.subitems.TITLE}</li>
  <!-- END subitems -->
</ul>
<!-- END items -->
Mein Ergebnis:
21
* Schmetterlinge
* Testtermin2

23
* Schmetterlinge
* Testtermin2


Wie kann ich das gruppieren, so das unter der ART 21 nur der Termin Schmetterlinge und nicht die anderen (23) erscheint?
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Bau Dein Array besser auf. Und zwar im Format:

Code: Alles auswählen

array('angabe von art' => sub_array())
dann macht das mit zwei foreachs auch mehr sinn.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
webazubi
Mitglied
Beiträge: 96
Registriert: 30.07.2005 01:13

Beitrag von webazubi »

mgutt hat geschrieben:Bau Dein Array besser auf. Und zwar im Format:

Code: Alles auswählen

array('angabe von art' => sub_array())
Kannst Du mir einen Tipp geben - ich kriege das nicht hin.

Bislang hatte ich nach der SQL-Abfrage und innerhalb einer for-Schleife mein Array mit array_push gefüllt.
Jetzt müsste ich also ein Unterarray erstellen? Also etwa sowas:

Code: Alles auswählen

array($art => array_push($termine,array
(
titel => $titel, 
sortierdatum => $anfam2,
...
	)
)
Leider klappt das nicht.
Antworten

Zurück zu „Coding & Technik“