Seite 1 von 2

Variablenübergabe an Template

Verfasst: 10.08.2004 22:27
von Groovecommander
Hallo,

ich habe mir ein kleines Script geschrieben, dass die neusten und am meist heruntergeladenen Downloads anzeigt (ja ich weiß, dass gibst schon tausendfach, aber nun gibt es es tausendundeinfach :wink: ).

Mein Problem kommt hier:

Code: Alles auswählen

while ($zeile[neu]=mysql_fetch_array($neuste))
	{ ?><tr>
		<td width="100"><?php echo $zeile[neu]["file_name"];?><br></td>
		</tr>
		<?php 
	}
Hier werden mir nun die 5 neusten Downloads ausgegeben, aber wie kann ich das jetzt in die Template Syntax überführen?

In etwa so ?

Code: Alles auswählen

'neuste'=>$zeile[neu]["file_name"];

Dann {neuste} im Template, funktioniert so nicht.

Verfasst: 10.08.2004 22:52
von frieder

Verfasst: 10.08.2004 22:54
von Groovecommander
Wenn ich das ganze so schreibe:

Code: Alles auswählen

while ($zeile[neu]=mysql_fetch_array($neuste))
	{ $temp=$zeile[neu]["file_name"];
		 
	}
und im Template dann {temp}, bekomme ich nur ein Ergebnis.
Ich möchte aber alle 5 haben. Wie kann ich das machen, das alle 5 in einer Varibalen gespeichert werden?

Vielen Dank

Verfasst: 11.08.2004 12:28
von Groovecommander
ok, vielleicht habe ich mich etwas verdrückt ausgekehrt:

Ich habe ein Problem mit dem Ausgeben von Variablen. Ich möchte meine 5 neusten Downloads anzeigen lassen und bekomme aber immer nur ein leeres Template zu sehen.
Bei mir ist es so, das ich eine while-Schleife habe und diese genau 5 Werte ausgibt. Wenn ich das ganze ohne Template mache, sieht es folgendermaßen aus:

Code: Alles auswählen

<?php $neuste=mysql_query("SELECT * FROM pafiledb_files ORDER BY file_time DESC LIMIT $maxfiles");
    if (!$neuste)
        {
        die ("konnte NEUSTE nicht ermitteln");
        }
?>
<tr><td>Die 5 neusten Downloads</td></tr><br><br>
<?php
while ($row[neu]=mysql_fetch_array($neuste))
    { ?><tr>
        <td width="100"><?php echo $row[neu]["file_name"];?><br></td>
        </tr>
        <?php
    }

Wie man sieht, werden mit echo $zeile[neu]["file_name"]; die Ergebnisse aungezeigt (insgesamt 5, habe ich vorher durch $maxfiles definiert).

Nun meine Frage, wie kann ich diese Variable in mein Template einbauen und zwar so, dass alle 5 wiedergegeben werden.

Vielen Dank im voraus.

Verfasst: 11.08.2004 18:17
von Acid
Du benutzt bei der Datei aber schon das phpBB-Grundgerüst oder (um $template zu nutzen)?

Code: Alles auswählen

     $template->assign_block_vars('irgendwas', array(
            'NEUESTE' => $row[neu]["file_name"],
     ));
..das müsste innerhalb der while-Schleife platziert und dann mit folgendem in der *.tpl ausgegeben werden.

Code: Alles auswählen

<!-- BEGIN irgendwas -->
   {irgendwas.NEUESTE}
<!-- END irgendwas -->

Verfasst: 11.08.2004 22:35
von Groovecommander
Vielen Dank erstaml für Deine Antwort. So wie Du es hier beschreibst, habe ich es bereits versucht, aber ohne Erfolg. Mein Template bleibt immer leer. Vielleicht sollte ich noch erwähnen, dass ich eine extra Box für das AWSW Portal erstellt habe und darin soll dann eben der neuste Download erscheinen.

