Avatar billede Slettet bruger
10. juli 2005 - 20:51 Der er 9 kommentarer og
1 løsning

Indsæt data fra DB i en tabel

Hej

Jeg har en DB som indholder link og filnavn på nogle billeder. Nu vil jeg så gerne trække disse informationer ud, og derved få vist billederne (ala et billede galleri). Ville gerne have billederne i en tabel, med 4 trækker og 4 koloner. Er der nogen som kan hjælpe mig med det?
Avatar billede Slettet bruger
10. juli 2005 - 21:11 #1
<?php
// connect til db først
print("<table>");
$res = mysql_query("SELECT link, filnavn FROM tabalNavn");
for ($n = 0; $row = mysql_fetch_assoc($res); $n++) {
  if ($n % 4 == 0) print("<tr>");
  printf("<td><a href=\"%s\"><img src=\"%s\"></a></td>", $row['link'], $row['filnavn']);
  if ($n % 4 == 0) print("</tr>");
}
for ($r = 4 - ($n % 4); $r > 0; $r--) print("<td></td>");
print("</table>");
?>
Avatar billede Slettet bruger
10. juli 2005 - 21:15 #2
Der kan jeg så ikke garantere at det kommer til at være i 4 rækker.. Det kommer jo an på hvor mange rækker du hari din db..
Men i hvert fald kommer der 4 kolonner..

Lav evt 4-tallet om til en variabel så du nemmere kan vedligeholde scritpet :-)

Husk også lige at lave tabel- og felt-navne om..
Avatar billede Slettet bruger
10. juli 2005 - 21:17 #3
Der var en fejl i scriptet.. Det skal være sådan her:

<?php
// connect til db først
print("<table>");
$res = mysql_query("SELECT link, filnavn FROM tabalNavn");
for ($n = 0; $row = mysql_fetch_assoc($res); $n++) {
  if ($n % 4 == 0) print("<tr>");
  printf("<td><a href=\"%s\"><img src=\"%s\"></a></td>", $row['link'], $row['filnavn']);
  if ($n % 4 == 3) print("</tr>");
}
for ($r = 4 - ($n % 4); $r > 0; $r--) print("<td></td>");
print("</table>");
?>

(Stadig utestet..)
Avatar billede Slettet bruger
10. juli 2005 - 21:18 #4
Er ikke nogen PHP haj, så hvad betyder %s ?
Avatar billede Slettet bruger
10. juli 2005 - 21:23 #5
Skal også lige siges, at tablen ikke har 4 koloner. Ser sådan ud:

X  X  X
X
X  X  X
X
X  X  X

Hvis du forstår
Avatar billede Slettet bruger
10. juli 2005 - 21:25 #6
%-tegnet betyder at der skal sættes en variabel ind.
s-et betyder at den variabel skal være en string.

Der er stadig fejl i scriptet. Beklager. Jeg vil tro at det kan gøre det:

<?php
$collums = 4;
// connect til db først
print("<table>");
$res = mysql_query("SELECT link, filnavn FROM tabalNavn");
for ($n = 0; $row = mysql_fetch_assoc($res); $n++) {
  if ($n % $collums == 0) print("<tr>");
  printf("<td><a href=\"%s\"><img src=\"%s\"></a></td>", $row['link'], $row['filnavn']);
  if ($n % $collums == ($collums - 1)) print("</tr>");
}
for ($r = ($collums - 1) - ($n % $collums); $r > 0; $r--) {
  print("<td></td>");
  if ($r == 1)
    print("</tr>");
}
print("</table>");
?>

(STADIG utestet ;) )
Avatar billede Slettet bruger
10. juli 2005 - 21:36 #7
Det sidste sætter billederne rigtigt. Har dog ændret i nogle af tingene. Det virkede bedre med print i stedet for printf ;-)

Smid du bare et svar, så får du lige nogle point
Avatar billede Slettet bruger
10. juli 2005 - 21:39 #8
Tja.. printf() eller print() er jo en smagssag i det her tilfælde.. Valgte bare printf() da jeg syntes det gør tingene mere overskuelige :)
Avatar billede Slettet bruger
10. juli 2005 - 21:42 #9
Ville det være svært at lave side skift, så der bliver vist 16 billeder pr side?
Avatar billede Slettet bruger
10. juli 2005 - 21:48 #10
Næ..

Jeg kan give dig nogle tips:

- kald siderne med fx gallery.php?page=3
- MySQL har noget der hedder LIMIT som definere hvor mange records man vil have returneret og hvorfra man vil starte. (Fx. SELECT filnavn, link FROM tableName LIMIT 0, 16 (tager de første 16 records))
- Din start-record vil være (sidenummer - 1) * antalPrSide da første record har nr 0

Leg lidt med det og se om du kan finde ud af det.. Ellers så spørger du bare :)
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