php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.07.2006, 13:14  
Erfahrener Benutzer
 
Registriert seit: 02.12.2003
Beiträge: 269
phpfortgeschrittener
phpfortgeschrittener eine Nachricht über ICQ schicken phpfortgeschrittener eine Nachricht über AIM schicken phpfortgeschrittener eine Nachricht über MSN schicken phpfortgeschrittener eine Nachricht über Yahoo! schicken
Standard [Smarty] Falsche Nutzung von {foreach}?

Hallo,
ich habe hier auf mein Script Smarty gelegt, was auch bisher gut funktioniert hat.
In der Smarty-Doku steht für meine Verwendung drin, ich solle folgendes machen:
PHP-Code:
<?php
  $sql 
'SELECT contact_id, name, nick FROM contacts ORDER BY contact';
  
$smarty->assign('kontakte'$db->getAssoc($sql));
?>

{foreach key=cid item=con from=$kontakte}
  [url="kontact.php?contact_id={$cid}"]{$con.name} - {$con.nick}[/url]

{/foreach}
Nun habe ich das auch machen wollen, jedoch kommt bei mir totaler Durcheinander raus: KLICK
Das ist mein PHP-Code:
PHP-Code:
<?php
$mysql
->query ("SELECT timestamp, title, author, imgsrc, content FROM content WHERE is_news = '1' ORDER BY id DESC" . ($cfg["browse"] == true " LIMIT " . (($_REQUEST["page"]-1)*$cfg["news"]) . ", " $cfg["news"] : ""));
$smarty->assign("content"$mysql->fetch());
?>
Und hier mein chnipsel aus dem Template:
Code:
{foreach key=id item=content from=$content}
	<table cellspacing="4" cellpadding="4" class="content">
		<tr>
			<td class="title" align="left" valign="middle">
				{$content.timestamp|date_format:"%Y-%m-%d %H:%M"}

				{$content.title} von {$content.author}
			</td>
		</tr>
		<tr>
			<td class="post" align="left" valign="top">
				{if $content.imgsrc neq ""}
					[img]templates/darkExcite/img/avatars/{$content.imgsrc}[/img]
				{/if}
				{$content.content}
			</td>
		</tr>
	</table>
{/foreach}
Woran kann das liegen?
Jedenfalls weiß ich, dass ich diese Funktion irgendwie falsch nutze.
Danke im voraus.
MfG,
WasserDragoon.

EDIT: Sobald ich print_r ($mysql->fetch()); mache kommt das richtige Array:
Code:
Array ( [timestamp] => 1153966386 [title] => Test-News [author] => WasserDragoon [imgsrc] => [content] => Dies ist ein Test-Beitrag. :-D )
phpfortgeschrittener ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.07.2006, 13:32  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Also ich machs immer so:
PHP-Code:
<?php
$mysql_query 
=  ....

$i 0;
$content = array();
while (
$row mysql_fetch_array($mysql_query))
{
    
$content[$i]['timestamp'] = $row['timestamp'];
    
$content[$i]['title'] = $row['title'];
    ...
    
$i++;
}
$smarty->assign('content'$content);
?>
Und das Template so wie du es hast.
Flor1an ist offline  
Alt 27.07.2006, 13:39  
Erfahrener Benutzer
 
Registriert seit: 02.12.2003
Beiträge: 269
phpfortgeschrittener
phpfortgeschrittener eine Nachricht über ICQ schicken phpfortgeschrittener eine Nachricht über AIM schicken phpfortgeschrittener eine Nachricht über MSN schicken phpfortgeschrittener eine Nachricht über Yahoo! schicken
Standard

Cool, danke es hat funktioniert.
phpfortgeschrittener ist offline  
Alt 27.07.2006, 13:50  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Noch als Erklärung. Bei deinem Versuch werden im Array $content nicht die einzelnen Einträge gespeichert sondern nur die Daten vom ersten Eintrag. Smarty erwartet ein Array in dem lauter weitere Arrays drinnen sind die eben $mysql->fetch(); beinhalten.
Flor1an ist offline  
Alt 27.07.2006, 19:46  
Erfahrener Benutzer
 
