Probleme mit Smarty Templates

Habs jetzt so gelöst:

PHP:
	/* ANFANG BLÄTTERFUNKTION */
	$items_per_page = 1;
	$item_count = mysql_num_rows(mysql_query('select * from news'));
	$page_count = ceil($item_count/$items_per_page);

	$offset = (isset($_GET['page'])) ? intval($_GET['page']) * $items_per_page - $items_per_page: 0;

	$query	= 	'select news.*, user.* from news left join user on (user.id = news.autor) group by news.id desc 
				limit '.$offset.', '.$items_per_page.''; //query ausführen
	$result = mysql_query($query);

	include ("functions.php");
	
	if ((!isset($_GET['page'])) || (empty($_GET['page']))) {
		$actual_page = 1;
	} else {
		$actual_page = $_GET['page'];
	}
	
	$smarty->assign('actual_page', $actual_page); //aktuelle seitenzahl übergeben
	$smarty->assign('page_count', $page_count); //anzahl aller seiten übergeben
	/* ENDE BLÄTTERFUNKTION */


Aufruf:
HTML:
{section name=i start=1 loop=$page_count+1 step=1}
  {if $smarty.section.i.index==$page_count+1 XOR $smarty.section.i.index==$actual_page}
  <b>{$smarty.section.i.index}</b>
{else}
  <a href="?page={$smarty.section.i.index}">{$smarty.section.i.index}</a>
{/if}
section}
 
Und wieder ein Problem...

Ich habe ein JavaScript in meinem TPL, was alle Datensätze mit einer Checkbox auswählt...

Es sieht so aus:
Code:
		<script type="text/javascript">
		function all_messages()
		{
			anzahl = document.form.length;
			for(i=0; i<anzahl; i++)
			{
				if(document.form.elements[i].checked == true)
				{
					document.form.elements[i].checked = false;
					document.form.elements.check.checked = true;
				}
				else if(document.form.elements[i].checked == false)
				{
					document.form.elements[i].checked = true;
					document.form.elements.check.checked = false;
				}
			}
		}
		</script>


Nur, mein Template sagt mir:
Fatal error: Smarty error: [in admin.tpl line 26]: syntax error: unrecognized tag 'anzahl' (Smarty_Compiler.class.php, line 583) in C:\wamp\www\alles alt\template_news_system\Smarty\Smarty.class.php on line 1095



Wie muss ich es lösen?

David
 
Probiers mal mit:
Code:
{literal}
		<script type="text/javascript">
		function all_messages()
		{
			anzahl = document.form.length;
			for(i=0; i<anzahl; i++)
			{
				if(document.form.elements[i].checked == true)
				{
					document.form.elements[i].checked = false;
					document.form.elements.check.checked = true;
				}
				else if(document.form.elements[i].checked == false)
				{
					document.form.elements[i].checked = true;
					document.form.elements.check.checked = false;
				}
			}
		}
		</script>
{/literal}

alles zwischen {literal} und {/literal} wird _nicht_ von smarty interpretiert
 
Du solltest dir vielleicht doch endlich mal die Smarty-Dokumentation durchlesen, da steht das nämlich alles ;)

cAm3eel.
 
Morgen...

Wieder einmal hänge ich bei meinem Projekt (dem News-System) fest...

Soo... Ich habe nen kleinen Kalender programmiert, der ungefähr so aussehen soll:
http://dfmusik.df.funpic.de/template_news_system/kalender.php

Der ist jetzt nur komplett in PHP, sprich ohne Template.

