Avatar billede AffiliatePro Nybegynder
15. september 2011 - 18:26 Der er 14 kommentarer og
1 løsning

Fra array til en tabel

Jeg sidder og leger lidt med nogle arrays i PHP, men er faldet over et spørgsmål, som min søgen rundt på nettet ikke har givet svar på.

Jeg har lavet et array der ser således ud:

<?php
$artikler = array(
array("danske-bank.php","Danske Bank","Banker");
array("barcelona.php","Barcelona","Rejser");
array("jyske-bank.php","Jyske Bank","Banker");
array("nordea.php","Nordea","Banker");
array("bangkok.php","Bangkok","Rejser");
);
?>

Nu kunne jeg så godt tænke mig at få alle de data fra mit array over i en tabel som nedenstående, så når jeg tilføjer nyt data til mit array, kommer det automatisk med i tabellen.

<table>
<tr>
<td><a href="danske-bank.php">Danske Bank</a></td>
<td>Banker</td>   
</tr>
<tr>
<td><a href="barcelona.php">Barcelona</a></td>
<td>Rejser</td>   
</tr>
<tr>
<td><a href="jyske-bank.php">Jyske Bank</a></td>
<td>Banker</td>   
</tr>
<tr>
<td><a href="nordea.php">Nordea</a></td>
<td>Banker</td>   
</tr>
<tr>
<td><a href="bangkok.php">Bangkok</a></td>
<td>Rejser</td>   
</tr>
</table>

Er der nogen der kan give mig et svar på dette :)
Avatar billede majbom Novice
15. september 2011 - 18:59 #1
for($i=0, $size=sizeof($artikler)-1;$i++)
{
  echo "<tr><td><a href=\"" . $artikler[$i][1] . "\">" . $artikler[$i][1] . "</a></td><td>" . $artikler[$i][2] . "</td></tr>";
}


utestet, men burde gøre jobbet :)
Avatar billede majbom Novice
15. september 2011 - 19:00 #2
<a href=\"" . $artikler[$i][1] . "\">


skal være:

<a href=\"" . $artikler[$i][0] . "\">
Avatar billede AffiliatePro Nybegynder
15. september 2011 - 20:18 #3
Til syneladen har jeg en fejl i min array, jeg får nemlig følgende fejl: Parse error: syntax error, unexpected ';', expecting ')'
Avatar billede majbom Novice
15. september 2011 - 20:21 #4
ja, du skal have komma efter dine arrays inde i "hoved-arrayet":

<?php
$artikler = array(
array("danske-bank.php","Danske Bank","Banker"),
array("barcelona.php","Barcelona","Rejser"),
array("jyske-bank.php","Jyske Bank","Banker"),
array("nordea.php","Nordea","Banker"),
array("bangkok.php","Bangkok","Rejser")
);
?>
Avatar billede inteeeL Nybegynder
15. september 2011 - 21:10 #5
Bør din for-loop ikke rettes fra:

- for($i=0, $size=sizeof($artikler)-1;$i++)
Til:
- for($i = 0; $i < sizeof( $artikler); $i++) {

Så den fulde kode er:

$artikler = array(
array("danske-bank.php","Danske Bank","Banker"),
array("barcelona.php","Barcelona","Rejser"),
array("jyske-bank.php","Jyske Bank","Banker"),
array("nordea.php","Nordea","Banker"),
array("bangkok.php","Bangkok","Rejser")
);


for($i = 0; $i < sizeof( $artikler); $i++) {
  echo "<tr><td><a href=\"" . $artikler[$i][1] . "\">" . $artikler[$i][1] . "</a></td><td>" . $artikler[$i][2] . "</td></tr>";
}
Avatar billede inteeeL Nybegynder
15. september 2011 - 21:13 #6
Og kan du ikke fortælle mig, hvordan man laver de bokse til diverse koder - det er meget mere overskueligt. :-)
Avatar billede majbom Novice
15. september 2011 - 21:21 #7
Bør din for-loop ikke rettes fra:


nej, for så kører den sizeof() for hver iteration og det er spild af ressourcer - i mit eksempel kører den inden løkken går i gang. det er det samme som at skrive:

$size=sizeof($artikler)-1;
for($i=0; $i<=$size;$i++)


men jeg kan da se nu, at jeg havde glemt $i<=$size, så det skal være:

for($i=0, $size=sizeof($artikler)-1; $i<=$size;$i++)



Og kan du ikke fortælle mig, hvordan man laver de bokse til diverse koder - det er meget mere overskueligt. :-)


http://www.eksperten.dk/guide/1325

jeg bruger (div)(pre)kode kode kode(/pre)(/div), når jeg laver kodeeksempler :)
Avatar billede AffiliatePro Nybegynder
15. september 2011 - 21:50 #8
splazz: Tusind tak skal du have, kan du ikke lige ligge et svar, så du kan få nogle point.

inteeeL: Mange tak for din input også, det er værdsat :)

Lige et tillægsspørgsmål, hvis nu mit array havde været på f.eks. 30 linjer, og jeg gerne ville udskrive de 10 nederste, og scriptet bare skulle springe resten over. Findes der en smart måde at gøre det på?
Avatar billede majbom Novice
15. september 2011 - 22:02 #9
hvis det skal være dynamisk kommer det lidt an på hvordan du definerer hvor mange der skal udskrives og om det altid er den nederste del :)

men det kan nok laves - kom med lidt info...
Avatar billede AffiliatePro Nybegynder
15. september 2011 - 22:15 #10
Hele idéen er lidt at hver gang jeg tilføjer en ny artikel, så tilføjer jeg en linje til mit array, dette kunne f.eks. være følgende:

array("bilka.php","Bilka","Supermarked")

Jeg kunne så godt tænke mig at der på min forside skulle vise de 10 nyeste artikler, hvilket vil sige de 10 seneste tilføjelser til mit array, som altid vil være de nederste :)
Avatar billede majbom Novice
15. september 2011 - 22:18 #11
prøv med:

for($i=sizeof($artikler)-11, $size=sizeof($artikler)-1; $i<=$size;$i++)


og tak for point :)
Avatar billede AffiliatePro Nybegynder
15. september 2011 - 22:21 #12
Det virker lige som det skal, mange tak :)
Avatar billede majbom Novice
15. september 2011 - 22:25 #13
selv tak :)
Avatar billede inteeeL Nybegynder
16. september 2011 - 09:28 #14
Så giver det mening. :-) Synes bare der manglede noget, og det fik du rettet.

Tak for svar ang. den blå boks. Jeg har ledt længe efterhånden, jeg har både søgt i søgefeltet og ledt under FAQ, dog uden held. Den guide er super beskrivende, den burde placeres under FAQ.
Avatar billede majbom Novice
16. september 2011 - 09:41 #15
du skal ikke regne med at der sker ret meget på den front (FAQ / Søgefelt / knapper ved textarea til formatering) - der er ret dødt hvad alt dette angår.
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