Author Topic: verschachtelter loop  (Read 1237 times)

0 Members and 1 Guest are viewing this topic.

superheld

  • Guest
verschachtelter loop
on: Wed, 17. January 2007 - 12:33:21
hallo zusammen!

so, mein erster verschachtelter loop. und was soll ich sagen, es klappt nicht. nach einem ganzen tag probieren und code neu schreiben, geb ich es auf. hier der aktuelle stand:

php:
Code: [Select]
for ($i=0;$i<mysql_num_rows($blog_que);$i++) {
$blog_row = mysql_fetch_array($blog_que);

## CHECK FOR GALLERYLINK AND CRATE GALLERYLOOP
$blog_gal_que = mysql_query("SELECT gal_c_gal_name
FROM ".$SITEVARS[mysql_table_prefix]."gallery_connector
WHERE gal_c_connect_id = ".$blog_row[blog_id]." AND gal_c_connect_type = blog");
if (mysql_num_rows($blog_gal_que) == "0")
$blog_gal = "0";
else {
$blog_gal = mysql_fetch_array($blog_gal_que);
$blog_gal = $blog_gal[gal_c_gal_name];
# SET VARS
$dir_path = "../../pictures/Gallerys/$blog_gal/thumbs";
$dir_arr = array();
$dir_hdl = opendir($dir_path);
## DIR IN ARRAY
while ($tmp_file = readdir($dir_hdl)) {
$dir_arr] = $tmp_file;
}
## SORT
asort($dir_arr);
## WRITE HTML-LOOP-ARRAY
$blog_gal_arr = array();
foreach($dir_arr as $tmp_elem) {
$blog_gal_arr] = $tmp_elem;

}
closedir($dir_hdl);
}

## FILL ARRAY
array_push($blog_arr, array( blog_toppic => $blog_row[blog_toppic],
blog_text => $blog_row[blog_text],
blog_date => date("d.m.Y H:i", $blog_row[blog_stat_date_create]),
blog_gal => $blog_gal,
blog_gal_pics => $blog_gal_arr
));

}

die erste schleife liest ein mysql_query aus. das klappt, die daten bekomme ich angezeigt. in der schleife wird die tabelle galery_connector abgefragt, ob eine gallerie mit dem blogeintrag verkn�pft ist. wenn dem so ist, wird das verzeichnis der gallerie ge�ffnet und alle inhalte sortiert ausgelesen.

html:
Code: [Select]
<table width="100%" cellspacing="0" border="0" cellpadding="3">
<tbody>
<tmpl_loop name=loop_blog>
<tr>
<td align="center"><h3>{tmpl_var name=blog_toppic} {tmpl_var name=blog_date} </h3></td>
</tr>
<tr>
<td><h4>{tmpl_var name=blog_text}</h4></td>
</tr>
<tmpl_if name="blog_gal">
<tr>
<td>
<tmpl_loop name=blog_gal_pics>{tmpl_var name=blog_gal_arr}</tmpl_loop>
</td>
</tr>
</tmpl_if>
</tmpl_loop>
</tbody>
</table>

und hier soll es nun angezeigt werden. �ber _tmpl_if wird abgefragt, ob eine gallerie angezeigt werden muss. wenn ja, ausgabe der bilder...


ich hab mir die beiden dokus mehrfach angeschaut. au�er das andere schleifenarten verwendet werden, ist alles gleich, meiner meinung nach. dennoch bekomme ich in html nichts angezeigt. die tmpl_if schleife geht, hier habe ich ausgaben, nur deben der loop machts nicht *grml. wer hat den tip f�r mich, wos weiter lang geht??

danke und gru�
roland
Last Edit: Wed, 17. January 2007 - 13:29:00 by ClausVB

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Re: verschachtelter loop
Reply #1 on: Wed, 17. January 2007 - 13:27:09

Au�erdem ist Dein Template falsch
Code: [Select]
<tmpl_loop name=blog_gal_pics>{tmpl_var name=blog_gal_arr}</tmpl_loop>denn erstens fehlt das Hochkommata und zweitens ist "blog_gal_arr" auch ein Array.

Gut, da erz�hle ich Dir nichts Neues, aber Arrays m�ssen immer �ber TMPL_LOOP ausgegeben werden.
Das kann man sch�n an diesem Beispiel sehen. "$outer" und "$inner" sind Arrays, die beide �ber TMPL_LOOP angesprochen werden.

So wie es aussieht, hast Du nur einen drei-dimensionalen Array. Er muss aber 4 Dimensionen haben.

Mach bitte mal ein
Code: [Select]
echo <pre>; print_r($blog_arr); echo </pre>;und gib mir das Ergebnis davon, danke!

Gru�
Claus

superheld

  • Guest
Re: verschachtelter loop
Reply #2 on: Wed, 17. January 2007 - 13:55:03
die ausgabe

Code: [Select]
Array
(
    [0] => Array
        (
            [blog_toppic] => bilder
            [blog_text] => hier sollen mal bilder raus
            [blog_date] => 16.01.2007 01:06
            [blog_gal] => testing
            [blog_gal_pics] => Array
                (
                )

        )

)

Array
(
    [0] => Array
        (
            [blog_toppic] => bilder
            [blog_text] => hier sollen mal bilder raus
            [blog_date] => 16.01.2007 01:06
            [blog_gal] => testing
            [blog_gal_pics] => Array
                (
                )

        )

    [1] => Array
        (
            [blog_toppic] => test
            [blog_text] => test
            [blog_date] => 16.01.2007 00:54
            [blog_gal] => 0
            [blog_gal_pics] => Array
                (
                )

        )

)

was auff�llt ist, dass
  • zwei mal vorhanden ist?


jepp, auf die durch 2 teilbarkeit habe ich nicht geachtet, habe eher in richtung array den fehler gesucht und bei der schleife an sich. da werde ich mich gleich dran machen...

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Re: verschachtelter loop
Reply #3 on: Wed, 17. January 2007 - 14:04:41
jepp, auf die durch 2 teilbarkeit habe ich nicht geachtet, habe eher in richtung array den fehler gesucht und bei der schleife an sich. da werde ich mich gleich dran machen...

Schau Dir bitte die Beispielausgabe von "LOOP-Array: $outer" an. So muss Dein LOOP auch aussehen.

Gru�
Claus

superheld

  • Guest
Re: verschachtelter loop
Reply #4 on: Wed, 17. January 2007 - 14:40:51
dein "echo <pre>; print_r($blog_arr); echo </pre>;" hat mir weitergeholfen. das array wurde nicht gef�llt weil ich einen fehler in pfad hatte. das wurde, wie im letzten thread beschrieben, als fehler nicht angezeigt. (ich vermute weil ich php include und dann ekine fehlerausgabe mehr zu sehen ist... keine ahnung ;) ) jedenfalls ist das problem behoben ;)

danke