[PHP/HTML] Automatisch HTML-kolommen genereren

Pagina: 1
Acties:
  • 176 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Ibbelz
  • Registratie: November 2000
  • Laatst online: 08-06-2022
Ik probeer een dynamische startpagina met links te maken. Denk aan een soort startpagina.nl alleen dan voor eigen gebruik. Dit is eigenlijk mijn eerste ervaring met php en sql, maar ik stuit nu op een probleem wat ik niet helemaal opgelost krijg.

Ik heb het script nu zover werkend dat de HTML-kolommen steeds automatisch gemaakt worden d.m.v. een while-lus. Echter wil ik dat de kolommen steeds per drie naast elkaar komen (ook net zoals startpagina.nl). Zoals het script nu is komt alles onder elkaar.

Onderstaand is mijn code op het moment:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
        "http://www.w3.org/TR/REC-html40/loose.dtd">

<html>
<head>
    <title>Startpage</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link href="css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
    
<?php include("inc/db_connect.inc.php") ?>

<?php

$query = " 
    SELECT * FROM links 
    LEFT JOIN categorie 
    ON categorie.id = links.categorie_id
    ORDER BY categorie.cat_naam";
$result = mysql_query($query) or die (mysql_error());

$cat = "";
$count = 0;

while ($row = mysql_fetch_assoc($result)) {
    $link_naam = $row['link_naam'];
    $link_url = $row['link_url'];   

    if ($cat != $row['cat_naam']) {
        if ($cat != "") {
        echo "</table>\n";
        }
        $cat = $row['cat_naam'];
            echo "<table border=1 cellspacing=1 cellpadding=1 width=200>\n";

        if ($count % 3 == 0) {
            /*echo "Iets om de tabellen in rijen van 3 te krijgen";*/
        }
        echo "<tr><th>$cat</th></tr>\n";
        $count++;
    }
    echo "<tr>\n";
    echo "<td><a target=_blank href=\"$link_url\">$link_naam</a></td>\n";
    echo "</tr>\n";
}
?>
</table>
</body>
</html>

Ik heb nu dus een counter ingebouwd de drie keer dat de lus is uitgevoerd "iets" kan doen. Maar ik weet niet precies wat ik daar moet doen, en hoe ik nou toch die tabellen goed naast elkaar krijg per drie.

Dit is momenteel de output: http://dev.ibbelz.net/uitlezen_tabel_3.php

Ik ben er redelijk van overtuigd dat dit probleem een simpele oplossing heeft, echt heb ik omdat ik pas net begonnen ben met php/sql (of eigenlijk programmeren in het algemeen) nog niet zo'n goed inzicht over hoe en wat.

Ik hoop dat iemand me een beetje opweg kan helpen. :)

Even he, to whom most things that most people would think were pretty smart were pretty dumb, thought it was pretty smart.


Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
Als je 3 kolommen wilt. Moet je elke kolom in een aparte <td> zetten.
Je moet je script dus zo aanpassen, dat ie td's start en afsluit op het moment dat jij dat wilt.

3 kolommen zien er zo uit:
code:
1
2
3
4
5
6
7
<table>
  <tr>
    <td>Kolom 1 </td>
    <td>Kolom 2 </td>
    <td>Kolom 3 </td>
  </tr>
</table>

[ Voor 18% gewijzigd door mocean op 09-10-2005 18:18 ]

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

  • Ibbelz
  • Registratie: November 2000
  • Laatst online: 08-06-2022
mocean schreef op zondag 09 oktober 2005 @ 18:18:
Als je 3 kolommen wilt. Moet je elke kolom in een aparte <td> zetten.
Je moet je script dus zo aanpassen, dat ie td's start en afsluit op het moment dat jij dat wilt.

3 kolommen zien er zo uit:
code:
1
2
3
4
5
6
7
<table>
  <tr>
    <td>Kolom 1 </td>
    <td>Kolom 2 </td>
    <td>Kolom 3 </td>
  </tr>
</table>
Nou ja, ik snap wel hoe je een HTML-tabel maakt. Kijk als het statisch was geweest was het niet echt een probleem. Mijn probleem is meer hoe ik het voor elkaar krijg dat dit allemaal in die while-lus goed gebeurt. :)

Even he, to whom most things that most people would think were pretty smart were pretty dumb, thought it was pretty smart.


Acties:
  • 0 Henk 'm!

  • NoFearWizz
  • Registratie: Oktober 2002
  • Laatst online: 18-09 16:59
je moet een counter in je while lus maken. en als die count op een bepaald aantal items komt maakt ie een nieuwe <TD> met een tabel erin en zet ie de counter weer op 0.

edit: je hebt al een counter je moet zorgen dat die counter een </td><td> neer zet maar daar binnen moet je wel een table maken voor de rest....

[ Voor 33% gewijzigd door NoFearWizz op 09-10-2005 18:28 ]


Acties:
  • 0 Henk 'm!

  • Ibbelz
  • Registratie: November 2000
  • Laatst online: 08-06-2022
Ik heb een counter. Die wanneer $count % 3 nul is iets gaat doen. Dat gebeurt dus eens per drie kolommen (precies wat ik wil). Maar ik krijg het niet echt voor elkaar om dan wat in dat if-statement bij die counter komt mijn tabellen goed te laten zetten.

Even he, to whom most things that most people would think were pretty smart were pretty dumb, thought it was pretty smart.


Acties:
  • 0 Henk 'm!

  • XiN-eViL
  • Registratie: Maart 2004
  • Laatst online: 29-08 10:13

XiN-eViL

kzie-nie-veel

Ibbelz schreef op zondag 09 oktober 2005 @ 18:29:
Ik heb een counter. Die wanneer $count % 3 nul is iets gaat doen. Dat gebeurt dus eens per drie kolommen (precies wat ik wil). Maar ik krijg het niet echt voor elkaar om dan wat in dat if-statement bij die counter komt mijn tabellen goed te laten zetten.
je moet dan dus maar eens per 3 x een <tr> en een </tr> weergeven, en bij de rest alleen <td> en </td>. :)

Acties:
  • 0 Henk 'm!

  • kmf
  • Registratie: November 2000
  • Niet online

kmf

pseudocode

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$counter = 0;
$aantal_kolommen =3;
$string = '<table><tr><td>';
while ($row =$DB->fetch_row($DB->query('SELECT BLALBLALB'))
{  
  $string .= $data.'</td>';
  if ($counter % $aantal_kolommen == 0)
  {
     $string .=  $string .'</tr><tr><td>';
  }

}
$string = $string . '</td></tr></table>';



zoiets... haal je voordeel eruit.

makkelijkste manier voor het maken van code om html uit te spugen is om in de sourcecode van de html te kijken en checken waar het fout gaat.

[ Voor 33% gewijzigd door kmf op 09-10-2005 18:36 ]

One thing's certain: the iPad seriously increases toilet time.. tibber uitnodigingscode: bqufpqmp

Pagina: 1