Verständnisfrage für loops

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Verständnisfrage für loops

    Hallo zusammen

    Ich hätte eine Frage. Wie löse ich mit php den folgende Fall. Ich lese jetzt alles datensätze aus der Datenbank aus und cache sie:

    $result = $db->unbuffered_query(„select * from newscat sort by id desc“);
    While ($row = $db->fetch_array($result)){
    $newscatcache[$row[‘id’]][$row[‘titel’]] = $row;
    }

    Das Ziel ist es, das ich alle Daten in den Cache (array) legen.

    So, was will ich damit? Ich will die die Kategorien wie folgt anordnen. 3 kategorien auf einer ebene.
    Wenn es mehr datensätze hat, geht es in die nächste ebene.

    Also muss die html wie folgt aufgebaut werden:

    <schlaufe>
    <tr>
    <schlaufe><td>$katname</td></schlaufe>
    </tr>
    </schlaufe>

    Wie sieht das mit php aus? Hab irgendwie eine blockade.
    Ich danke euch für die hilfe
    MFG CHRIS
    FlowFact AG

  • #2
    Re: Verständnisfrage für loops

    nö, schleife in schleife ist dafür gar nicht erforderlich.

    du musst nur feststellen, wann dein zähler ein vielfaches von drei erreicht hat (stichwort: modulo-operator), und dann halt eine neue tabellenzeile beginnen.

    (und natürlich am ende darauf achten, ggf. fehlende zellen auf grund nicht durch drei teilbarer anzahl zu ergänzen.)
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      wozu denn $newscatcache[$row[‘id’]][$row[‘titel’]] = $row; ? Durch id hat $newscatcache genauso viel Elemente wie $row, die wiederum Arrays enthalten. Warum nicht einfach in der Schleife direkt ausgeben und per Modulo-Operation prüfen, ob schon 3 ausgegeben ist, wenn ja dann </tr><tr> zusätzlich ausgeben. Und wenn du unbedingt cachen willst, dann wäre IMHO $newscatcache[] = $row; besser

      Kommentar


      • #4
        also meinst ihr so?


        PHP-Code:
        $result $db->query("SELECT id, titel FROM bb".$n."_newsgroups ORDER BY id DESC");
        while(
        $row $db->fetch_array($result)){
            
        $newscatcache[$row['id']][$row['titel']] = $row;
        }

        $lastitem end($newscatcache);
        reset($newscatcache);

        echo 
        '<table border="1">';
        foreach ( 
        $newscatcache as $var ) {
            
        $i++;
            if ( 
        $i%== ) echo '<tr><td>'.$var.'</td>';
            else echo 
        '<td>'.$var.'</td>';
            if ( 
        $i%== || $var == $lastitem) echo '</tr>';
        }
        echo 
        '</table>'
        MFG CHRIS
        FlowFact AG

        Kommentar


        • #5
          Nö, suche nach Modulo

          Kommentar


          • #6
            Ok, hat mir sehr geholfen. Danke dir ASP2PHP.

            Hier für die, die sich für modulo in verbindung mit datenbank intressieren:


            PHP-Code:
            <?
            require('./global.php');

            //############### NEWS KATEGORIE #################
            echo '<table width="600" border="1">';
            $result = $db->query("SELECT id, titel FROM newsgroups ORDER BY id DESC");
            while($row = $db->fetch_array($result)){
                $i++;
                if ( $i%3 == 1 ) echo '<tr><td width="20%">'.$row['titel'].'</td>';
                else echo '<td width="20%">'.$row['titel'].'</td>';
                if ( $i%3 == 0 || $row == $lastitem) echo '</tr>';
            }
            echo '</table>';
            ?>
            MFG CHRIS
            FlowFact AG

            Kommentar

            Lädt...
            X