kostenloser Webspace werbefrei: lima-city


Sehr kleines foreach() Problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    h****d

    Hallo, meine Frage ist wohl simple, ich komme aber grade einfach nicht drauf, wie ich das selbst tag/machen">machen soll..

    Ich hab ne foreach schleife, aus der ich Daten aus der Datenbank auslese und in einer Tabelle ausgebe. Fuktioniert alles wunderbar. Ich hab 3 Spalten und unendlich nach unten.
    Nun mein Problem: Wie erkenne ich, dass die foreach-schleife am Ende ist? Ich muss wissen ob das Ende der Schleife erreicht wurde um eine weitere Funktion auszugeben.

    Ich denke, das geht irgendwie mit count() und Array mitzählen, aber es läuft nich so wie ich will.. Also, woher weiss ich das die Schleife am Ende is?

    Danke
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hi du könntest sowas machen:
    $anzahl = count($array);
    for ($i = 0; $i < $anzahl-1; $i++) 
    {
      $array[\'$i\'] = \"irgendwas\";
      // tue was du mit allen elementen außer dem letzten tun moechtest
    }
    // das letzte element ist $array[\'$anzahl\']



    Beitrag geändert: 6.2.2008 13:06:45 von jay0ne
  4. Autor dieses Themas

    h****d

    <table border=\"1\">
      <colgroup width=\"REX_VALUE[1]\"></colgroup>
      <tr>
    <?php
    // Auslesen der Bilder pro Reihe und speichern in Variable
    $maxc = REX_VALUE[2];
    foreach ((explode(\",\", \"REX_MEDIALIST[1]\")) as $gentry)
    {
    $ooPic = OOMedia::getMediaByName ($gentry);
    $fileTitle = $ooPic->getTitle();
    ?>
        <td>
    <a rel=\"lightbox[galeriename]\" href=\"files/<? echo $gentry; ?>\" title=\"<? echo $fileTitle; ?>\">
    <img src=\"index.php?rex_resize=<? echo REX_VALUE[1]; ?>a__<? echo $gentry; ?>\"></a></td>
    <?
    $i++;
    $alles = $i%$maxc;
    $alles2 = count ($gentry);
    #echo \"$alles\";
    if ($i%$maxc == 0) { 
    echo \"</tr><tr>\";
    $durch = 1;
    }
    // HIER IS DAS ENDE, WIE VERKLICKER ICH DAS PHP?
    ?>
    <?php
    }
    echo $alles;
    ?>
    </tr></table>


    Ich prüfe ob $i durch 3 teilbar ist, wenn ja, mach ich nen Umbruch. So, und am Ende ist es so, wenn ich z.B nur 7 Ausgaben habe, würde die Tabelle nicht zuende gehen (Table border 1) und die Tabelle würde nicht geschlossen sein, daher will ich prüfen, ist das Ende angelangt, und ist der Wert durch 3 Teilbar, wenn ja, ist Tabelle ok, wenn nein nochmal X Felder ausgeben, damit die Tabelle geschlossen wird...



    Beitrag geändert: 6.2.2008 13:16:45 von hirbod
  5. Ich verstehe dein Problem nicht. Die Schleife ist vorbei, wenn sie vorbei ist und der Server macht doch dann automatisch mit den Zeilen, die danach kommen weiter.
    Beispiel:

    <table>
      <tr>
        <td>Gegenstand</td>
        <td>Preis</td>
      </tr>
    <?php
      $liste = array(\"Kekse\"=>\"1 Euro\", \"Kuchen\" => \"2 Euro\");
      foreach($liste as $key => $value){
        print \"
      <tr>
        <td>$key</td>
        <td>$value</td>
      </td>\";
      }
    ?>
    </table>



    Beitrag geändert: 6.2.2008 16:29:16 von i-spacke
  6. Oo
    foreach ((explode(\",\", \"REX_MEDIALIST[1]\")) as $gentry)
    {
    $ooPic = OOMedia::getMediaByName ($gentry);
    $fileTitle = $ooPic->getTitle();
    ?>
        <td>


    man kann doch nich einfach so in der schleife das php-tag zumachen oder irre ich mich da? ^^
  7. Nicht schick, aber es geht. Aber wenn man es so macht, dann finde ich das hier besser:

    <? foreach($liste as $key => $value): ?>
      <tr>
        <td><?= $key ?></td>
        <td><?= $value ?></td>
      </td>
      <? endforeach; ?>


    Da bin ich mir auch sicher, dass es legitim ist.
  8. mir sagen dann doch eher die vielen echos zu...

    <? 
    foreach($liste as $key => $value)
    {
      echo \"<tr>\";
      echo \"  <td> $key </td>\";
      echo \"  <td> $value </td>\";
      echo \"</td>\";
    }
    ?>

  9. Sowas dann bitte aber in ein Echo oder Print packen, da der Code sonst viel zu dick wird. Das ist schon optimaler und schneller ohne so viele Echos.
  10. Autor dieses Themas

    h****d

    Danke für die Hilfe, habs aber selbst gelöst, anscheinend hatte ich das Problem nicht deutlich genug angesprochen

    <table class=\"galerie\">
    <tr>
    <?php
    
    $cols = \"REX_VALUE[2]\";
    $i = 0;
    $images = explode(\",\", \"REX_MEDIALIST[1]\");
    
    if (is_array($images)) 
    {
            foreach($images as $img) 
            {
                    if($i >= $cols && ($i % $cols) == 0)
                    {
                            echo \"</tr><tr>\";
                            $firstRow = false;
                    }
                    $ooPic = OOMedia::getMediaByName ($img);
                    if(is_object($ooPic))
                    {
                            $fileTitle = $ooPic->getTitle();
                            echo \'<td><a rel=\"lightbox[galeriename]\" href=\"\'.$REX[HTDOCS_PATH].\'files/\'.$img.\'\" title=\"\'.$fileTitle.\'\">
                            <img src=\"index.php?rex_resize=REX_VALUE[1]a__\'.$img.\'\"></a></td>\';
                            $i++;
                    }
            }
    }
    
    ?>
    </tr>
    </table>



    So läufts wunderbar :)
    Falls ihr euch über die Variablen wundert, ich hab ein Galerie-Modul für Redaxo 4 geschrieben (für mich das beste CMS auf dieser Erde. -> www.redaxo.de )

    So, danke an alle :)

    Beitrag geändert: 7.2.2008 1:03:03 von hirbod
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!