Modulo Spalten auf 3 begrenzen

fUnKuCh3n

Erfahrenes Mitglied
Hallo,

ich habe nen kleines Problemchen...undzwar im Script ist modulo so ausgelegt, dass es halt nach 5 Einträgen erst ne neue Zeile beginnt, doch ich wollte es eigentlich nach 3 haben...doch steig ich da irgendwie nicht hinter, welche Variablen ich jetzt ändern muss damit er halt nach 3 Bildern schon ne neue Zeile beginnt...

PHP:
<table width="400">
  <colgroup>
    <col width="122"/>
    <col width="122"/>
    <col width="122"/>
    <col width="122"/>
    <col width="122"/>
  </colgroup>
  <tr><th colspan="5"><h2>Sub-Titel</h2></th></tr>
  <tr>
<?php
include("config.php");
include("connect.php");
error_reporting(E_ALL);
// Verbindung mit xy für Einträge anzeigen
$result = mysql_query("SELECT * FROM `usergallerypics`");
$num = mysql_num_rows($result);
for ($i = 0; $i < $num; $i++){
  $row = mysql_fetch_array($result);
  while ($row2 = mysql_fetch_assoc($result))
    {
    $bid = $row2['bid'];
    $galleryid = $row2['galleryid'];
    $kommentar = $row2['kommentar'];
    $timestamp = $row2['timestamp'];
    $datum = date("d.m.Y" , $timestamp);

  // Modulo ermitteln zur Tabellendarstellung
  $rest = bcmod($i,5);

  // die Werte aus der Datenbank
  echo "<td><img src=../images/gallery/user/".$bid. "_".$timestamp. "_".$galleryid. "_thumb.jpg></td>"; }

    // Kommt neue Spaltenreihe?
  if ( $rest == 4 ) {
    echo '</tr>' ;


    if ( $i != $num - 1 ) {
      echo '<tr>';
      }
    }
  }



// Angefangene Reihe mit Leerzellen füllen
switch ($rest) {
  case 0:
    echo '<td colspan="4"> </td></tr>';
    break;
  case 1:
    echo '<td colspan="3"> </td></tr>';
    break;
  case 2:
    echo '<td colspan="2"> </td></tr>';
    break;
  case 3:
    echo '<td> </td></tr>';
    break;
}

?>

  </tr>
</table>
 
Hallo,
hier mal ein Beispiel wie du das realisieren könntest:
PHP:
<?php
    $arr = array(
                    'Zeile1',
                    'Zeile2',
                    'Zeile3',
                    'Zeile4',
                    'Zeile5',
                    'Zeile6'
                );

    for ($i = 0; $i < count($arr); $i++){
        echo $arr[$i].' ';
        if ($i % 3 == 2){
            echo '<br />';
        }
    }
?>

mfg
forsterm
 
Hmm, naja das ist ja nicht direkt die Lösung die ich angestrebt hatte...
Hallo,
du willst doch den Inhalt einer MySQL - Tabelle in einer HTML - Tabelle mit drei Spalten ausgeben lassen, oder?
Wenn ja dann solltest du anhand meines Beispiels die Lösung für dein Problem finden.
Ich hab dir absichtlich keine eine Lösung, die du 1:1 übernehmen kannst gepostet, da du dann ja nichts lernen würdest. ;)

mfg
forsterm
 
Die Antwort von forsterm war ja auch nur ein Beispiel wie man es sich vorzustellen hat und keine direkte Lösung. Ein wenig Transferleistung wird schon noch erwartet...

Wenn du dein gespostetes Script anpassen willst musst du auf jeden Fall die beiden Zeilen mit
PHP:
 $rest = bcmod($i,5);
und
PHP:
if ( $rest == 4 ) {

ändern. bcmod findest du im Beispiel von forsterm als % wieder, welches beides für Modulo steht.
 
Hey, sry für meine Falsche Ausdrucksweise...aber ich meine, die Variante von forsterm ist natürlich auch ne Möglichkeit, jedoch finde ich sie nicht so sehr super...da ich halt mein Script ja schon habe.

Und wenn ich die Werte wie du sagst ( hab ich schon bevor ich hier gepostet habe, getan ) ändere dann passiert nix, also ich hab natürlich auch außerhalb von PHP oben die <col> angepasst und alles andere auch noch...aber irgendwie bekomme ich keinerlei sichtbare Änderung...
 
Hallo,
du kannst mein Beispiel auch in einer MySQL - Abfrage verwenden ungefähr so:
PHP:
<?php
    require('connect.php');

    $sql = 'SELECT * FROM tabelle';
    $query = mysql_query($sql) or die(mysql_error());

    echo '<table><tr><td>Spalte 1</td><td>Spalte2</td><td>Spalte3</td></tr><tr>';

    $i = 0;

    while ($row = mysql_fetch_assoc($query)){

        echo '<td>'.$row['feld1'].'</td>';
        echo '<td>'.$row['feld2'].'</td>';
        echo '<td>'.$row['feld3'].'</td>';

        if ($i % 3 == 2){
            echo '</tr><tr>';
        }

        $i++;
    }

    echo '</tr></table>';
?>

mfg
forsterm
 
Zurück