Ich habe inzwischen ein andere Lösung gefunden, wie ich meine neusten Downloads angezeigt bekomme. Aber die ist wirklich icht im Sinne des Erfinders, deshalb suche ich immer noch nach einer (phpBB gerechten) Lösung. Denn meine ist einfach viel zu umständlich :(


Hier meine Lösung (portal.php)

Code: Alles auswählen

//Abfrage der neusten Dateien
$neuste=mysql_query("SELECT * FROM pafiledb_files ORDER BY file_time DESC LIMIT $maxfiles");
	if (!$neuste) 
		{ 
		die ("konnte NEUSTE nicht ermitteln"); 
		}

		$zeile[1][1]=mysql_fetch_array($neuste);
		$zeile[2][1]=mysql_fetch_array($neuste);
		$zeile[3][1]=mysql_fetch_array($neuste);
		$zeile[4][1]=mysql_fetch_array($neuste);
		$zeile[5][1]=mysql_fetch_array($neuste);

//Abfrage der FILE ID der neusten Datein
$fileid_neuste = mysql_query("SELECT * FROM pafiledb_files ORDER BY file_time DESC LIMIT $maxfiles");
if (!$fileid_neuste) 
		{ 
		die ("konnte FILEID_NEUSTE nicht ermitteln"); 
		}
		$zeile[1][5]=mysql_fetch_array($fileid_neuste);
		$zeile[2][5]=mysql_fetch_array($fileid_neuste);
		$zeile[3][5]=mysql_fetch_array($fileid_neuste);
		$zeile[4][5]=mysql_fetch_array($fileid_neuste);
		$zeile[5][5]=mysql_fetch_array($fileid_neuste);
		
$template->assign_block_vars('switch_downloadfetch_active', array(
$template->assign_vars(array(

'NEUSTE1'=> substr($zeile[1][1]["file_name"],0,20),
'NEUSTE2'=> substr($zeile[2][1]["file_name"],0,20),
'NEUSTE3'=> substr($zeile[3][1]["file_name"],0,20),
'NEUSTE4'=> substr($zeile[4][1]["file_name"],0,20),
'NEUSTE5'=> substr($zeile[5][1]["file_name"],0,20),
'FILEID_NEU1'=> $zeile[1][5]["file_id"],
'FILEID_NEU2'=> $zeile[2][5]["file_id"],
'FILEID_NEU3'=> $zeile[3][5]["file_id"],
'FILEID_NEU4'=> $zeile[4][5]["file_id"],
'FILEID_NEU5'=> $zeile[5][5]["file_id"],

// TEMPLATE CODE VARS END
))
));
}
portal_body.tpl

Code: Alles auswählen

<!-- ##### DOWNLAODFETCH START ##### -->
<!-- BEGIN switch_downloadfetch_active -->
<table width="100%" border="0" cellpadding="1" cellspacing="1" class="forumline">
<tr>
<td class="headercell" colspan="2" height="15"><span class="cattitle">
<center>Download Stats</center>
</span></td>
</tr>
<tr>
<td colspan="2" height="1" class="row3"><img src="images/spacer.gif" width="1" height="1" alt="."></td>
</tr>
<!-- 5 neusten Downloads -->
<tr>
	<td class="row1"><span class="gensmall"><b><center>Die 5 neuen</center></b><br>
		<a href="pafiledb/pafiledb.php?action=file&id={FILEID_NEU1}">{NEUSTE1}</a>...<br>
		<a href="pafiledb/pafiledb.php?action=file&id={FILEID_NEU2}">{NEUSTE2}</a>...<br>
		<a href="pafiledb/pafiledb.php?action=file&id={FILEID_NEU3}">{NEUSTE3}</a>...<br>
		<a href="pafiledb/pafiledb.php?action=file&id={FILEID_NEU4}">{NEUSTE4}</a>...<br>
		<a href="pafiledb/pafiledb.php?action=file&id={FILEID_NEU5}">{NEUSTE5}</a>...</span><br><br>
	</td>
</tr>
Nicht wundern, wenn bei den mehrdimesionalen Arrays die Zahlen so wirr durcheinander gewählt sind, aber ich habe mir dann gleich noch (nach Schema F) die meist heruntergeladenen Downloads anzeigen lassen.

Ansonsten würde ich wirklich noch gerne wissen, wie ich das "richtig" mit den Templates mache. Komme halt nicht so ganz klar damit. :x

Verschoben

Verfasst: 12.08.2004 17:24
von Acid
Verschoben von Coding & Technik nach Modifikationen
switch_downloadfetch_active
Stammt das von der neu angelegten Portalbox?

Wenn ja, dann ist das eine aktive Switchanweisung für´s Template, die dann mit dem von mir geposteten Code verbunden werden müsste.
In der .tpl müsste es dann in etwa so aussehen..

Code: Alles auswählen

<!-- BEGIN switch_downloadfetch_active -->
      <!-- BEGIN irgendwas -->
           {irgendwas.NEUESTE}
      <!-- END irgendwas -->
<!-- END switch_downloadfetch_active -->
..und in der .php dann etwa so..

Code: Alles auswählen

     template->assign_block_vars('switch_downloadfetch_active.irgendwas', array());
     $template->assign_block_vars('irgendwas', array(
            'NEUESTE' => $row[neu]["file_name"],
     ));

Verfasst: 13.08.2004 14:16
von Groovecommander
Also, ich bin der Sache schon näher...
Mir wird jetzt 5 mal die Box mit jeweils dem neusten Download angezeigt. Ich habe schon einige Varianten ausprobiert, doch leider funktioniert es nicht wirklich.

Mein php code in der portl.php

Code: Alles auswählen

// SWITCH PORTALSTATS START
if( $introportalmod_config['pastats_active'] == "1" )
{
	$maxfiles = 5;
	$neuste=mysql_query("SELECT * FROM pafiledb_files ORDER BY file_time DESC LIMIT $maxfiles");
   	 if (!$neuste)
      	  {
    	    die ("konnte NEUSTE nicht ermitteln");
          }

	while ($zeile[neu]=mysql_fetch_array($neuste))
	{ 
	  $template->assign_block_vars('switch_pastats_active.irgendwas', array());
   	  $template->assign_block_vars('irgendwas', array(
           'NEUESTE' => $zeile[neu]["file_name"], ));
	}

	$template->assign_block_vars('switch_pastats_active', array(
	$template->assign_vars(array(

	// TEMPLATE CODE VARS START
	'PASTATS1' => $lang['pastats1'],
	// TEMPLATE CODE VARS END
	))
	));
}
// SWITCH PORTALSTATS END
und der *.tpl.
<!-- ##### PASTATS START ##### -->
<!-- BEGIN switch_pastats_active -->
<table width="100%" border="0" cellpadding="1" cellspacing="1" style="border-collapse: collapse" class="forumline">
<tr>
<td class="catHead" colspan="2" height="25"><span class="cattitle">
{PASTATS1}:
</span></td>
</tr>
<tr>
<td colspan="2" height="1" class="row3"><img src="images/spacer.gif" width="1" height="1" alt="."></td>
</tr>
<tr>
<td align="center" nowrap="nowrap" class="row1"><span class="gensmall">
<!-- 5 neusten Downloads -->
<!-- BEGIN irgendwas -->
{irgendwas.NEUESTE}
<!-- END irgendwas -->
</span></td>
</tr>
</table>
<!-- END switch_pastats_active -->
<!-- ##### PASTATS END ##### -->
Wie gesagt, ich habe jetzt 5 mal die Box mit dem neusten Download, aber ich wollte ja 5 Downloads in einer Box... :o

Verfasst: 13.08.2004 20:35
von Acid
Wenn du testweise echo $zeile[neu][file_name]; innerhalb der while-Schleife ausgibst, werden dir die 5 neuesten Downloads angezeigt?

Verfasst: 14.08.2004 00:11
von Groovecommander
[ externes Bild ]

so siehst dann aus. Man sieht halt die Downloads oberhalb des Portals(sind halt irgendwelche Testdownloads). Oberhalb der Navigation ist dann die Box zu sehen, die die Downloads anzeigen sollte (Header AddonBox:)

portal.php

Code: Alles auswählen

// SWITCH PORTALSTATS START
if( $introportalmod_config['pastats_active'] == "1" )
{
	$maxfiles = 5;
	$neuste=mysql_query("SELECT * FROM pafiledb_files ORDER BY file_time DESC LIMIT $maxfiles");
   	 if (!$neuste)
      	  {
    	    die ("konnte NEUSTE nicht ermitteln");
          }

	while ($zeile[neu]=mysql_fetch_array($neuste))
	{ 
	 echo $zeile[neu][file_name];
		}

	$template->assign_block_vars('switch_pastats_active', array(
	$template->assign_vars(array(

	// TEMPLATE CODE VARS START
	'PASTATS1' => $lang['pastats1'],
	// TEMPLATE CODE VARS END
	))
	));
}
// SWITCH PORTALSTATS END
*.tpl


Code: Alles auswählen

<!-- ##### PASTATS START ##### -->
<!-- BEGIN switch_pastats_active -->
<table width="100%" border="0" cellpadding="1" cellspacing="1" style="border-collapse: collapse" class="forumline">
<tr>
<td class="catHead" colspan="2" height="25"><span class="cattitle">
{PASTATS1}:
</span></td>
</tr>
<tr>
<td colspan="2" height="1" class="row3"><img src="images/spacer.gif" width="1" height="1" alt="."></td>
</tr>
<tr>
<td align="center" nowrap="nowrap" class="row1"><span class="gensmall">
<!-- 5 neusten Downloads -->

      <!-- BEGIN irgendwas -->
           {irgendwas.NEUESTE}
      <!-- END irgendwas -->


<!-- CODE -->
</span></td>
</tr>
</table>
<!-- END switch_pastats_active -->
<!-- ##### PASTATS END ##### -->