[UPDATE: funktioniert fast] template nächste tabellenzeile

Alles zu Styles, Templates, Icons und Smilies für phpBB 2.0, sowie allgemeine Designfragen zur Integration von phpBB in bestehende Websites.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
shwepsi
Mitglied
Beiträge: 1697
Registriert: 02.06.2003 14:37
Wohnort: NRW - immer dem Monitorleuchten folgen...
Kontaktdaten:

Beitrag von shwepsi »

sorry, xs Mod habe ich nie benutzt

ich hätte die Variable per Array belegt...
Die Weisheit verfolgte mich sekundenlang...
Aber sie überholte mich und war fortan nicht mehr gesehen !!!
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

wie gesagt, es liegt *nicht* am xs_mod, bei verwendung der original template.php tritt der fehler auch auf.

als array, inwiefern ? das ist dein beispiel von weiter oben im topic, 1zu1 übertragen
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

hm weiß denn keiner rat ?
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

so, das ganze läuft jetzt und ich bekomme auch meinen langersehnten output ^^

es war ein ganz doofer fehler im template, man sollte halt guggen ob BEGIN und END richtig sind.

wie gesagt, jetzt bekomme ich eine ausgabe, leider stimmt die noch nicht so ganz.

anstatt jeweils 4 fotos in einer zeile anzuzeigen und bei mehr als 4 fotos dann automatisch in die nächste zeile zu springen, werden alle fotos untereinander ausgegeben

so sollte es sein:

Code: Alles auswählen

[1] [2] [3] [4]
[5] [6] [7] [8]
...
das wird ausgegeben:

Code: Alles auswählen

[1]
[2]
[3]
[4]
...
hier nochmal der aktuelle ausschnitt aus php und tpl datei:

php

Code: Alles auswählen

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

        $y = $x;

        for ($y = $x; $y <= $x + 4; $y++)
        {
              $template->assign_block_vars('zeile.bild', array(
                  'THMIMG' => $img_url,
               ));

          $x++;

          if(!isset($cnt_alb[$x]))
                        break;
        }
}


tpl

Code: Alles auswählen

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

und einmal das html, was der browser bekommt:

Code: Alles auswählen

<tr>
                  <td> <a href=gallery_pic.php?pic_id=6><img src="gallery/gal00002/_thm/DSC00001.JPG"></a><br></td>
         </tr>
<tr>
                  <td> <a href=gallery_pic.php?pic_id=7><img src="gallery/gal00002/_thm/DSC00002.JPG"></a><br></td>
         </tr>
<tr>
                  <td> <a href=gallery_pic.php?pic_id=8><img src="gallery/gal00002/_thm/DSC00003.JPG"></a><br></td>

         </tr>
wie bekomme ich das jetzt in den griff

danke für eure geduld ;)
shwepsi
Mitglied
Beiträge: 1697
Registriert: 02.06.2003 14:37
Wohnort: NRW - immer dem Monitorleuchten folgen...
Kontaktdaten:

Beitrag von shwepsi »

also ich habe gleich 2 Fehler gesehen (von mir denke ich... tschuldigung)

1.)
vor die Schleife:
$end = $x + 4;
in die Schleife anstelle von $y <= $x + 4
$y <= $end
2.) vor der Schleife:
ersetze $y = $x; durch $start = $x;
und in der Schleife
$y = $x; durch $y = $x;

nun zurück zu deinem Fehler:
if(!isset($cnt_alb[$x]))
break;
ersetze durch
if(!isset($cnt_alb[$x])){
echo '<!-- Abbruch -->' . "\n";
break;
}

dann sag mal was dann im Quelltext kommt

PS: die Lösung ist dann noch nicht HTML Konform, aber fehlerfrei darzustellen.
es fehlen die Leerfelder die mit einem else eingebunden werden
Die Weisheit verfolgte mich sekundenlang...
Aber sie überholte mich und war fortan nicht mehr gesehen !!!
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

shwepsi hat geschrieben: 1.)

und in der Schleife
$y = $x; durch $y = $x;
wie was wo ? ;)

so sieht es jetzt aus:

