Avatar billede hni Nybegynder
03. maj 2010 - 10:07 Der er 15 kommentarer

Udskriv i kolonner

Hej.

Jeg skriver nogle billeder ud fra min database i en lang række.
Jeg vil gerne have det delt op så det kommer i kolonner med f.eks. 4 kolonner i hver række, og så skifter den linje til næste række.

Hvordan gør jeg det?

Har nedenstående kode nu, hvor det bare bliver skrevet ud i en lang række:

<?php
$host = x
$user = x
$pass = x
$db  = x
$connection = mysql_connect($host,$user,$pass);
mysql_select_db("$db");

$query="SELECT * FROM spil ORDER BY dato DESC";
$result=mysql_query($query) or die(mysql_error());

echo "<tablel>\n";
while($row=mysql_fetch_assoc($result))
{
            ?>
            <table border="0" width="100%" background="images/moviebg1.jpg">
    <tr>
        <td valign="middle" width="120">
        <br>
        <a href="spilplayer.php?spilid=<?php echo $row['id'];?>">
<img border="1" src="u/spil/<?php echo $row['picname1'];?>" height="82" width="120">
</td>

        <td valign="top">
        <font color="000000" face="Verdana" size="3">
        <br>
            <?php
          $tid = $row['dato'];
        ?>
        <?php echo "<p style=\"text-align:left;\">"?>
        <?php echo $row['overskrift'];?>
        <br>
            <font color="000000" face="Verdana" size="1">
        Tilføjet d. <?php echo date("d-m-Y", strtotime($tid))?><br>
        Kategori: <u><?php echo $row['kategori'];?></u></td>

        </td>

    </tr>
   
</table>
Avatar billede j4k0b Nybegynder
03. maj 2010 - 10:13 #1
Det nemmeste er ved at gøre det med CSS. Se mit eksempel i en browser:


<html>
<head>
<style type="text/css">
    div.container {
        width: 600px;
        background-color: red;
    }
    div.item {
        width: 200px;
        float: left;
        background-color: blue;
    }
</style>
</head>
<body>


<div class="container">
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>
    <div class="item">test</div>

    <div style="clear:both"></div>
</div>


</body>
</html>
Avatar billede hni Nybegynder
03. maj 2010 - 10:19 #2
Mange tak, bruger dog ikke CSS - så vil helst holde mig fra det.
Har lavet det i ASP med noget array, så det burde vel også kunne lade sig gøre i PHP? :-)
Avatar billede j4k0b Nybegynder
03. maj 2010 - 12:41 #3
"bruger dog ikke CSS"
det skulle du tage at begynde på så
Avatar billede hni Nybegynder
03. maj 2010 - 12:55 #4
Det er jo altså i PHP området, så synes da det er logisk nok jeg ønsker en PHP-løsning i stedet for en CSS løsning. Så havde jeg jo postet det i CSS.
Men derfor skal du da stadig have tak for hjælpen.
Avatar billede repox Seniormester
03. maj 2010 - 13:04 #5
#4
Der er faktisk kommet en fremragende løsning på et simpelt problem - faktisk en utrolig effektiv løsning set i forhold til hvad du ville skulle skrive i PHP for at opnå det samme - så der er ingen grund til at blive spydig. Om du løser det i CSS eller PHP er fuldstændig ligegyldigt - der er jo ikke kun et facit!
Avatar billede olebole Juniormester
03. maj 2010 - 13:32 #6
<ole>

hni >> selvom det tydeligt ses på din kode, at du er historisk interesseret, kan du ikke regne med, at folk i et forum for moderne webkode stadig kan huske, hvordan man kodede i WWW's barndom tilbage i midthalvfemserne  ;o)

/mvh
</bole>
Avatar billede Slettet bruger
03. maj 2010 - 23:15 #7
Hvis nu KUN PHP løsninger kan bruges (hvilket ville undrer mig) så vil råde dig til at kigge på modulus operatoren.
Dokumentation kan findes på følgende side: http://dk2.php.net/manual/en/language.operators.arithmetic.php
Avatar billede hni Nybegynder
06. maj 2010 - 11:25 #8
#5 Det var da absolut heller ikke spydig ment, men bare en information. Er jo glad for folk vil hjælpe.... 

Hmmm... Vil jo bare skrive en tabel ud fra min database i en kolonne.. Bliver det virkelig lavet i CSS i dag i stedet for bare at skrive det ud i tabeller???
Avatar billede hni Nybegynder
06. maj 2010 - 11:26 #9
j4kob, kan da godt være man skulle overveje det.. Er bare vant til at bruge tabeller og synes det fungerer fint. :-)
Avatar billede j4k0b Nybegynder
06. maj 2010 - 13:44 #10
Hmmm... Vil jo bare skrive en tabel ud fra min database i en kolonne.. Bliver det virkelig lavet i CSS i dag i stedet for bare at skrive det ud i tabeller???

Det giver det samme i sidste ende, pånær én enkelt lille detalje (med mindre der er noget jeg har overset). Hvert element (<div class="item">) skal have samme højde når du benytter min metode ovenfor. Det har til gengæld den fordel, at hvis container-elementet ikke har nogen fast bredde, vil elementerne skalere sig efter browserens bredde, så hvis brugeren trækker i browseren, kommer hver række til at indeholde flere/færre elementer. Det kan evt. kombineres med en min-width egenskab.
Avatar billede arne_v Ekspert
09. maj 2010 - 03:44 #11
Hvis kolonnerne udelukkende er et layout spørgsmål, så er CSS hel fin. Hvis kolonnerne har mening i selve data, så er CSS ikke en god løsning.

Hvis det af den ene eller den anden grund skal laves i PHP, så er løsningen som nævnt i #7 at bruge modulus.

Jeg lavede engang et meget simpelt eksempel til demo:

<?php
$con = mysql_connect('localhost', 'root', '') or die(mysql_error());
mysql_select_db('Test', $con) or die(mysql_error());
$query = mysql_query('SELECT f1 FROM t1', $con) or die(mysql_error());
echo '<table border="1">';
$nocols = 3;
$n = 0;
while($row = mysql_fetch_array($query)) {
    $n++;
    if($n % $nocols == 1) echo '<tr>';
    echo '<td>' . $row['f1'] . '</td>';
    if($n % $nocols == 0) echo '</tr>';
}
if($n % $nocols != 0) echo '</tr>';
echo '</table>';
mysql_close($con);
?>
Avatar billede arne_v Ekspert
09. maj 2010 - 03:51 #12
Jeg forstår ikke helt forslaget om at spørger skal begynde at bruge CSS.

Givet at koden indeholder:

<?php echo "<p style=\"text-align:left;\">"?>

Enten ved man ikke hvad CSS er eller så mener man at spørger skal bruge CSS bedre.
Avatar billede arne_v Ekspert
13. juni 2010 - 04:16 #13
hni?
Avatar billede hni Nybegynder
12. juli 2010 - 13:13 #14
Er ikke kommet videre med det endnu, derfor den ikke er lukket. Men vil tage det op snarest! :-)
Avatar billede hni Nybegynder
10. august 2010 - 16:53 #15
Nu skal det snart være! :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester