Seite 2 von 4

Verfasst: 03.08.2005 00:04
von shwepsi
sorry, xs Mod habe ich nie benutzt

ich hätte die Variable per Array belegt...

Verfasst: 03.08.2005 00:21
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

Verfasst: 07.08.2005 14:12
von d23
hm weiß denn keiner rat ?

Verfasst: 08.08.2005 12:51
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 ;)

Verfasst: 08.08.2005 16:16
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

Verfasst: 08.08.2005 19:07
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>


Verfasst: 08.08.2005 22:03
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

Verfasst: 08.08.2005 22:34
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

Verfasst: 09.08.2005 12:10
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?

Verfasst: 09.08.2005 13:56
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