Avatar billede dklap3 Nybegynder
24. marts 2005 - 15:54 Der er 10 kommentarer og
1 løsning

Galleri i sammenhæng med data

Jeg er ved at lave endatabase med en masse bygninger. Man skal via et kort kunne klikke sig ind på hver bygning, hvor man så vil se både data og små klikbare billed(er) af bygningen. Selve opsætningen (uden billederne) kan ses her: http://www.mikaellykmadsen.dk/herning/test.htm (klik på en bygning på kortet)

Det skulle gerne ende med at virke på denne måde: http://www.mikaellykmadsen.dk/herning/temp/screen.jpg

Mit problem er at jeg ikke ved hvordan jeg bedst får sat de rigtige billeder ind på de rigtige sider (og hvordan det skal laves). Meningen er at man på hver bygnings side ser små versioner af alle de billederne der nu hører til bygningen, og at man skal kunne klikke på den for at se store versioner.

Jeg forestiller mig noget med at man giver hvert billede et ID i databasen, og sammentidig forbinder det til bygningens id. Men hvordan det gøres praktisk så billederne bliver vist aner jeg ikke.

Håber der er nogle med gode forslag der jeg er lidt lost her.
Avatar billede dklap3 Nybegynder
25. marts 2005 - 01:36 #1
Slet ingen der har nogle ideer?

Hvad nu hvis man droppede databasen og i stedet bare uploadede billederne til en mappe via ftp. Men kunne måske kalde billederne der hører til bygningen id 45 for 45_1.jpg, 45_2.jpg, 45_3.jpg osv. og på den måde hive dem direkte ud af mappen (for at blive vist) med php. Det er jo ihvertfald ikke noget problem at hive bygnings id'et ud og bruge det til billed URL'en, men ved dog ikke lige hvordan man kan tjekke hvor mange billeder der hører til hver id (altså _1, _2 osv.). Nogen ideér til dette i stedet?
Avatar billede coderdk Praktikant
25. marts 2005 - 08:27 #2
Hvis du har dine billeder i en mappe med navnet "billedmappe" kan du få en liste over alle billeder for den bygning med:

$billeder = glob( 'billedmappe/' . $bygningsid . '_*.jpg' );

$billeder vil så være et array med filnavne, f.eks.:

