Avatar billede qub- Novice
30. oktober 2004 - 19:47 Der er 39 kommentarer og
2 løsninger

4 pr. linie - galleri

hei.. Har et "galleri", der udskriver alle billederne jeg har i en mappe..

Men hvordan gør jeg så den kun viser 4 billeder pr. "linie"..

Min kode ser således ud:



<table width=100% border=0 cellspacing=10 cellpadding=10>
  <tr>
<?
$destination    = "../images/pictures/profiles/";

$query = mysql_query("SELECT * FROM improved_pictures ORDER BY id DESC");
  while ($row = mysql_fetch_array($query)) {

    $picture = $row[picture];
    $name = $row[name];
    $date = date("d.m.Y", $row[date]);
    $time = date("H:i:s", $row[date]);
   
?>
<td><center><img src="<? echo $destination ?><? echo $picture ?>" border=0><font size=1 color=white face=verdana><br><? echo $name ?></td>
<?

}

?>
  </tr>
</table><br>
Avatar billede pallotto Nybegynder
30. oktober 2004 - 19:51 #1
$query = mysql_query("SELECT * FROM improved_pictures ORDER BY id DESC LIMIT 0 , 4");

du ska bare have LIMIT ind..
Avatar billede qub- Novice
30. oktober 2004 - 19:52 #2
nej det skal jeg ikke...
Avatar billede qub- Novice
30. oktober 2004 - 19:53 #3
Hvis der er 4 billeder på en række, så skal den skifte linie, og så vise 4 nye.. :)
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 20:00 #4
Måske sådan her:

<?php
$kolonner  = 4;
$tablewidth = 100;
$cellwidth  = (int) ($tablewidth / $kolonner);
$destination    = "../images/pictures/profiles/";
$query = mysql_query("SELECT picture, name, DATE_FORMAT(`date`, 'd.m.Y H:i:s') AS dato FROM improved_pictures ORDER BY id DESC");
$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($picture, $name, $dato) = mysql_fetch_row($query);
        $tmp .= "\t\t<td width=\"".$cellwidth."%\"><img src=\".$destination.$picture."\"><br />".$name."<br />".$dato."</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 jakobclausen Nybegynder
30. oktober 2004 - 20:01 #5
Prøv med nedenstående - skal dog sige at det er utestet!

- - -
<table width=100% border=0 cellspacing=10 cellpadding=10>
  <tr>
<?
$destination    = "../images/pictures/profiles/";
$query = mysql_query("SELECT * FROM improved_pictures ORDER BY id DESC");
$i = 1;
while ($row = mysql_fetch_array($query))
{
    $picture = $row[picture];
    $name = $row[name];
    $date = date("d.m.Y", $row[date]);
    $time = date("H:i:s", $row[date]);
?>
    <td>
        <center><img src="<? echo $destination ?><? echo $picture ?>" border=0><font size=1 color=white face=verdana><br><? echo $name ?>
    </td>
<?
    $i++;
    if($i%4)
    {
        echo "</tr><tr>";
    }
}
?>
</tr>
</table><br>
- - -
Avatar billede jakobclausen Nybegynder
30. oktober 2004 - 20:04 #6
Rettelse - du skal lige flytte $i++; ned under if-sætningen:

- - -
if($i%4)
{
    echo "</tr><tr>";
}
$i++;
- - -
Avatar billede qub- Novice
30. oktober 2004 - 20:08 #7
den funker desværre stadig ikke jacob.. Den viser 2 rækker ned af :/


Og hmortensen: din funker slet ikke, skriver der er en fejl i: $tmp .= "\t\t<td width=\"".$cellwidth."%\"><img src=\".$destination.$picture."\"><br />".$name."<br />".$dato."</td>\n";
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 20:09 #8
Manglede bare en gnuf:

tmp .= "\t\t<td width=\"".$cellwidth."%\"><img src=\"".$destination.$picture."\"><br />".$name."<br />".$dato."</td>\n";
Avatar billede pallotto Nybegynder
30. oktober 2004 - 20:12 #9
gub- okay.. det var det du mente :)..
Avatar billede jakobclausen Nybegynder
30. oktober 2004 - 20:16 #10
Hmm undre mig lidt over hvorfor den kun laver 2 pr. række - synes da det burde være 4...
Avatar billede qub- Novice
30. oktober 2004 - 20:20 #11
Det står stadig ikke helt som det skal :/

Hvis vi ser lidt fremad, så skal html'en gerne se nogenlunde således ud, hvis vi tar en kildekode, efter at "scriptet" er kørt:

<tr>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
</tr>
<tr>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
</tr>


Hvis det hjælper lidt på det :)
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 20:20 #12
Du kan vel selv rette html'en til...
Avatar billede jakobclausen Nybegynder
30. oktober 2004 - 20:23 #13
Prøv lige at rette min kode til:

- - -
if($i%5)
{
    echo "</tr><tr>";
}
$i++;
- - -
Hvor mange giver dette pr. række ?
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 20:27 #14
jakob, prøv at udregne modus af 1 - 10.

med modus 4, vil den skifte:
1
2
3
4 - 5
6
7
8 - 9
10
Avatar billede qub- Novice
30. oktober 2004 - 20:31 #15
jakob >> Den viser billederne nedad, i 1 række :P
Avatar billede qub- Novice
30. oktober 2004 - 20:32 #16
og hvis den så hedder if($i%4), så viser den 4 nedad, og så skifter den henad og viser nedad igen.. Det skal bare være omvendt, så er den der :D
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 20:32 #17
Har du prøvet min ?
Den virker, hvis du lige retter evt trykfejl.
Avatar billede qub- Novice
30. oktober 2004 - 20:33 #18
Ja jeg har prøvet, og det ser desværre rimelig fucked op ud.. :/
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 20:34 #19
Virker fint for mig.

