verschachteln von Blöcken mit PHPLIB

abakuz

Mitglied
Hallo Zusammen,
ich hab mal wieder ein Problem mit PHPLIB.
Ich versuche seit 2 Tagen verschachtelte Blöcke darzustellen, doch leider ohne Erfolg.

Mein Problem:
Ich generiere die Buchstaben A-Z durch eine For-Schleife.
Jedem Buchstaben wird ein Link aus der DB mit dem jeweiligen Anfangsbuchstaben zugeordnet.

In der Version unten, zeigt er mir nur die Buchstaben an, wo auch ein
Wert in der DB vorhanden ist, das ist auch soweit richtig.

Nun zeigt er mir aber die Buchstaben mehrmals mit unterschiedlichen Werten an. z.B.: wenn in der DB 3 Einträge vorhanden sind die mit A beginnen, wird mir

A
Abakus

A
Alkohol


A
Autohändler

B
.
.
.

angezeigt. Ich möchte aber gerne das er mir die Werte alle unter einem A anzeigt, sonst ergibt es ja keinen Sinn.

Ich habe auch schon eine "dummy", ohne Template, getestet...funktioniert wunderbar. hier der Code vom "dummy".



PHP:
//A-Z
for($i=65; $i<=90 ;$i++){ //ASCII-Code --> Die Großbuchstaben (Code 65 bis 90), die Kleinbuchstaben (Code 97 bis 122)
	$letter=chr($i);
	$letter_small=strtolower($letter);
	echo $letter."<br><br>";
			
	$sql="SELECT c_title, clicks, id FROM content_title WHERE LEFT(c_title,1)='$letter' OR LEFT(c_title,1)='$letter_small' ORDER BY c_title";

	$result=mysql_query($sql)or die( mysql_error());
	while ($erg = mysql_fetch_assoc($result)){
		$ergTit = "<a href='db_beispiel.php?id={$erg['id'] }'>{$erg['c_title']}</a>&nbsp;<br>Hits:[{$erg['clicks']}]<br>";
		
		$anzahl = (mysql_num_rows($result));
		if ($anzahl){
			echo $ergTit."<br>";
		}
		
	}//while

}//for

Wie gesagt, das funktioniert auch wunderbar.


Und hier die Version mit PHPLIB-Temlate (nix wunderbar):

PHP:
if (isset ($themen)){
	$tpl->set_file("themen", "$themen");
	$tpl->set_block("themen", "blockaussen", "blockthemen");
	

			for($i=65; $i<=90 ;$i++){ //ASCII-Code --> Die Großbuchstaben (Code 65 bis 90), die Kleinbuchstaben (Code 97 bis 122)
				$letter=chr($i);
				$letter_small=strtolower($letter);			
				$tpl->set_var(array ("AZ" => $letter));
								
				$sql="SELECT c_title, clicks, id FROM content_title WHERE LEFT(c_title,1)='$letter' OR LEFT(c_title,1)='$letter_small' ORDER BY c_title";
				$result=mysql_query($sql)or die( mysql_error());
				

				while ($erg = mysql_fetch_assoc($result)){
	    			$ergTit = "<a href='db_beispiel.php?id={$erg['id'] }'>{$erg['c_title']}</a>&nbsp;<br>Hits:[{$erg['clicks']}]<br>";
		    		$tpl->set_var(array ("DBLINK" => $ergTit));
					$tpl->parse("blockthemen", "blockaussen", true);
					$tpl->parse("THEMEN", "blockthemen");
				}//while
			}//for
}//if

Hinweis:
$themen beinhaltet:

PHP:
<!-- BEGIN blockaussen -->
<div id="az">
		<div class="az">{AZ}</div><div class="title">{DBLINK}</div>
</div>
<!-- END blockaussen -->

THEMEN ist der Platzhalter in meinem Haupttemplate wohin der gesamte
Inhalt am Ende geparst werden soll.

Ich habe schon viel herumprobiert, habe auch schon probiert mit "blockinnen" den DBLINK zu erst komplett auszulesen, aber genau da liegt
mein Problem, ich bekomme es nicht hin, das er mir verschachtelte Templates richtig anzeigt.

Wäre schön wenn mir jemand helfen könnte/würde.
Vielen Dank im vorraus.

abakuz
 
Probier mal Folgendes:
PHP:
<?php

	$query = '
		SELECT
		        `c_title`,
		        `clicks`,
		        `id`,
		        UCASE(LEFT(`c_title`, 1)) AS `anfangszeichen`
		  FROM
		        `content_title`
		  GROUP BY
		        LCASE(LEFT(`c_title`, 1))
		  ORDER BY
		        `c_title`
		';
	$result = mysql_query($query)
		or die(mysql_error());
	$prev = ''
	echo '<ul>';
	while( $row = mysql_fetch_assoc($result) ) {
		if( $prev != $row['anfangszeichen'] ) {
			if( !empty($prev) ) {
				echo '</ul></li>';
			}
			echo '<li>'.$row['anfangszeichen'].'<ul>';
			$prev = $row['anfangszeichen'];
		}
		echo '<li><a href="db_beispiel.php?id='.$row['id'].'">'.$row['c_title'].'</a>&nbsp;<br>Hits:['.$row['clicks'].']</li>';
        }
	echo '</ul>';

?>
 
Danke für die Mühe Gumbo... :)

Leider ist es nicht das was ich brauche, du hast lediglich die "dummy"-Version anders dargestellt.
Was ich benötige ist eine Hilfe für Template-Verschachtelung mit PHPLIB.

Die von Dir gezeigte Version hat leider nichts mit Templates zu tun.
trotzdem thx...
 
Guten Morgen,
haben die Template-Profis Urlaub...? :-)

ok, ich geb's ja zu, ich schiebe grad mal ne Runde... ;-)

Also, ich bekomme einfache Blöcke hin, aber mit den verschachtelten Blöcken will es nicht
funktionieren, kann mir bitte jemand einen Tipp geben, wie man mit PHPLIB-Template-System verschachtelte Blöcke darstellt und diese richtig parst?

Will ja keinen fertigen Code... :-).... nur ein "klitzekleines" Beispiel wie es funktioniert.
Ein Link würde mir sicherlich auch weiterhelfen.... Dr.Google hab ich auch schon gefragt, aber irgendwie scheint er auch Urlaub zu haben.
 
Zuletzt bearbeitet:
Zurück