Seite 1 von 4

[UPDATE: funktioniert fast] template nächste tabellenzeile

Verfasst: 13.07.2005 16:35
von d23
hallo,

ich arbeite an einer gallery und brauche ein klein bißchen hilfe, weil ich entweder zu doof bin und nicht draufkomme wie es geht oder ich es einfach nicht richtig mach.

folgendes problem, ich möchte eine anzahl von X thumbnails auslesen und jeweils innerhalb eines tabellenfeldes ausgeben.

Code: Alles auswählen

<!-- BEGIN albumthm -->
                     <td>
                    {albumthm.THMIMG}
                    <span class="gensmall"><b> {albumthm.CNT_CMTS}</b> {L_COMMENTS}<br>
                        </a></span>

                         </td>
 <!-- END albumthm -->
wenn es jedoch mehr als 5 thumbnails pro zeile sind, dann soll per <tr></tr> in die nächste zeile springen.

kann mir bitte jemand anhand eines beispiels erklären, was ich dazu im template, bzw. der zugehörigen php datei machen muß ?

vielen dank

Verfasst: 13.07.2005 17:36
von shwepsi
KB:74 -> Schleifen / Blöcke (bitte den kompletten Punkt lesen, Beispiel befindet sich darin, ansonsten hier fragen)
viel erfolg

Verfasst: 13.07.2005 17:40
von d23
damit hab ich mich ja beschäftigt, aber ich weiß nicht, wie ich das auf mein beispiel übertragen soll :o ?

Verfasst: 13.07.2005 18:02
von shwepsi
Array[zeile1][Bild1]
Array[zeile1][Bild2]
Array[zeile1][Bild3]
Array[zeile1][Bild4]
Array[zeile1][Bild5]
Array[zeile2][Bild1]
Array[zeile2][Bild2]
Array[zeile2][Bild3]

usw

Code: Alles auswählen

for ($x=1, $x <= zeilen, $x++)
{
        $template->assign_block_vars('zeile', array(
        ));

        for ($y=1, $y <= 5, $y++)
        {
              $template->assign_block_vars('zeile.bild', array(
// array[$x][$y
               ));
         }
}

Code: Alles auswählen

<!-- BEGIN zeile --> 
<tr>
<!-- BEGIN zeile.bild -->
<td> Bild </td>
<!-- End zeile.bild -->
</tr>
<!-- END zeile -->

Verfasst: 13.07.2005 19:34
von d23
sorry, ich kriegs einfach nicht gebacken, vielleicht sollte ich doch noch einmal ein bißchen schlafen.

hier mal der aktuelle code, vielleichts funktionierts wegen meinem code nicht.
wie sollte das jetzt eingebaut werden ? :o

php

Code: Alles auswählen

$alb_sql = 'SELECT * FROM `gallery_pics` WHERE `album_id` = ' . $gal_id . ' ORDER BY `photo_id` ASC LIMIT ' . $start . ', 24';
if(!$alb_result = $db->sql_query($alb_sql)) {
        message_die(GENERAL_ERROR, 'Fehler beim Auslesen der Album-Informationen', '', __LINE__, __FILE__, $alb_sql);
}

while($alb_row = $db->sql_fetchrow($alb_result)) {


UNWESENTLICHES GEKÜRZT

$img_url = "<a href=gallery_pic.php?pic_id=" . $akt_ptid . "><img src=\"gallery/" . $gal_ord['2'] . "/_thm/" . $alb_row['filename'] . "\"></a><br>";

$template->assign_block_vars('albumthm', array(
                 'CNT_PICS' => $cnt_alb,
                 'THMIMG' => $img_url,
                 'CNT_CMTS' => $cnt_cmt
             ));
}
template:

Code: Alles auswählen


<table width="100%">
<tr>
<td><center>
<span class="genbig"><b>Gallery</b></span><br><br>

<table class="forumline" width="60%" cellspacing="0" cellpadding="0" align="center">
<tr>
<th class="catHead" height="25" align="left">&nbsp;{ALBADD_DATE}</th>
</tr>
        <tr>
                <td class="row1">
                    <table width="100%" cellspacing="0" cellpadding="5" border="0">
                       <tr>
                                <td class="row2"><span class="genmed"><i><b>{ALBTITLE}</a></b></i><br> Fotograf:  <a href="profile.php?mode=viewprofile&u={ALBAUTHOR}">{ALBAUTHOR}</a></span></td>
                        </tr>
                        <tr>
                         <td class="row1">  <br>
                         <table width="100%" cellspacing="0" cellpadding="5" border="0">

                       <tr>