Kan desværre ikke teste lige nu, da mit webhotel er nede :(
Avatar billede jakobclausen Nybegynder
30. oktober 2004 - 20:36 #20
gub- >> if($i%4 == 0)

Så virker det!
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 20:40 #21
if ($i%4) returnere vel også false, når resten er 0, og true resten af gangene.
Så det udsput jeg kastede før, passede jo fint
Avatar billede jakobclausen Nybegynder
30. oktober 2004 - 20:44 #22
hmortensen >> troede jeg også, men der må alligevel være en lille forskel.

Se mit lille simple eksempel: http://www.bokaj.dk/eksperten/556184.php
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 20:46 #23
ja, det er det jeg mener:
1 - gir rest - true - lav </tr><tr>
2 - gir rest - true - lav </tr><tr>
3 - gir rest - true - lav </tr><tr>
4 - gir ingen rest - false
5 - gir rest - true - lav </tr><tr>
6 - gir rest - true - lav </tr><tr>
7 - gir rest - true - lav </tr><tr>
8 - gir ingen rest - false
9 - gir rest - true - lav </tr><tr>
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 20:48 #24
Din vil også lave ged i tabellen, når antallet af billeder gir en rest.

fx med 6 billeder:
<tr>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
</tr>
<tr>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
<td><center><img src="linktilbillede.jpg" border="0"></center></td>
</tr>

skulle gerne lave:
<td>&nbsp;</td>
<td>&nbsp;</td>

til sidst.
Avatar billede jakobclausen Nybegynder
30. oktober 2004 - 21:23 #25
Løsningen er langt fra lige så smart som hmortsens, men jeg synes den er lidt mere overskuelig: http://www.bokaj.dk/eksperten/556184.php
Avatar billede hmortensen Nybegynder
30. oktober 2004 - 22:12 #26
$i=$i-1; er vel det samme som $i--;
Avatar billede jakobclausen Nybegynder
30. oktober 2004 - 22:15 #27
hmortensen >> hehe Uha du er skarp - men ja :-)
Avatar billede qub- Novice
30. oktober 2004 - 23:23 #28
erhm yes, nu er jeg helt forvirret :/

Hvad blev det endelig resultat så :D
Avatar billede jakobclausen Nybegynder
30. oktober 2004 - 23:51 #29
gub- >> At det burde virke optimalt med nedenstående løsning, eller hmortensens svar:

- - -
<table width=100% border=0 cellspacing=10 cellpadding=10>
  <tr>
<?
$destination    = "../images/pictures/profiles/";
$query = mysql_query("SELECT * FROM improved_pictures ORDER BY id DESC");
$i = 1;
while ($row = mysql_fetch_array($query))
{
    $picture = $row[picture];
    $name = $row[name];
    $date = date("d.m.Y", $row[date]);
    $time = date("H:i:s", $row[date]);
?>
    <td>
        <center><img src="<? echo $destination ?><? echo $picture ?>" border=0><font size=1 color=white face=verdana><br><? echo $name ?>
    </td>
<?
    if($i%4 == 0)
    {
        echo "</tr><tr>";
    }
    $i++;
}
$i--;
while($i%4 != 0)
{
    echo "<td>&nbsp;</td>";
    $i++;
}
?>
</tr>
</table><br>

- - -
Avatar billede qub- Novice
31. oktober 2004 - 12:27 #30
jeg siger mange tak, hvem vil ha pointsne? :)
Avatar billede jakobclausen Nybegynder
31. oktober 2004 - 12:35 #31
Har du testet - virker det ?

Tjah er i hvertfald et svar fra mig!
Avatar billede hmortensen Nybegynder
31. oktober 2004 - 13:21 #32
Hvis du har brugt jakob's løsning, så gi dem til ham.

jakob, ang $i--, var bare lige i tvivl, var ikke for at kritisere :)
Avatar billede jakobclausen Nybegynder
31. oktober 2004 - 13:59 #33
hmortensen >> Det er helt i orden - men jo det virker på samme måde begge dele.
Avatar billede jakobclausen Nybegynder
31. oktober 2004 - 14:00 #34
hmortensen >> Kunne du ikke også lægge et svar, så der er mulighed for at dele. Du er jo også kommet med en god løsning - lidt smartere end min.
Avatar billede hmortensen Nybegynder
31. oktober 2004 - 14:49 #35
Jo, den er bare ikke så begynder venlig, men skulle virke i alle tilfælde
Avatar billede konder Nybegynder
31. oktober 2004 - 17:29 #36
kan man få hvert billed til at indeholde et link til f.eks. et større eksemplar?
Avatar billede hmortensen Nybegynder
31. oktober 2004 - 17:40 #37
Ja, bare sæt <a href="<? echo $destination.$picture; ?>" target="_blank">im src...></a>
Avatar billede konder Nybegynder
31. oktober 2004 - 18:00 #38
hvis nu jeg i db har indsat navnet på det store eksemplar kan jeg så ikke kalde det i "samme ombæring"
Avatar billede hmortensen Nybegynder
31. oktober 2004 - 18:14 #39
Så må det blive:
<a href="<? echo $destination.$row['navnpåfelt']; ?>" target="_blank">im src...></a>
Avatar billede konder Nybegynder
31. oktober 2004 - 18:51 #40
hmortensen>>
mange tak for hjælpen herfra
Avatar billede jakobclausen Nybegynder
01. november 2004 - 09:19 #41
Takker for point!
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