Avatar billede hmortensen Nybegynder
09. maj 2003 - 22:55 Der er 16 kommentarer og
1 løsning

Udskrivning til tabel fra mySQL

Jeg har stien til nogle billeder i en db, og skal nu ha udskrevet dem i en tabel.

Det skal være sådan så der er 5 kolloner og 5 rækker på hver side, og link til næste side.

Hvordan gør jeg det ?
Avatar billede tipsen Nybegynder
09. maj 2003 - 23:33 #1
hvor meget af det har du lavet i forvejen?
Avatar billede hmortensen Nybegynder
10. maj 2003 - 02:21 #2
Jeg har faktisk det hele.

Jeg ved bare ik hvordan jeg får delt billederne ud i kolloner og rækker, og lave link hvis der er mere end 25 i det her ex...

Det er bare selve teknikken/måden at lave det på jeg mangler
Avatar billede nicklasb Nybegynder
11. maj 2003 - 18:15 #3
det med udtræk af de 25 poster, og sideskift mv. kan evt gøres således :
http://home.hammering.dk/nb/showsource.php
( se evt funktionalitet her: http://home.hammering.dk/nb/ )

ved den er lidt lang, men så er der til gængædlde sikring for at man ikke kan hente med nagativt fortegn, og at man også kan gå tilbage, hvis der er mindre end sideantallet tilbage i databasen.. :)

/Nicklas B.
Avatar billede nicklasb Nybegynder
11. maj 2003 - 18:18 #4
og det med rækker og kolonner er vi et par stykker der har siddet og rodet lidt med her : http://www.eksperten.dk/spm/350964
en fuldt optimeret udgave er evt. tipsens. Dog er der lige et problem med en for-løkke.. den skal bare lige rettes til.. (hvis du ikke selv kan, må du jo lige sige til.. ;)
Avatar billede nicklasb Nybegynder
11. maj 2003 - 18:20 #5
men en udemærket udgave kunne også være den jeg postede:

<table>
<?php
$i = 0;
$kolonner = 3;
while($row = mysql_fetch_array($sql)){

    if ($i == 0) {
        echo " <tr>
";
    }

    echo "  <td>$row[Image]</td>
";
    $i = $i+1;

    if ($i == $kolonner) {
        echo " </tr>
";
        $i = 0;
    }
}

if ($i < $kolonner) {
    for ($i = $i; $i < $kolonner; $i++) {
        echo "  <td>&shy;</td>
";
    }
echo " </tr>
";
}
?>
</table>

der kan du evt. udskrifte alle echoerne med variabler, og så udskrive disse i slutningen, som tipsen beskriver .. så tror jeg den er fuldt ud på højde med den han postede.. ;)
Avatar billede hmortensen Nybegynder
11. maj 2003 - 18:21 #6
Takker...

Har ik tid til at kigge på det lige nu, men tak for at der kom noget...

Var tæt på at lukke den
Avatar billede nicklasb Nybegynder
11. maj 2003 - 18:23 #7
hov.. kom lige til at gå de gamle igennem.. hehe.. så ikke lige at den ikke er blevet kommeteret et stykke tid.. hehe..

hvis du har problemer med den, siger du bare til, så kan jeg godt rette den.. men det skulle være lige til, at rette den til, så den passer.. (bare sætte whilen ind i det script jeg har kommeteret i linket (første kommetar))
Avatar billede hmortensen Nybegynder
11. maj 2003 - 19:58 #8
Ja, jeg har probs :D

Har fået sat det sammen til sådan en stump her:

<?php
$kolonner  = 5;
$tablewidth = 800;
$cellwidth  = (int) ($tablewidth / $kolonner);
include("connect.php");
$query = mysql_query("SELECT image FROM gallery") or die(mysql_error());
$antalimgs = mysql_num_rows($query);
if(!$antalimgs) {
  echo 'Desværre ingen billeder!';
}
else {
  $tmp = "<table width=$tablewidth>\n\t<tr>\n";
  for($i=0; $i < $antalimgs; $i++){
    if(!($i%$kolonner) && $i>0 && $i<$antalimgs-1) {
      $tmp .= "\t</tr>\n\t<tr>\n";
    }
    list($image) = mysql_fetch_row($query);
    $tmp .= "\t\t<td width=\"$cellwidth\"><img src='$image'></td>\n";
  }
  for($i=0;$i<$kolonner-($antalimgs%$kolonner);$i++) {
    $tmp .= "\t\t<td width=\"$cellwidth\">&nbsp;</td>\n";
  }
  $tmp .= "\t</tr>\n</table>";
  echo $tmp;
}
?>