Ich habe ihn jezt so in Template umgeschrieben:
PHP:
<?php
	//TAG, MONAT und JAHR festlegen
	$time		= time();											$smarty->assign('time', $time);
	$tag		= date('d', $time);									$smarty->assign('tag', $tag);
	$monat		= date('m', $time);									$smarty->assign('monat', $monat);
	$jahr		= date('Y', $time);									$smarty->assign('jahr', $jahr);
	$last		= date('t', mktime(0, 0, 0, $monat, 1, $jahr));		$smarty->assign('last', $last);

	//Wochentage festlegen (in array)
	$monate				= array('', 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober',
								'November', 'Dezember');
	$aktueller_monat = $monate[$monat];
	$smarty->assign('aktueller_monat', $aktueller_monat);
	

	$wochentage[] 		= array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa', 'So');
	$smarty->assign('wochentage', $wochentage);
	
	//1. Wochentag festlegen
	$erster_wochentag = date('w', mktime(0, 0, 0, $monat, 1, $jahr));	
	
	//den sonntag korrigieren. Sonntag > Tag = 7
	//wenn Sonntag (aus mktime ausgerrechnet) 0 ist, wird er auf 7 gesetzt
	if ($erster_wochentag == 0) {
		$erster_wochentag = 7;
	}
	$smarty->assign('erster_wochentag', $erster_wochentag);
	
	/*
	//Tabelle erstellen:
	echo '<table border="10" width="70%" align="center" cellspacing="0" cellpadding="0">	'.$n.'';
	echo '	<tr> '.$n.'';
	echo '		<td colspan="7"><h2 align="center">'.$monate[$monat].'</h2></td> '.$n.'';
	echo '	</tr> '.$n.'';
	echo '	<tr> '.$n.'';
				//alle Wochentage als Überschrift ausgeben
				//dies wird mittels for schleife erreicht
				//ue steht hierbei für überschrift
				for ($ue=0; $ue<7; $ue++) {
					echo '		<td width="10%" align="center"><b>'.$wochentage[$ue].'</b></td> '.$n.'';
				}
	echo '	</tr> '.$n.'';
	echo '	<tr> '.$n.'';	
				for ($j=1; $j<$erster_wochentag; $j++) {
					echo '		<td bgcolor="#FFFF99"><!-- Kein Inhalt -->&nbsp;</td>	'.$n.'';
				}
				*/
				for ($i=1; $i<=$last; $i++) {				
					//Ermitteln des aktuellen Wochentages:
				
					//, mktime(0, 0, 0, $monat, $i, $jahr) << das war der rest aus $wochen-tag
					$wochen_tag[]	= $wochentage[date('w')];
					$smarty->assign('wochen_tag', $wochen_tag);
					

					//Erstellung des CSS für Hintergrundfarben der Zellen
					$class = '#FFFFFF';
					
					//Jetzt färben wir das Wochende ein
					if (($wochen_tag == 'Sa') || ($wochen_tag == 'So')) {
						$class = '#C5FBFE';
					}
					
					$smarty->assign('class', $class);
					
								/*		
					//Jetzt genug gefärbt... Endlich die Ausgabe
					if ($i == $tag) { //wenn der tag der im kalender ist, dann DICK drucken
						echo '		<td bgcolor="'.$class.'" align="center"><b>'.$i.'</b></td> '.$n.'';
					} else {
						echo '		<td bgcolor="'.$class.'" align="center">'.$i.'</td> '.$n.'';
					}
					
					//wenn Sonntag, dann neue Zeile beginnen...
					if ($wochen_tag == 'So') {
						echo '	</tr>	'.$n.'';
						echo '	<tr> '.$n.'';
					}
				*/ } /* 
	echo '	</tr> '.$n.'';	
	echo '</table> '.$n.'';
	*/
?>


Das ist der TPL teil
HTML:
				<table border="1" width="100%" align="center" cellspacing="0" cellpadding="2">
					<tr>
						<td colspan="7"><h2 align="center">{$aktueller_monat}</h2></td>
					</tr>
					<tr>
						<td width="14%" align="center"><b>Montag</b></td>
						<td width="14%" align="center"><b>Dienstag</b></td>
						<td width="14%" align="center"><b>Mittwoch</b></td>
						<td width="14%" align="center"><b>Donnerstag</b></td>
						<td width="14%" align="center"><b>Freitag</b></td>
						<td width="14%" align="center"><b>Samstag</b></td>
						<td width="14%" align="center"><b>Sonntag</b></td>
					</tr>
					<tr>
						{section name=j start=1 loop=$erster_wochentag step=1}
							<td bgcolor="#FFFF99"><!-- Kein Inhalt -->&nbsp;</td>
						{/section}
						
						{section name=i start=1 loop=$last step=1}
							<td align="center" bgcolor="{$class}">{$smarty.section.i.index}</td>
						{/section}
						
						{if $wochen_tag == So}
							</tr>
							<tr>
						{/if}
					</tr>
				</table>


Nur, der macht nach dem Sonntag keinen Umbruch... Wieso?

MfG
David
 
Zuletzt bearbeitet:
In dem Array $wochentage ist "So" 2x vorhanden, liegt es vielleicht daran?
Der Kalender funktioniert ja an sich ganz gut, nur das mit Sonntag angefangen wird zu zählen, und nicht mit Montag.
Wenn du oben die Wochentage also einfach um jeweils eins nach links verschiebst, würde alles stimmen sowie ich das sehe?

cAm3eel.
 
Ich kenn mich in deinem Script jetzt nicht so gut aus, aber müsste diese if Abfrage mit dem neuen "<tr>" vielleicht IN die section-Schleife rein?
Vielleicht denke ich aber auch grad falsch, dann korrigier mich...

cAm3eel.
 
Es tut hier zwar nichts zur Sache, dennoch möchte dich erneut darauf hinweisen, daß das von dir verwendete <p />-Tag nicht valide ist, da es sich hierbei nicht um ein leeres Element, wie z.B. das meta-, oder img-Element handelt. Ein Textabsatz beginnt mit dem öffnenden <p>- und endet mit dem schliessenden </p>-Tag.
 
Zurück