MyBB.de Forum

Normale Version: Bilder aus Verzeichnis lesen und
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich versuche mich derzeit mal ein wenig mit PHP. Toungue
Nun habe ich aber Probleme und hoffe hier auf Unterstützung.

Ich möchte aus einem Verzeichnis Bilder auslesen und auf einer separaten Forumseite ausgeben (immer 2 nebeneinander). Folgenden Code habe ich mir mit Hilfe des www zusammen gestöpselt und erhalten auch ein zufriedenstellendes Ergebnis, wenn ich nur mit "echo" arbeite:

PHP-Code:
<?php
define
("KILL_GLOBALS"1);
define("IN_MYBB"1);
 
require(
"global.php");

if(
$mybb->usergroup['gid'] != 1)
{
    
add_breadcrumb("Archiv");
        
    
$archiv_dir 'archive';
        
    
$i 0;
    
$bilder = array();
    
$verzeichnis opendir($archiv_dir);
    while (
$bild readdir($verzeichnis))
    {
      if (
$bild !="." && $bild !="..")
      {
      
$bilder[] = "<img width=\"400\" height=\"615\"src=\"$archiv_dir/$bild\" alt=\"\">";
      }
    }
    
closedir($verzeichnis);
    
$max count($bilder);
    while (
$i<=$max)
    {
        eval(
"\$bilder[$i] .= \"".$templates->get("bilder_archive_archive")."\";");
        
//echo $bilder[$i];
        
$i $i+1;
    eval(
"\$bilderresults .= \"".$templates->get("bilder_archive")."\";");  //???
    
output_page($bilderresults); //???
    
}
}
else
{
   
error_no_permission();
}
?>

Nun wollte ich aber den Code so abändern, dass ich ähnlich den Suche-Templates ein Template erzeuge, dem ich das jeweilige Bild in ein <td>-Tag setze, das wiederum dann in eine html-Seite eingebunden wird.

Und das bekomme ich einfach nicht hin. Die o.a. eval-Zeilen habe ich schon mehrmals umgestellt. Entweder wird gar kein Bild angezeigt, oder immer nur eines. Ich denke, ich habe da ein prinzipielles Verständnisproblem, wie die Übergabe der Variablen an die Templates funktioniert. ....naja, neben meinen PHP-Schwächen...Wink

Würde mich sehr freuen, wenn mir jemand unter die Arme greifen könnte. Smile
Kannst du noch die Templates dazu posten?
Hallo Dragon,

das wäre das Template bilder_archive:
Code:
<html>
<head>
<title>{$settings['bbname']}Archiv</title>
{$headerinclude}
</head>
<body>
{$header}

<table border="0" cellspacing="10" cellpadding="10">
{$tagpadresults}
</table>

{$footer}
</body>
</html>
und das hier, das Template bilder_archive_archive:
Code:
<tr width="100%">
<td>
{$bilder[$i]}
</td>
</tr>

Eigentlich hatte ich mir das so gedacht, dass immer 2 Bilder nebeneinander gesetzt werden und dann die nächste Reihe kommt.

Aber ich kapier das mit den Variablen nicht, die den Templates übergeben werden sollen. Sad

Mir geht es erst einmal "nur" darum, dass die überhaupt Bilder angezeigt werden. Um den Style der Seite würde ich mich erst später kümmern.

Dankeschön! Smile
Probiere diesen Code:
PHP-Code:
<?php
define
("KILL_GLOBALS"1);
define("IN_MYBB"1);
 
require(
"global.php");

if(
$mybb->usergroup['gid'] != 1)
{
    
add_breadcrumb("Archiv");
        
    
$archiv_dir 'archive';
        
    
$i 0;
    
$bilder = array();
    
$verzeichnis opendir($archiv_dir);
    while (
$bild readdir($verzeichnis))
    {
      if (
$bild !="." && $bild !="..")
      {
      
$bilder[] = "<img width=\"400\" height=\"615\"src=\"$archiv_dir/$bild\" alt=\"\">";
      }
    }
    
closedir($verzeichnis);
    
$max count($bilder);
    while (
$i<=$max)
    {
        eval(
"\$diebilder .= \"".$templates->get("bilder_archive_archive")."\";");
        
//echo $bilder[$i];
        
$i $i+1;
    }
    eval(
"\$bilderresults = \"".$templates->get("bilder_archive")."\";");
    
output_page($bilderresults);
}
else
{
   
error_no_permission();
}
?>
Template bilder_archive:
Code:
<html>
<head>
<title>{$settings['bbname']}Archiv</title>
{$headerinclude}
</head>
<body>
{$header}

<table border="0" cellspacing="10" cellpadding="10">
{$diebilder}
</table>

{$footer}
</body>
</html>
Template bilder_archive_archive:
Code:
<tr width="100%">
<td>
{$bilder[$i]}
</td>
</tr>
Klasse, vielen Dank, es funktioniert!! Big Grin

Ich dachte, {$bilder[i]} müsste auch in der php-Datei erzeugt werden. Hoffentlich finde ich da mal einen besseren Draht dazu. Wink

Damit immer 2 Bilder nebeneinander dargestellt werden, sich aber nicht wiederholen, habe ich noch folgende Änderungen durchgeführt:

PHP-Code:
...
  eval(
"\$diebilder .= \"".$templates->get("bilder_archive_archive")."\";");
  
$i $i+2;
... 
und das Template bilder_archive_archive wie folgt angepasst:
Code:
<tr width="100%">
<td style="padding-left:50px">
{$bilder[$i]}
</td>
<td style="padding-left:100px">
{$bilder[$i+1]}
</td>
</tr>

Vielen Dank noch einmal, Dragon!!!!!!!

viele Grüße,
Jockl