<!-- BEGIN albumthm -->
                     <td>
                    {albumthm.THMIMG}
                    <span class="gensmall"><b> {albumthm.CNT_CMTS}</b> Kommentare<br>
                        </a></span>

                         </td>
 <!-- END albumthm -->
                           </tr>


                           </td>
                        </tr>
                    </table>
                 </td>
        </tr>
</table>

<br>

</center></td>
</tr>
</table>
<table  width="60%" cellspacing="0" cellpadding="0" border="0" align="center">
  <tr>
        <td><span class="nav">{PAGE_NUMBER}</span></td>
        <td align="right"><span class="nav">{PAGINATION}</span></td>
  </tr>
</table>





Verfasst: 15.07.2005 13:10
von d23
hmmm, weiß das keiner ?

Verfasst: 15.07.2005 14:02
von shwepsi
d23 hat geschrieben:hmmm, weiß das keiner ?
das unwesentliche enthält leider ein paar Zeilen die wichtig sind... zum Beispiel das Array mit allen Bildern
da du damit nicht klarkommst habe ich den Code ein wenig vereinfacht:
(jedoch schlechter Programmierstil, aber fehlerfrei:

Code: Alles auswählen

$zeilen = count($bilderarray);
for ($x=1, $x <= $zeilen, $x++) 
{ 
        $template->assign_block_vars('zeile', array( 
        //leer, ist nur wegen dem tr
        )); 

        $y = $x;
        for ($y=$x, $y <= $x +5, $y++) 
        { 
              $template->assign_block_vars('zeile.bild', array(
                  'PFADODERWASAUCHIMMER' => $was_du_halt_zuweist,
// das aktuelle Bild ist = bilderarray[$x]
               ));
                $x++
                if ( !isset($bilderarray[$x])
                        break;
         } 
}
die einzelnen Zuweisungen:

Code: Alles auswählen

<!-- BEGIN zeile --> 
<tr> 
         <!-- BEGIN zeile.bild --> 
         <td> {zeile.bild.PFADODERWASAUCHIMMER}</td> 
         <!-- End zeile.bild --> 
</tr> 
<!-- END zeile -->

Verfasst: 01.08.2005 16:50
von d23
hallo,

nach etwas längerer zeit bin ich auch mal wieder da, scheinbar funktioniert da leider etwas nicht richtig :-(

folgende fehlermeldung:

Code: Alles auswählen

Parse error: parse error, unexpected '=' in /forum/includes/template.php(929) : eval()'d code on line 33
hier mal beide dateien vollständig, ziemlich frickelcode, der is nur zum testen und wir dann mal überabrietet

gallery_album.php

Code: Alles auswählen


<?php
//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

$start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : 0;
$gal_id = ( isset($HTTP_GET_VARS['gal_id']) ) ? intval($HTTP_GET_VARS['gal_id']) : 0;

//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_GALLERY);
init_userprefs($userdata);
$page_title = 'Gallery';
 include($phpbb_root_path . 'includes/page_header.'.$phpEx);

$template->set_filenames(array(
    'gallery_album' => 'gallery_album.tpl',
));





$alb_sql = 'SELECT * FROM `gallery_pix` WHERE `album_id` = ' . $gal_id . ' ORDER BY `id` ASC LIMIT ' . $start . ', 24';
if(!$alb_result = $db->sql_query($alb_sql)) {
        message_die(GENERAL_ERROR, 'Fehler beim Auslesen der Album-Informationen', '', __LINE__, __FILE__, $alb_sql);
}

while($alb_row = $db->sql_fetchrow($alb_result)) {



$cnt_alb = mysql_query("SELECT * FROM `gallery_pix` WHERE `album_id` = '" . $alb_row['album_id'] . "'");
$cnt_alb = mysql_num_rows($cnt_alb);

$cnt_cmt = mysql_query("SELECT * FROM `gallery_comments` WHERE `pic_id` = '" . $alb_row['id'] . "'");
$cnt_cmt = mysql_num_rows($cnt_cmt);

$akt_ptid = $alb_row['id'];

$albpl_sql = mysql_query('SELECT * FROM `gallery_albums` WHERE `id` = ' . $gal_id);
$gal_ord = mysql_fetch_row($albpl_sql);

$rd_datum = $gal_ord['3'];

$day = date("w", $rd_datum);
$days = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
$date = date("j", $rd_datum);
$month = date("n", $rd_datum);

$months = array(1=>"Januar", 2=>"Februar", 3=>"März", 4=>"April", 5=>"Mai", 6=>"Juni", 7=>"Juli", 8=>"August", 9=>"September", 10=>"Oktober", 11=>"November", 12=>"Dezember");

$year = date("Y", $rd_datum);
$clc_datum = $days[$day] . ", " . $date . ". " . $months[$month] . "   " . $year;


$template->assign_vars(array(
                'ALBID' => $gal_ord['0'],
                'ALBTITLE' => $gal_ord['1'],
                'ALBAUTHOR' => $gal_ord['2'],
                'ALBADD_DATE' => $clc_datum
                 ));


// Die Ausgabe der Variablen


$img_url = "<a href=gallery_pic.php?pic_id=" . $akt_ptid . "&pic_dir=" . $alb_row['ordner'] . "&pic_name=" . $alb_row['dateiname'] . "><img src=\"gallery/" . $alb_row['ordner'] . "/_thm/" . $alb_row['dateiname'] . "\"></a><br>";
        $zeilen = count($cnt_alb);
for ($x = 1; $x <= $zeilen; $x++)
{
        $template->assign_block_vars('zeile', array(
        //leer, ist nur wegen dem tr
        ));

        $y = $x;
        for ($y = $x; $y <= $x + 5; $y++)
        {
              $template->assign_block_vars('zeile.bild', array(
                  'THMIMG' => $img_url,
               ));
                $x++;
          if(!isset($cnt_alb[$x]))
                        break;
         }
}


        }




$board_config['topics_per_page'] = 24;

if ( $board_config['topics_per_page'] > 10 )
{
        $sql = "SELECT count(*) AS total
                FROM gallery_albums";
        $result = $db->sql_query($sql);

                if ( $total = $db->sql_fetchrow($result) )
        {
                $total_members = $total['total'];

                $pagination = generate_pagination("gallery_dir.$phpEx?gal_id=" . $gal_id . "", $total_members, $board_config['topics_per_page'], $start). '&nbsp;';
        }
        $db->sql_freeresult($result);
}
else
{
        $pagination = '&nbsp;';
        $total_members = 24;
}

$template->assign_vars(array(
        'PAGINATION' => $pagination,
        'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $board_config['topics_per_page'] ) + 1 ), ceil( $total_members / $board_config['topics_per_page'] )),

        'L_GOTO_PAGE' => $lang['Goto_page'])
);

$template->pparse('gallery_album');

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>
gallery_album.tpl

Code: Alles auswählen

<table width="100%">
<tr>
<td><center>
<span class="genbig"><b>Gallery</b></span><br><br>

<table class="forumline" width="60%" cellspacing="0" cellpadding="0" align="center">
<tr>
<th class="catHead" height="25" align="left">&nbsp;{ALBADD_DATE}</th>
</tr>
        <tr>
                <td class="row1">
                    <table width="100%" cellspacing="0" cellpadding="5" border="0">
                       <tr>
                                <td class="row2"><span class="genmed"><i><b>{ALBTITLE}</a></b></i><br> Fotograf:  <a href="profile.php?mode=viewprofile&u={ALBAUTHOR}">{ALBAUTHOR}</a></span></td>
                        </tr>
                        <tr>
                         <td class="row1">  <br>
                         <table width="100%" cellspacing="0" cellpadding="5" border="0">
                       <tr>
<!-- BEGIN zeile -->
<tr>
         <!-- BEGIN zeile.bild -->
         <td> {zeile.bild.THMIMG}</td>
         <!-- END zeile.bild -->
</tr>
<!-- END zeile -->
                           </tr></td>
                        </tr>
                    </table>
                 </td>
        </tr>
</table>

<br>

</center></td>
</tr>
</table>
<table  width="60%" cellspacing="0" cellpadding="0" border="0" align="center">
  <tr>
        <td><span class="nav">{PAGE_NUMBER}</span></td>
        <td align="right"><span class="nav">{PAGINATION}</span></td>
  </tr>
</table>

was geht denn da schief ?

lg

Verfasst: 02.08.2005 10:27
von shwepsi
ich bin leider in Hannover und habe keine Entwicklungsumgebung

markiere mal die Zeile in der der Fehler ist

Verfasst: 02.08.2005 12:02
von d23
in der template.php (2.0.17 original, benutzer aber xs_mod, liegt aber damit nicht daran) schlägt folgende funktion fehl:

Code: Alles auswählen

 
        function pparse($handle)
        {
                if (!$this->loadfile($handle))
                {
                        die("Template->pparse(): Couldn't load template file for handle $handle");
                }

                // actually compile the template now.
                if (!isset($this->compiled_code[$handle]) || empty($this->compiled_code[$handle]))
                {
                        // Actually compile the code now.
                        $this->compiled_code[$handle] = $this->compile($this->uncompiled_code[$handle]);
                }

                // Run the compiled code.
                eval($this->compiled_code[$handle]);
                return true;
        }
der betroffe ne block im template

Code: Alles auswählen

<!-- BEGIN zeile -->
<tr>
         <!-- BEGIN zeile.bild -->
         <td> {zeile.bild.THMIMG}</td>
         <!-- END zeile.bild -->
</tr>
<!-- END zeile -->
geparst und gecached im xs_mod sieht das dann so aus:

Code: Alles auswählen

<?php

// eXtreme Styles mod cache. Generated on Tue, 02 Aug 2005 02:22:02 +0200 (time=1122942122)

?><table width="100%">
<tr>
<td><center>
<span class="genbig"><b>Gallery</b></span><br><br>

<table class="forumline" width="60%" cellspacing="0" cellpadding="0" align="center">
<tr>
<th class="catHead" height="25" align="left">&nbsp;<?php echo isset($this->vars['ALBADD_DATE']) ? $this->vars['ALBADD_DATE'] : $this->lang('ALBADD_DATE'); ?></th>
</tr>
        <tr>
                <td class="row1">
                    <table width="100%" cellspacing="0" cellpadding="5" border="0">
                       <tr>
                                <td class="row2"><span class="genmed"><i><b><?php echo isset($this->vars['ALBTITLE']) ? $this->vars['ALBTITLE'] : $this->lang('ALBTITLE'); ?></a></b></i><br> Fotograf:  <a href="profile.php?mode=viewprofile&u=<?php echo isset($this->vars['ALBAUTHOR']) ? $this->vars['ALBAUTHOR'] : $this->lang('ALBAUTHOR'); ?>"><?php echo isset($this->vars['ALBAUTHOR']) ? $this->vars['ALBAUTHOR'] : $this->lang('ALBAUTHOR'); ?></a></span></td>
                        </tr>
                        <tr>
                         <td class="row1">  <br>
                         <table width="100%" cellspacing="0" cellpadding="5" border="0">
                       <tr>
<?php

$zeile_count = ( isset($this->_tpldata['zeile.']) ) ?  sizeof($this->_tpldata['zeile.']) : 0;
for ($zeile_i = 0; $zeile_i < $zeile_count; $zeile_i++)
{
 $zeile_item = &$this->_tpldata['zeile.'][$zeile_i];
 $zeile_item['S_ROW_COUNT'] = $zeile_i;
 $zeile_item['S_NUM_ROWS'] = $zeile_count;

?>
<tr>
         <?php

$zeile.bild_count = ( isset($zeile_item['bild.']) ) ? sizeof($zeile_item['bild.']) : 0;
for ($zeile.bild_i = 0; $zeile.bild_i < $zeile.bild_count; $zeile.bild_i++)
{
 $zeile.bild_item = &$zeile_item['bild.'][$zeile.bild_i];
 $zeile.bild_item['S_ROW_COUNT'] = $zeile.bild_i;
 $zeile.bild_item['S_NUM_ROWS'] = $zeile.bild_count;

?>
         <td> <?php echo isset($bild_item['THMIMG']) ? $bild_item['THMIMG'] : ''; ?></td>
         <?php

} // END zeile.bild

if(isset($zeile.bild_item)) { unset($zeile.bild_item); }

?>
</tr>
<?php

} // END zeile

if(isset($zeile_item)) { unset($zeile_item); }

?>
                           </tr></td>
                        </tr>
                    </table>
                 </td>
        </tr>
</table>

<br>

</center></td>
</tr>
</table>
<table  width="60%" cellspacing="0" cellpadding="0" border="0" align="center">
  <tr>
        <td><span class="nav"><?php echo isset($this->vars['PAGE_NUMBER']) ? $this->vars['PAGE_NUMBER'] : $this->lang('PAGE_NUMBER'); ?></span></td>
        <td align="right"><span class="nav"><?php echo isset($this->vars['PAGINATION']) ? $this->vars['PAGINATION'] : $this->lang('PAGINATION'); ?></span></td>
  </tr>
</table>
und das ist die zeile, die den fehler beinhaltet

Code: Alles auswählen

$zeile.bild_count = ( isset($zeile_item['bild.']) ) ? sizeof($zeile_item['bild.']) : 0;     
irgendeine idee ?

falls du willst, kann ich dir ftp zugriff auf meine entwicklungsumgebung geben, dann bräuchtest du nur einen editor =)