kostenloser Webspace werbefrei: lima-city


Vatiable Ausgabe in mehrere Spalten

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    h4nni

    h4nni hat kostenlosen Webspace.

    Hallo Leute,

    ich weiß nicht nach was ich noch suchen soll im Board, also:

    Ich würd gerne eine MYSQL tag/tabelle">Tabelle ausgeben mit einer variablen Anzahl an Ausgaben. Mein erster Ansatz war mit div-elementen per float und einer festen Breite. Nur dann werden die Werte aus der Tabelle von links nach rechts ausgegeben und dann in die nächste Zeile. Ich wollte aber quasi 4 gleich lange Spalten ausgeben, Beispiel:

    1 - 5 - 9
    2 - 6 - 10
    3 - 7 - 11
    4 - 8 - 12

    und nicht:

    1 - 2 - 3
    4 - 5 - 6
    7 - 8 - 9
    ...

    Gibt es da eine möglichkeit außer alle Variablen zu zehlen und dann durch 4 zu teilen und einen Zeilenumbruch zu machen? Die Box sollte nämlich nach möglichkeit eine % Angabe bekommen und verkleiner und vergrößerbar sein.

    Wer ne Idee?


    Beste Grüße,
    Jan
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Mir ist die Idee gekommen, immer nur jeden vierten Datensatz auszugeben.
    Dann kannst du für jede Spalte eine einzelne Abfrage gestalten und hast, was du willst...

    Leider weiß ich nicht, ob und wie das geht...
    Ich mach mich aber mal schlau
  4. hay,

    hat deine SQL-Abfrage 4 Spalten oder wie ist das mit deiner Durchnummerierung von 1 - 12 zu verstehen? hat die Tabelle nur 1 Spalte und jede Zahl ist ihre eigene Zeile?

    (meinst du jetzt 4 Spalten oder 4 zeilen? Du schreibst nämlich 4 Spalten, hast bei deinem Beispiel aber 4 Zeilen)

    Mein Ansatz wäre gewesen, deine Abfrage in ein numerisch indiziertes Array zu speichern und dann mit 2 for schleifen das auszulesen,
    falls ich richtig verstanden habe, was du machen möchtest...


    Gruß,
  5. Autor dieses Themas

    h4nni

    h4nni hat kostenlosen Webspace.

    Also die MySQL Tabelle hat überhaupt keine Relevanz. Es geht nur um die Ausgabe von mehreren Variablen.

    Es geht um die Darstellung mehrer Daten in (z.B.) 4 Spalten. Normalerweise funktioniert die Ausgabe ja aber nur Zeilenweise. Als veranschaulichendes Beispiel:

    Es werden 100 Filme nach dem Alphabet ausgegeben, nun sollten in erste Spalte die ersten 25, in die zweite die nächsten 25 usw. Mein einziger einfall wäre ...

    1. Datensätze zählen
    2. durch Spaltenanzahl teilen
    3. nach erreichen der im Beispiel 25 die nächste Spalte öffnen (in meinem Fall eine DIV-Box).

    Nur das Problem dabei ist, das je nach Auflösung mehr oder weniger Spalten sinn machen, also die Spaltenanzahl variable sein sollte.
  6. Du willst das doch in Verbindung mit PHP ermöglichen oder??

    Ich verstehe dein Problem nicht so Recht, so wie du es ungefähr genannt hast war es doch ok??

    Mein Lösungsvorschlag:

    <?php
    
    
    // MYSQL-Abfrage
    $db1 = mysql_query("MYSQL-ABFRAGE");
    
    // Anzahl der Zeilen herraus finden
    $anz = mysql_fetch_array($db1);
    
    // Anzahl der Spalten herraus finden bestimmen (ceil => Aufrunden)
    $width = ceil($anz / 25);
    // Anzahl der Spalten : 100 (weil 100%)
    $width = 100 / $width;
    
    $i = 0;
    
    // Style-Tags beim DIV, nicht vergessen (float: und so) ;)
    // Anfangs-Tag
    echo "<div style=\"width: ".$width."%\">";
    
    while($db = mysql_fetch_array($db1)) {
        
        $i++;
        
        echo "".$db['wert']."<br />";
        
        // Überprüfen ob Wert durch 25 Teilbar ist (ohne Rest)
        if($i % 25 == 0)
            echo "</div><div style=\"width: ".$width."%\">"; // Style-Tags beim DIV, nicht vergessen (float: und so) ;)
        
    }
    
    // End-Tag
    echo "</div>";
    
    ?>



    Also das ist jetzt ohne testen und ausprobieren einfach mal so da hin geschrieben und hoffe das ich keinen Denkfehler habe, bei Verständnisfragen oder ähnlichem frag einfach nach ;)

    Fabi
  7. Okay, ich glaub ich hab verstanden, was du machen möchtest,
    lässt sich am einfachsten mit CSS machen

    <html>
    <head>
    <title>Elemente vertikal anordnen</title>
    <style class="text/css">
    div#list_wrapper {
    width: 600px;
    border: 1px solid #000000;
    -webkit-column-width: 100px;
    -webkit-column-gap: 5px;
    -webkit-column-rule: 1px solid #000000;
    
    -moz-column-width: 100px;
    -moz-column-gap: 5px;
    -moz-column-rule: 1px solid #000000;
    
    column-width: 100px;
    column-gap: 5px;
    column-rule: 1px solid #000000;
    
    -webkit-column-count: 5;
    -moz-column-count: 5;
    column-count: 5;
    
    }
    div.list_elem {
    height: 30px;
    border: 1px solid #ff0000;
    }
    </style>
    </head>
    <body>
    <div id="list_wrapper">
    	<div class="list_elem">1</div>
    	<div class="list_elem">2</div>
    	<div class="list_elem">3</div>
    	<div class="list_elem">4</div>
    	<div class="list_elem">5</div>
    	<div class="list_elem">6</div>
    	<div class="list_elem">7</div>
    	<div class="list_elem">8</div>
    	<div class="list_elem">9</div>
    	<div class="list_elem">10</div>
    	<div class="list_elem">11</div>
    	<div class="list_elem">12</div>
    	<div class="list_elem">13</div>
    	<div class="list_elem">14</div>
    	<div class="list_elem">15</div>
    
    	<div class="list_elem">1</div>
    	<div class="list_elem">2</div>
    	<div class="list_elem">3</div>
    	<div class="list_elem">4</div>
    	<div class="list_elem">5</div>
    	<div class="list_elem">6</div>
    	<div class="list_elem">7</div>
    	<div class="list_elem">8</div>
    	<div class="list_elem">9</div>
    	<div class="list_elem">10</div>
    	<div class="list_elem">11</div>
    	<div class="list_elem">12</div>
    	<div class="list_elem">13</div>
    	<div class="list_elem">14</div>
    	<div class="list_elem">15</div>
    </div>
    </body>
    </html>


    du müsstest es natürlich noch an deine Bedürfnisse anpassen, Breite kannste ja ganz einfach im CSS bei #list_wrapper abändern...

    müsstest hald schauen, inwiefern das von allen browsern unterstützt wird...

    der Php-Teil ist ja dann nichtmehr schwer...

    ich hab jetrzt gesagt, dass es 5 Spalten geben soll, du kannst das aber auch ganz weglassen,
    dann gibt column-width an, wie breit eine Spalte sein soll, damit kannste dann auch width von dem wrapper div anpassen wie du möchtest... der inhalt ändert sich prinzipiell flexibel mit
    (wenn du weiter beides benutzt, gibt count die maximale anzahl spalten an, aber wenn das 20 ist, da aber nur 10x 100px reinpassen, dann werden da auch nur 10 reingemacht...)

    Ich hoff das hast du gemeint :)
    Gruß

    edit:
    is noch "relativ" neu (css3) - deshalb auch mit -moz und -webkit usw
    hier die offizielle Dokumentation:
    http://www.w3.org/TR/css3-multicol/
    (die beschreibt aber nur, welcher Befehl was machen sollte... inwiefern die Browser das richtig interpretieren ist damit nochned gesagt... - auf jedenfall auch auf den doctype achten, das kann schon oft helfen...)

    Beitrag zuletzt geändert: 18.4.2012 17:40:21 von fr34qy
  8. 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!