Men problemet er, at der er 11 poster i som test, og det burde lave 3 række. 2 hele og den sidste med kun en celle.

Men den laver kun 2. Den første med 5 og den anden med 6.

Kan du finde 'fejlen' ?
Avatar billede tipsen Nybegynder
11. maj 2003 - 20:30 #9
Det er jo skidt, at man har skrammelkode liggende og flyde, så det må man jo rette op på:

Har testet den igennem og så vidt jeg kan overskue, skulle den fungere i alle specialtilfælde nu!

<?php
$kolonner  = 5;
$tablewidth = 800;
$cellwidth  = (int) ($tablewidth / $kolonner);
include("connect.php");
$query = mysql_query("SELECT image FROM gallery") or die(mysql_error());
$antalimgs = mysql_num_rows($query);
if(!$antalimgs) {
  echo 'Desværre ingen billeder!';
}
else {
  $tmp = "<table width=$tablewidth>\n\t<tr>\n";
  for($i=0; $i < $antalimgs; $i++){
    if(!($i%$kolonner) && $i>0 && $i<$antalimgs) {
      $tmp .= "\t</tr>\n\t<tr>\n";
    }
    list($image) = mysql_fetch_row($query);
    $tmp .= "\t\t<td width=\"$cellwidth\"><img src='$image'></td>\n";
  }
  for($i=0;$antalimgs%$kolonner && $i<$kolonner-($antalimgs%$kolonner);$i++) {
    $tmp .= "\t\t<td width=\"$cellwidth\">&nbsp;</td>\n";
  }
  $tmp .= "\t</tr>\n</table>";
  echo $tmp;
}
?>
Avatar billede hmortensen Nybegynder
11. maj 2003 - 20:46 #10
Så var den der...

Tak skal du ha...

Poster du lige et svar ?

Det var jo orginalt din kode, mener jeg
Avatar billede nicklasb Nybegynder
11. maj 2003 - 20:46 #11
hehe.. så blev det aligevel til noget med dit spørgsmål.. kan se du har fået svar, før jeg overhovedet har registreret at du har spurgt.. ;)

SÅ skulle det være let nok lige at sætte en LIMIT på, ud fra mit link postet tidligere, og et frem og tilbage link i bunden.. ;)
Avatar billede hmortensen Nybegynder
11. maj 2003 - 20:47 #12
Yap yap...

Det virker som det skal nu

Fatter bare hat af løkker (burde nok sætte mig ind i det)
Avatar billede nicklasb Nybegynder
11. maj 2003 - 20:51 #13
har du prøvet med den jeg postede længere oppe.. den er nok lidt lettere at overskue for en nybegynder (sorry, hvis jeg tager fejl)..
der er der ikke så mange uoverskuelige udregninger og sammenligninger.. (måske lidt langsommere, men tror let den kan blive meget hurtigere..) Men tror helt sikkert det vil være en forsøg værd hvis du vil forstå koden også..
Avatar billede tipsen Nybegynder
11. maj 2003 - 20:55 #14
Enig med nicklas - min udgave er nok ikke "begyndervenlig" - jeg kunne heller ikke helt overskue den selv til sidst og blev nødt til at prøve mig lidt frem!
Avatar billede nicklasb Nybegynder
11. maj 2003 - 21:09 #15
hehe.. så slem er den da vel heller ikke.. ej.. det er nogle hæftige for-løkker der er lavet.. men den er svær at få sat sammen med en anden kode, hvis man ikke er vandt til at scripte php, og er nok rigtig svær at fejlfinde for en nybegynder, hvis han kommer til at klokke lidt i den..
Avatar billede tipsen Nybegynder
11. maj 2003 - 21:13 #16
nicklas: Jeg har på fornemmelsen af at jeg har en unødvendig betingelse et sted, men kan ikke tænke mig frem til den... :-/
Avatar billede nicklasb Nybegynder
11. maj 2003 - 21:22 #17
jeg sværgede lidt til om det var $i<$antalimgs du hentydede til.. men den skal jo selvfølgelig være der, så den forhindre at der ikke kommer en </tr><tr> hvis rækken ikke er hel (fyldt ud)
men hvad gør $antalimgs%$kolonner (i den sidste for-løkke) ?? (Lidt lettere end at jeg sætter mig ind i det, og tester det..)
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