Code: Alles auswählen


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

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

        $start = $x;

        for ($y = $x; $y <= $end; $y++)
        {
              $template->assign_block_vars('zeile.bild', array(
                  'THMIMG' => $img_url,
                  'CNT_CMTS' => $cnt_cmt
               ));

          $x++;

         if(!isset($cnt_alb[$x])){
echo "<!-- Abbruch -->" . "\n";
break;

        }
}

}

ausgabe ist wie gehabt, alle bilder untereinander.

das ABBRUCH wird am anfang des templates eingefügt, also unter dem letzten teil der overall_header.php

Code: Alles auswählen


<!-- Abbruch -->
<!-- Abbruch -->
<!-- Abbruch -->
<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;Sonntag, 10. April   2005</th>
</tr>

        <tr>
                <td class="row1">
                    <table width="100%" cellspacing="0" cellpadding="5" border="0">
                       <tr>
                                <td class="row2"><span class="genmed"><i><b>TEST</a></b></i><br> Fotograf:  <a href="profile.php?mode=viewprofile&u=Oli">Oli</a></span></td>
                        </tr>
                        <tr>

                         <td class="row1">  <br>
                         <table width="100%" cellspacing="0" cellpadding="5" border="0">

<tr>
                  <td> <a href=gallery_pic.php?pic_id=9><img src="gallery/gal00003/_thm/DSC00001.JPG"></a><br><span class="gensmall">0 Kommentare</span><br></td>
         </tr>
<tr>
                  <td> <a href=gallery_pic.php?pic_id=10><img src="gallery/gal00003/_thm/DSC00002.JPG"></a><br><span class="gensmall">2 Kommentare</span><br></td>

         </tr>
<tr>
                  <td> <a href=gallery_pic.php?pic_id=11><img src="gallery/gal00003/_thm/DSC00003.JPG"></a><br><span class="gensmall">0 Kommentare</span><br></td>
         </tr>
                         </table>
                         </td>
                         </tr>
                    </table>

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

shwepsi
Mitglied
Beiträge: 1697
Registriert: 02.06.2003 14:37
Wohnort: NRW - immer dem Monitorleuchten folgen...
Kontaktdaten:

Beitrag von shwepsi »

