Probleme mit Smarty Templates

Kalma

Erfahrenes Mitglied
Hey Leute,

wieder mal nen kleines Problem. Ich wollte gestern Abend aus langweile ein Forum nachcoden. Das PHPbb. Schnappsidee, ich weiß^^. Naja, auf jeden Fall sagte ein Nachbar mir, der auch ein wenig programmiert, ich solle mir doch erstma Templates bebringen, damit das alles einfacher ist, strukturierter und so weiter.

So, kleines Template hab ich mir geschrieben, mit Einträgen außer Datenbank, alles kein Problem. (Sogar schon ne if-elseif-else Bedingung hab ich ;-) )

So, dann wollte ich jedoch ne for-schleife machen, einfach mal gucken, wie's und ob's , aber hab's nicht hingekriegt. Hab ziemlich alles versucht. Sogar schon, dass ganze inem Array zu speichern, doch dann war das Problem das Aufrufen.

Hab schon im google gesucht, aber nix gefunden.


Hoffe ihr könnt mir helfen.

Hier meine Scripte:
index.php
PHP:
<?php
    error_reporting(E_ALL);
	include 'inc/config.php'; //config laden
    define('SMARTY_DIR', 'Smarty/');
    // den Pfad entsprechend anpassen. Der Slash am ende muss
    // vorhanden sein

    require(SMARTY_DIR.'Smarty.class.php');
    // Die Smarty-Klasse laden

	$smarty = new Smarty;

	$name = 'Kalma';

    $smarty->assign('name', $name);
    $smarty->assign('clanname', 'keine ahnung');


	$query	= 'select * from news order by id desc';
	$result	= mysql_query($query) or die(mysql_error());

	//news array erzeugen
	$news	= array();
	while($select = mysql_fetch_assoc($result)) {
		$news[] = $select;
    }
    $smarty->assign('news_selects', $news); // In Smarty speichern
	

    $smarty->display('index.tpl');
?>


index.tpl
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>Testen macht spaß</title>
		<meta http-equiv="Content-Type" content="text/xhtml; charset=ISO-8859-1" />
		<link href="inc/styles.css" type="text/css" rel="stylesheet" />
    </head>
<body>
	<table border="0" width="50%" align="center" cellpadding="5">
		<tr>
			<td align="center">
				<h1>Willkommen bei {$clanname}</h1>
			</td>
		</tr>
		<tr>
			<td id="trenn_tr">
				Dein Username: {$name}
				
				{* 	Hier haben wir eine kleine if Abfrage nach dem 
					Rang und Usernames des eingeloggten User 
				*}
				
				
				{if $name == Kalma}
					/ Na Also, du bist der Admin :)
				{elseif ($name == Kalmageddon) }
					/ Du bist immerhin schonmal Moderator :-|
				{else}
					/ Mein Gott, du bist weder Admin noch Moderator :(
				{/if}
			</td>
		</tr>
		<tr>
			<td>
				{foreach from=$news_selects item=select}
					<div class="newsdatum">{$select.datum}</div>
					<div class="newstitel">{$select.titel}</div>
					<div class="newsinhalt">{$select.text}</div>
					<div class="archiv"><a href="#">zum Archiv</a></div>
					<hr />
				{/foreach}
			</td>
		</tr>
	</table>
</body>
</html>



David
 
Das sieht eigentlich alles richtig aus ;)
Kann es sein das deine DB Abfrage kein Ergebnis liefert und das Array einfach leer ist?

cAm3eel.
 
Aso,

hi, ne hier liegt ein Missverständis vor :D
Die Schleife, die da bereits ist, läuft^^.

Ich wollte eine neue machen, nur eine FOR, von der ich wie gesagt nicht weiß, wie ich sie einbauen soll :rolleyes:

D
 
hm, ich dachte dass das mal ganz praktisch wär, um zum Beispiel Zahlen von 1950 bis 1999 darzustellen. Zum Beispiel bei der Registration. Oder geht das auch mit der For-Each?
 
Das geht natürlich auch mit "foreach".
Du kannst deine DB Ausgabe auch ganz einfach damit ergänzen:
PHP:
...
    $query    = 'select * from news order by id desc'; 
    $result    = mysql_query($query) or die(mysql_error()); 

    //news array erzeugen 
    $news    = array(); 
    $i = "1950";
    while($select = mysql_fetch_assoc($result)) { 
        $i++;
        $select['jahr'] = $i;
        $news[] = $select; 
    } 
    $smarty->assign('news_selects', $news); // In Smarty speichern 
...

Wie die TPL Datei aussehen muss kannst dir ja denken. Wie von dir oben gepostet und dann halt auf "jahr" zugreifen ;-)

cAm3eel.
 
Wo ist denn der Sinn beliebige Jahreszahlen mit unrelevanten Newseinträgen zu verknüpfen?
Es gibt etwas ähnliches wie for in smarty. Das zu finden überlass ich aber dir selber, schliesslich solltest du auch lernen dich in einem Manual zurecht zu finden.
 
Hey,

ne, das ist ja keine richtige Seite mit Sinn. Mehr so zum üben. ich befasse mich ja erst seit gestern Abend (03.12.06) mit Templates.



P.s.: schreibt man rythms nicht rhythms?
 
:offtopic: Jau. vertippt....



Aber wie gesagt. Dieses Template hatte jetzt aber keinen Sinn^^...



Aber gleich schon das nächste Problem.

Ich habe eine neue Tabelle 'news_kommentare' mit 5 Zeilen erstellt.
id
news_id
name
kommentar
datum


Nun will ich die Anzahl bei den jeweils ausgelesenen News anzeigen lassen. Im Prinzip so

Datum - News 1
text - text - text - text - text
Autor: David, 5 Kommentare

Datum - News 2
text - text - text - text - text
Autor: Jonas, 2 Kommentare


Ich habe es schon probiert, aber der sagt entweder überall 0 oder 1 Kommentare.

Könnte mir jemand nen Bsp schreiben? Wär super lieb :)
 
Zurück