Registriert seit: 08.05.2005
Beiträge: 814
andy
andy eine Nachricht über ICQ schicken
Standard

Das geht auch ohne $i:
PHP-Code:
<?php
$mysql_query 
=  ....

$content = array();
while (
$row mysql_fetch_array($mysql_query))
{
    
$content[] = $row;
}
$smarty->assign('content'$content);

unset(
$content)
?>
andy ist offline  
Alt 28.07.2006, 03:22  
Erfahrener Benutzer
 
Registriert seit: 02.12.2003
Beiträge: 269
phpfortgeschrittener
phpfortgeschrittener eine Nachricht über ICQ schicken phpfortgeschrittener eine Nachricht über AIM schicken phpfortgeschrittener eine Nachricht über MSN schicken phpfortgeschrittener eine Nachricht über Yahoo! schicken
Standard

ok vielen dank
phpfortgeschrittener ist offline  
Alt 28.07.2006, 10:34  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ja andy hat schon Recht. Ich bin aber davon ausgegangen dass die Daten noch irgendwie verwertet werden. Dann müssen alle Werte eigens genannt werden.
Flor1an ist offline  
Alt 28.07.2006, 14:03  
Erfahrener Benutzer
 
Registriert seit: 08.05.2005
Beiträge: 814
andy
andy eine Nachricht über ICQ schicken
Standard

Nicht unbedingt, du kannst ja an $row rumspielen wie du willst und es danach erst an das Array dranhängen.
Aber sowas sind alles gewohnheitssachen...
andy ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
foreach equivalent aber mit Datenmanipulation Matt PHP Tipps 2008 2 26.02.2008 16:47
Lambda-Funktion und array_map/_filter gegen foreach KingCrunch PHP Tipps 2007 5 29.04.2007 10:28
foreach verändert die werte des arrays das durchlaufen wird Crypi PHP Tipps 2007 5 10.01.2007 08:24
foreach mit zwei übergebenen Arrays ? [erledigt] horstenpeter PHP Tipps 2006 1 03.09.2006 16:47
foreach() wird einmal zu oft durchlaufen Dilandau PHP Tipps 2006 15 07.07.2006 17:14
foreach geht aber abfrage nicht... GELight PHP Tipps 2006 8 01.03.2006 23:53
durch foreach auch normalen String durchlaufen lassen PHP Tipps 2006 7 14.01.2006 13:20
ProgressClass zeigt Fortschritte in foreach nicht a PHP Tipps 2006 9 13.01.2006 00:11
falsche Eingaben in URL abfangen...id an DB etc... argon PHP Tipps 2007 2 18.11.2005 10:15
$_FILES mit foreach() PHP Tipps 2005-2 5 20.10.2005 10:27
Was ist eigentlich jetzt 'kommerzielle Nutzung'? Off-Topic Diskussionen 19 19.07.2005 21:50
foreach probleme PHP Tipps 2005 7 26.04.2005 17:54
foreach: Übergabe by reference Stümper PHP Tipps 2005 2 15.02.2005 15:35
for / foreach problem PHP-Fortgeschrittene 4 19.11.2004 16:58
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
smarty foreach limit, http://www.php.de/php-tipps-2006/41402-smarty-falsche-nutzung-von-foreach.html, smarty foreach, foreach smarty, smarty foreach datensatz nur einmal, smarty foreach erklärung, smarty mysql, smarty foreach array namen id anhängen, smarty foreach order, foreach smarty limit, smarty mysql foreach, smarty foreach nur einmal, foreach mysql_fetch_array, fetch array foreach smarty, foreach key smarty, smarty foreach mysql_fetch_array, foreach smarty order, php limit für smarty, smarty doku, smarty foreach img

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:09 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.