anstelle von
for ($y = $x;

for( $y = $start

ist zwar kein Fehler aber sauberer

und dsa echo nehme raus
und baue beim if (!isset ein:
$template->assign_block_vars('zeile.bild', array(
'ABBRUCH' => '<!-- Abbruch -->
));
und als else zu dem !isset
$template->assign_block_vars('zeile.bild', array(
'ABBRUCH' => '<!-- ok, zählt hoch -->
));
und natürlich 'ABBRUCH' auch bei der tpl auch einbauen
Die Weisheit verfolgte mich sekundenlang...
Aber sie überholte mich und war fortan nicht mehr gesehen !!!
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

so, jetzt ist abbruch so einigermaßen an der richtigen stelle

Code: Alles auswählen


<!-- BEGIN zeile -->
<tr>
         <!-- BEGIN bild -->
         <td> {zeile.bild.THMIMG}<span class="gensmall">{zeile.bild.CNT_CMTS} Kommentare</span><br></td>
         {zeile.bild.ABBRUCH}
         <!-- END bild -->
</tr>
<!-- END zeile -->

php

Code: Alles auswählen

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

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

        $start = $x;

        for ($y = $start; $y <= $end; $y++)
        {
              $template->assign_block_vars('zeile.bild', array(
                  'THMIMG' => $img_url,
                  'CNT_CMTS' => $cnt_cmt
               ));

          $x++;

         if(!isset($cnt_alb[$x])){
$template->assign_block_vars('zeile.bild', array(
'ABBRUCH' => '<!-- Abbruch -->'
));
break;
}
        else {
        $template->assign_block_vars('zeile.bild', array(
'ABBRUCH' => '<!-- ok, zählt hoch -->'
));
}

        }

}



}
ausgabe

Code: Alles auswählen

<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;Sonntag, 10. April   2005</th>
</tr>
        <tr>
                <td class="row1">

                    <table width="100%" cellspacing="0" cellpadding="5" border="0">
                       <tr>
                                <td class="row2"><span class="genmed"><i><b>Millennium München</a></b></i><br> Fotograf:  <a href="profile.php?mode=viewprofile&u=Oli">Oli</a></span></td>
                        </tr>
                        <tr>
                         <td class="row1">  <br>

                         <table width="100%" cellspacing="0" cellpadding="5" border="0">

<tr>
                  <td> <a href=gallery_pic.php?pic_id=9><img src="gallery/gal00003/_thm/DSC00001.JPG"></a><br><span class="gensmall">0 Kommentare</span><br></td>
                           <td> <span class="gensmall"> Kommentare</span><br></td>
         <!-- Abbruch -->         </tr>
<tr>

                  <td> <a href=gallery_pic.php?pic_id=10><img src="gallery/gal00003/_thm/DSC00002.JPG"></a><br><span class="gensmall">2 Kommentare</span><br></td>
                           <td> <span class="gensmall"> Kommentare</span><br></td>
         <!-- Abbruch -->         </tr>
<tr>
                  <td> <a href=gallery_pic.php?pic_id=11><img src="gallery/gal00003/_thm/DSC00003.JPG"></a><br><span class="gensmall">0 Kommentare</span><br></td>

                           <td> <span class="gensmall"> Kommentare</span><br></td>
         <!-- Abbruch -->         </tr>
                         </table>
                         </td>
                         </tr>
                    </table>
                 </td>

        </tr>
</table>

richtig so ? ausgabe ist immer noch untereinander
shwepsi
Mitglied
Beiträge: 1697
Registriert: 02.06.2003 14:37
Wohnort: NRW - immer dem Monitorleuchten folgen...
Kontaktdaten:

Beitrag von shwepsi »

ja, und der Fehler liegt in der Abbruchbedingung.
if(!isset($cnt_alb[$x])){
echo "<!-- Abbruch -->" . "\n";

das <!-- Abbruch --> erscheint dauernd in deinem Ausgabe Quelltext.

Leider weiss ich nicht wie dein Array $cnt_alb aufgebaut ist. Ist es ein nummeriertes Array?

falls du da keine Ahnung hast gebe mal print_r($cnt_alb); ein, und zwar direkt vor der ersten schleife
das was da ausgespuckt wird sollte weiterhelfen können

PS: zeigt er da nicht eh immer das gleiche Bild an?
'THMIMG' => $img_url, <- das ist kein Array, deswegen vermute ich das mal
oder hast du die Schleife gekürzt?
Die Weisheit verfolgte mich sekundenlang...
Aber sie überholte mich und war fortan nicht mehr gesehen !!!
d23
Mitglied
Beiträge: 132
Registriert: 28.01.2003 13:53

Beitrag von d23 »

$cnt_alb enthält nur die gesamtanzahl der zu ladenden fotos, sprich wieviele fotos das gewählte album enthält.

das array ist $alb_row, mit der abfrage:

Code: Alles auswählen

$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)) {
...

dein code ist innerhalb der schleife

}
$img_url wird durch diese schleife gefüllt, als

Code: Alles auswählen

$img_url = "<a href=gallery_pic.php?pic_id=" . $akt_ptid . "><img src=\"gallery/" . $alb_row['ordner'] . "/_thm/" . $alb_row['dateiname'] . "\"></a><br>";
gibt es eine möglichkeit, das besser zu machen ? weil ich meine, du zielst auf einen anderen lösungsweg ab als ich

das array $alb_row:

Code: Alles auswählen

Array ( [id] => 9 [album_id] => 3 [ordner] => gal00003 [dateiname] => DSC00001.JPG ) Array ( [id] => 10 [album_id] => 3 [ordner] => gal00003 [dateiname] => DSC00002.JPG ) Array ( [id] => 11 [album_id] => 3 [ordner] => gal00003 [dateiname] => DSC00003.JPG 
die bilder werden richtig ausgegebn, also nciht immer dasselbe
Antworten

Zurück zu „phpBB 2.0: Styles, Templates und Grafiken“