billedmappe/45_1.jpg
Avatar billede dklap3 Nybegynder
25. marts 2005 - 11:02 #3
Takker. Har stadig en del problemer. Jeg kan nu i det mindst få et billede frem (eks: http://www.mikaellykmadsen.dk/herning/bygning.php?id=4 )men ikke 2 selvom der ligger både 4_1.jpg og 4_2.jpg i mappen "billeder".

Her er min kode:

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<?PHP include ("dbconnect.php");?>

<?
$sql = sprintf( "SELECT `id` , `navn`  , `adresse` , `aar` , `etager`
FROM `herning_bygninger` WHERE `id` = '%s'", mysql_escape_string( $_GET['id'] ) );
$test = mysql_query($sql) or die (mysql_error());
?>


<?
$i=0;
while ($row = mysql_fetch_array($test)) {
$id = $row["id"];
$billeder = glob( 'billeder/' . $id . '_*.jpg' );
{ ?>

<body>
<table width="698" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="432" bgcolor="#FF0000"><table width="400" border="1" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC">
        <tr bgcolor="#FFFFFF">
          <td><strong>
            <?=$row["navn"]?>
            </strong></td>
          <td>&nbsp;</td>
        </tr>
        <tr bgcolor="#0099CC">
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td>Adresse:</td>
          <td>
            <?=$row["adresse"]?>
          </td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td>Bygget &aring;r:</td>
          <td>
            <?=$row["aar"]?>
          </td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td>Antal Etager:</td>
          <td>
            <?=$row["etager"]?>
          </td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td>Bygnings ID:</td>
          <td>
            <?=$row["id"]?>
          </td>
        </tr>
        <tr bgcolor="#0099CC">
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
      </table></td>
    <td width="29" bgcolor="#0000FF">midt</td>
    <td width="237" bgcolor="#FF0000"><table width="200" border="0" cellspacing="0" cellpadding="0">
        <tr>

          <td bgcolor="#CCCCCC"><div align="center"> <? echo "<img src=\"$billeder[$i]\">";  ?></div></td>
           
        </tr>
      </table></td>
  </tr>
</table>
<p>
  <? }} ?>
</p>
</body>
</html>

Planen var også at få små versioner vist på bygnings siderne, som så skulle kunne forstørres når man klikker på dem. Men måske man lige skulle få styr på at vise de rigtige billeder først.
Avatar billede coderdk Praktikant
25. marts 2005 - 11:12 #4
Jeg har lavet lidt om:

<html>
    <head>
        <title>Untitled Document</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
<?php

    include("dbconnect.php");
   
    $sql = sprintf( "SELECT `id` , `navn`  , `adresse` , `aar` , `etager`
        FROM `herning_bygninger` WHERE `id` = '%s'", mysql_escape_string( $_GET['id'] ) );
        $test = mysql_query($sql) or die (mysql_error());

    if ($row = mysql_fetch_array($test))
    {
        $id = $row["id"];
        $billeder = glob( 'billeder/' . $id . '_*.jpg' );

?>
<table width="698" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="432" bgcolor="#FF0000"><table width="400" border="1" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC">
        <tr bgcolor="#FFFFFF">
          <td><strong>
            <?=$row["navn"]?>
            </strong></td>
          <td>&nbsp;</td>
        </tr>
        <tr bgcolor="#0099CC">
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td>Adresse:</td>
          <td>
            <?=$row["adresse"]?>
          </td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td>Bygget &aring;r:</td>
          <td>
            <?=$row["aar"]?>
          </td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td>Antal Etager:</td>
          <td>
            <?=$row["etager"]?>
          </td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td>Bygnings ID:</td>
          <td>
            <?=$row["id"]?>
          </td>
        </tr>
        <tr bgcolor="#0099CC">
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
      </table></td>
    <td width="29" bgcolor="#0000FF">midt</td>
    <td width="237" bgcolor="#FF0000"><table width="200" border="0" cellspacing="0" cellpadding="0">
        <tr>

          <td bgcolor="#CCCCCC"><div align="center">
<?

        foreach ( $billeder as $billede )
        {
            echo "<img src=\"$billede\">"; 
        }

?></div></td>
         
        </tr>
      </table></td>
  </tr>
</table>
<?

    }
    else
    {
        echo "Fandt ingen bygning";
    }

?>
</body>
</html>

Måske du skulle lave et underbibliotek til de små billeder "billeder/thumbs/" måske og have de små der, den løsning kan du nemt smelte sammen med denne :)
Avatar billede coderdk Praktikant
25. marts 2005 - 11:13 #5
Jeg så lige du bruger mysql_fetch_array() men hvis du altid tilgår dine felter med navn, i.e. $row['feltnavn'] så brug i stedet mysql_fetch_assoc() da den anden har dobbelt så meget data som du har brug for ;)
Avatar billede dklap3 Nybegynder
25. marts 2005 - 11:44 #6
Mange tka for hjælpen, nu begynder det at ligne noget: http://www.mikaellykmadsen.dk/herning/bygning.php?id=4

Jeg har byttet de store billeder ud med de små (fra billeder/thumbs/ mappen) og lavet så de står over hinanden i steder for ved siden af hinanden. Har derferter forsøgt at linke itl de store, men jeg modtager en fejl når jeg kilkker på linket.

Den nye kode:

<html>
    <head>
        <title>Untitled Document</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
<?php

    include("dbconnect.php");
   
    $sql = sprintf( "SELECT `id` , `navn`  , `adresse` , `aar` , `etager`
        FROM `herning_bygninger` WHERE `id` = '%s'", mysql_escape_string( $_GET['id'] ) );
        $test = mysql_query($sql) or die (mysql_error());

    if ($row = mysql_fetch_assoc($test))
    {
        $id = $row["id"];
        $thumbs = glob( 'billeder/thumbs/' . $id . '_*.jpg' );
        $billeder = glob( 'billeder/' . $id . '_*.jpg' );

?>
<table width="698" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr bgcolor="#FFFFFF">
    <td width="432" valign="top">
      <table width="400" border="1" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC">
        <tr bgcolor="#FFFFFF">
          <td><strong>
            <?=$row["navn"]?>
            </strong></td>
          <td>&nbsp;</td>
        </tr>
        <tr bgcolor="#0099CC">
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td>Adresse:</td>
          <td>
            <?=$row["adresse"]?>
          </td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td>Bygget &aring;r:</td>
          <td>
            <?=$row["aar"]?>
          </td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td>Antal Etager:</td>
          <td>
            <?=$row["etager"]?>
          </td>
        </tr>
        <tr bgcolor="#FFFFFF">
          <td>Bygnings ID:</td>
          <td>
            <?=$row["id"]?>
          </td>
        </tr>
        <tr bgcolor="#0099CC">
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
      </table></td>
    <td width="29">&nbsp;</td>
    <td width="237">
      <table width="200" border="0" cellspacing="0" cellpadding="0">
        <tr>

          <td bgcolor="#FFFFFF">
<div align="center">
              <?

        foreach ( $thumbs as $thumb )
        {
            echo "<a href=\"$billeder\"><img src=\"$thumb\"></a>" ; echo "<P>";
        }

?>
            </div></td>
         
        </tr>
      </table></td>
  </tr>
</table>
<?

    }
    else
    {
        echo "Fandt ingen bygning";
    }

?>
</body>
</html>

Kan det være noget med den "foreach" der gør at de store ikke kan vises?
Avatar billede coderdk Praktikant
25. marts 2005 - 11:47 #7
Hmm du kan fjerne: $billeder = glob... linjen og snyde lidt nede i din løkke:

        foreach ( $thumbs as $thumb )
        {
            $billede = str_replace( 'thumbs/', '', $thumb );
            echo "<a href=\"$billede\"><img src=\"$thumb\"></a>" ; echo "<P>";
        }
Avatar billede dklap3 Nybegynder
25. marts 2005 - 11:56 #8
Problemt løst, pont til dig. Endnu engang tak for hjælpen :-)

En lille ekstra spg hvis du stadig skulle have lyst til at hjælpe (det var ikke oprindelig en del af mit spg). Er det muligt at centrere et billede når man linker direkte til jpg filen? Tror aldrig jeg har set eksempler på dette.
Avatar billede coderdk Praktikant
25. marts 2005 - 19:45 #9
Det var så lidt :)
Og nej, du er nødt til at linke til en PHP-side så...
Avatar billede dklap3 Nybegynder
25. marts 2005 - 19:49 #10
Ja det var også hvad jeg regnede med. Dette går indtil videre :-)

Har rodet lidt mere med den i dag (er ikke officielt online endnu, der mangler stadig en del): http://www.mikaellykmadsen.dk/herning/
Avatar billede coderdk Praktikant
25. marts 2005 - 19:51 #11
Det ser jo fornuftigt ud :)
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