[PHP en Smarty] Tabel dynamisch opbouwen vanuit MySQL db

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 20-09 12:29

Snow_King

Konijn is stoer!

Topicstarter
Hej,

Ik ben aan de gang met Smarty maar loop tegen een probleem.

Wat wil ik?
Mijn gegevens uit de database selecteren en voor elke rij die er uit de database komt een rij in een HTML tabel maken.

In Smarty kan je foreach doen, maar geen while.

Wat heb ik bedacht?
Ik selecteer de spullen uit de database en maak daar 1 grote array van.
Vervolgens ga ik met foreach in Smarty hier een tabel van maken.
Maar dat is een beetje een vieze optie die ik niet netjes vind.

Toen kwam iemand anders met het idee een kleine template te maken en het als volgt te doen.
code:
1
2
3
4
5
6
7
8
<?php
while($row = mysql_fetch_array($result))){
     $tpl->assign("KOLOM1",$row["kolom1"]);
     $tpl->assign("KOLOM2",$row["kolom2"]);
     $tpl->assign("KOLOM3",$row["kolom3"]);
     $tpl->display("tablerow.tpl");
}
?>


Maarja, dat past dat ook wel in de categorie "vies programmeren", imho.

Ik heb de Smarty docs, Google en GoT er al op nageslagen, maar ik kan nergens concreet vinden hoe mensen dit hebben opgelost.

Hoe kan ik dit het beste oplossen? Wie heeft hier al ervaring mee?

[ Voor 15% gewijzigd door Snow_King op 08-10-2004 11:27 ]


Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
while ( $row[] = mysql_fetch_assoc($result) );

$row is nu een array die je wel in een foreach kan gooien

Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 20-09 12:29

Snow_King

Konijn is stoer!

Topicstarter
Mja, dat had ik zelf ook kunnen maken.

Smarty kan dus weer niet overweg met:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<table>
{foreach key=key item=item from=$DNSROW}
    <tr>
        <td>
            {$item[name]}
        </td>
        <td>
            {$item[content]}
        </td>
    </tr>
{/foreach}
</table>


Zo kan ik alsnog de data niet uitlezen en de tabel dynamisch opbouwen.

Acties:
  • 0 Henk 'm!

Verwijderd

Je kan er toch 1 array van maken?

PHP:
1
2
3
4
5
6
7
8
9
10
$array=array();
while ($rij = mysql_fetch_array($resultaal,mysql_assoc))
{
  $array[sizeof($array)]= $rij;
}

//of als 4Real schreef:
while ( $array[] = mysql_fetch_assoc($result) );

$smarty->assign('array',$array);


in je template
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
{section name=tabel loop=$array}
<table>
 <tr>
  <td>{$array[tabel].kolom1}</td>
 </tr>
 <tr>
  <td>{$array[tabel].kolom2}</td>
 </tr>
 <tr>
  <td>{$array[tabel].kolom3}</td>
 </tr>
</table>
{/section}


of zoiets dergelijks.. :)

edit:
Oh, het moest 1 tabel.. daar heb je al een smarty functie voor:
http://smarty.php.net/man...e.function.html.table.php

[ Voor 70% gewijzigd door Verwijderd op 08-10-2004 13:46 ]


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Snow_King schreef op 08 oktober 2004 @ 12:56:
Mja, dat had ik zelf ook kunnen maken.

Smarty kan dus weer niet overweg met:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<table>
{foreach key=key item=item from=$DNSROW}
    <tr>
        <td>
            {$item[name]}
        </td>
        <td>
            {$item[content]}
        </td>
    </tr>
{/foreach}
</table>


Zo kan ik alsnog de data niet uitlezen en de tabel dynamisch opbouwen.
PHP:
1
2
3
$var[] = array("name"=>"123","content"=>"content1")
$var[] = array("name"=>"456","content"=>"content2")
$tpl->assign("DNSROW",$var);


code:
1
2
3
4
5
6
7
8
9
10
11
12
<table>
{foreach  item=item from=$DNSROW}
    <tr>
        <td>
            {$item.name}
        </td>
        <td>
            {$item.content}
        </td>
    </tr>
{/foreach}
</table>


Dit zou gewoon moeten werken...

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 20-09 12:29

Snow_King

Konijn is stoer!

Topicstarter
held _/-\o_

[ Voor 77% gewijzigd door Snow_King op 08-10-2004 13:50 ]

Pagina: 1