Avatar billede camban Nybegynder
05. august 2005 - 21:25 Der er 26 kommentarer og
1 løsning

Thumbnails + stort billede?

Generer en liste af billeder fra en mappe og jeg vil gerne have at det første billede i listen som default vises i stort format udover også at eksistere i listen. Ved klik på nogen af de andre billeder i listen skal stort format billede skifte til det valgte billede fra listen. Nogen der kan hjælpe?

Følgenede kode generer listen med billeder:

<?
if(isset($_GET["side"])){
$p = opendir("projekter/" . $_GET["side"]);

while($filnavn = readdir($p)){
  if($filnavn != "." && $filnavn != ".."){
  echo "<td>";
  echo "<img height='60' src=projekter/";
  echo $_GET["side"];
  echo "/";
  echo $filnavn;
  echo "><br>\n";
  echo "</td>";
  }
}

}
?>

På forhånd tak
Avatar billede jakobdo Ekspert
06. august 2005 - 08:24 #1
Tror du ikke det er noget javascript du skal have fat i?
Er billederne allerede gemt i original og thumb på din server?
Avatar billede myplacedk Nybegynder
06. august 2005 - 09:11 #2
Lav hver thumbnail til et link til samme PHP-fil, men med en parameter som angiver hvilken thumbnail der blev klikket på.

Eksempel:
echo '.<a href="?file='.urlencode($filnavn).'"><img src="...
Når du skal lave det store billede, tjekker du så blot
Avatar billede myplacedk Nybegynder
06. august 2005 - 09:11 #3
$_GET['file'] for filnavn.
Avatar billede myplacedk Nybegynder
06. august 2005 - 09:12 #4
I øvrigt: Ved du at din kode giver mulighed for at se alle filer i en hvilken som helst mappe på serveren? Også den fil med loginoplysninger til din database, hvis der er sådan en fil?
Avatar billede jakobdo Ekspert
06. august 2005 - 09:17 #5
Hvis login-info ligger i connect.php burde den blive synlig, men i plaintext, ja...
Avatar billede myplacedk Nybegynder
06. august 2005 - 09:21 #6
Huh? Det gør det da også med alle andre filnavne...
Avatar billede jakobdo Ekspert
06. august 2005 - 09:36 #7
Tror ikke jeg er med?
Avatar billede myplacedk Nybegynder
06. august 2005 - 10:20 #8
Din betingelse giver ingen mening for mig, filnavnet behøver da ikke at være noget bestemt, for at filens indhold bliver synligt. Men det er nok også noget andet du prøver at sige, jeg kan bare ikke gennemskue hvad. Det er nok heller ikke væsentligt for mig. ;-)
Avatar billede jakobdo Ekspert
06. august 2005 - 11:42 #9
Hvis du har en fil liggende, som hedder connect.php så kan du da ikke få noget info ud af den?
Hvis den hedder connect.txt kan du...
Avatar billede camban Nybegynder
06. august 2005 - 12:04 #10
Er rimelig ny indenfor php, så jeg er ikke helt med på jeres diskussion.
Prøver lige dit eks. myplacedk.
Der er ikke noget database over det her, koden er helt enkelt som vist og thumbnail er blot ment som billede i mindre format.
Avatar billede myplacedk Nybegynder
06. august 2005 - 12:20 #11
Arh, tanketorsk. :)
Jeg mente af en eller anden grund lige at du læste indholdet af filerne, men det gør du ikke. Det er kun mapper du læser.

Knapt så slemt, men enhver kan se HVILKE filer du har. ;-)
Men det er altså ikke kun lige billederne og denne kode, det er hele der område på serveren PHP har adgang til, hvilket nok inkluderer ALLE de mapper og filnavne du har adgang til med FTP el. lign.
Avatar billede camban Nybegynder
06. august 2005 - 12:22 #12
Nå for søren, ja det er selvfølgelig ikke smart. Hvordan kommer man om det?
Avatar billede camban Nybegynder
06. august 2005 - 12:31 #13
Er det javascript jeg skal bruge i stedet?
Avatar billede myplacedk Nybegynder
06. august 2005 - 12:46 #14
For eksempel...
Start med:
$side = @$_GET['side'];
Valider så $side, dvs. tjek at der ikke er "/" i den, og at det rent faktisk er en mappe i "projekter":
$side = str_replace('/', '', $side);
if (empty($side) || !is_dir('projekter/'.$side)) {
  $side = null;
}
Så kommer din egen kode, du skal dog ændre første linje til:
if($side !== null) {
Og så bruge $side i stedet for $_GET['side'].

Du kan også lave det med javascript, men jeg vil da anbefale at du får det til at virke med PHP først.
Med javascript virker siden hurtigere og mere dynamisk, men det virker ikke altid. Derfor skal det først og fremmest virke med PHP (eller hvad man nu bruger), og javascript skal kun være en ekstra service.
Avatar billede camban Nybegynder
06. august 2005 - 12:55 #15
Ok har sat dit ind...måske rigtig sat ind, måske ikke?

Du fik lige hele koden for jeg forstår ikke helt hvor det det store format billede bliver sat?

<table width="700" height="400" border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td width="80">

Det er her det store billede skal sidde

    </td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td height="10" colspan="2">&nbsp;</td>
  </tr>
<tr>
<td height="60" colspan="2">
<table>
<tr>
<?
$side = @$_GET['side'];
$side = str_replace('/', '', $side);
if (empty($side) || !is_dir('projekter/'.$side)) {
  $side = null;
}


if($side !== null) {
$p = opendir("projekter/" . $side);

while($filnavn = readdir($p)){
  if($filnavn != "." && $filnavn != ".."){
  echo "<td>";
  echo "<img height='60' src=projekter/";
  echo $side;
  echo "/";
  echo $filnavn;
  echo "><br>\n";
  echo "</td>";
  }
}

}


?>
</tr>
</table>
</td>
</tr>
</table>
Avatar billede myplacedk Nybegynder
06. august 2005 - 13:32 #16
Den stump hvor du tjekker $side kan du flytte til nogenlunde øverst.
Efter du har $side på plads, kan du så gøre noget tilsvarende med filnavnet. (Dvs. tjek filen eksisterer i mappen $side)
Så kan du blot vise billedet på samme måde som med de små billeder, bare større. ;-)
Dvs. "echo '<img..." osv.
Avatar billede camban Nybegynder
06. august 2005 - 15:37 #17
Jamen så vil ALLE billeder vel både vises som store og små...det er kun det første i listen der skal vises som default. De små billeder i listen skal være links så det store udskiftes afhængig af hvilket lille billede man klikker på?
Avatar billede myplacedk Nybegynder
06. august 2005 - 18:28 #18
Du skal selvfølgelig ikke vise det store billede inde i en løkke, det skal være før eller efter. Så er der kun ét. (Husk det jeg skrive i min første kommentar.)
Avatar billede camban Nybegynder
06. august 2005 - 21:19 #19
Ok jeg har snart prøvet alt og må indrømme jeg simpelthen ikke helt kan gennemskue hvordan jeg gør...og takker på forhånd for tålmodigheden :o)

Jeg har indsat den kode du skrev tidligere, men den fanger ikke rigtigt det store billede. Det store billede er nederst nu og udenfor løkken.

Jeg vil gerne give flere point hvis du gider hjælpe mig en sidste gang...tak :o)

<?php
$side = @$_GET['side'];
$side = str_replace('/', '', $side);
if (empty($side) || !is_dir('projekter/'.$side)) {
  $side = null;
}

if($side !== null) {
$p = opendir("projekter/" . $side);

echo "<table width='700' height='400' border='0' cellpadding='0' cellspacing='0'>";

      echo "<tr>
    <td height='10' colspan='2'>&nbsp;</td> </tr>";
    echo "<tr>
    <td height='60' colspan='2'>
    <table>
    <tr>";
while($filnavn = readdir($p)){
  if($filnavn != "." && $filnavn != ".."){

  echo "<td>";
  echo '.<a href="?file='. urlencode($filnavn). '">';
  echo "<img height='60' src=projekter/";
  echo $side;
  echo "/";
  echo $filnavn;
  echo "></a><br>\n";
  echo "</td>";
  }
}



echo "</tr>
</table>
</td>
</tr><tr>";
  echo "<td colspan='2'>";
  echo "<img height='240' src=projekter/";
  echo $side;
  echo "/";
  echo $_GET['file'];
  echo "><br>\n";
  echo "</td>";

    echo "<td>&nbsp;</td>";
      echo "</tr></table>";

    }
?>
Avatar billede myplacedk Nybegynder
06. august 2005 - 21:44 #20
Prøv at vælge "Vis kilde" el. lign. i din browser. Måske afslører det problemet.
Avatar billede camban Nybegynder
06. august 2005 - 21:58 #21
Det har jeg som prøvet, hver gang jeg har udskiftet noget. Der mangler hele filnavnet på det store billede...er echo $_GET['file']; sat rigtigt?
Avatar billede myplacedk Nybegynder
06. august 2005 - 22:42 #22
Jo, den står det rigtige sted. Der står vel "?file=etellerandet.jpg" i urlen, ik'?
Avatar billede camban Nybegynder
06. august 2005 - 23:00 #23
Jo der står "?file=etellerandet.jpg" i urlen...måske nemmere at se det her http://daydreambeliever.dk/PHPtest/projekt.php?side=projekt1
Avatar billede camban Nybegynder
06. august 2005 - 23:26 #24
Men det store billede er ganske tomt?
Avatar billede myplacedk Nybegynder
07. august 2005 - 07:58 #25
Der kommer selvfølgelig ikke noget stort billede, før man har valgt et. Du kan sætte en default ind, hvis du har lyst.
Når man så vælger et billede, så fejler de små billeder jo også. Det er fordi $side ikke er med i linket, det skal du lige have:
echo '.<a href="?side='. urlencode($side) .'&amp;file='. urlencode($filnavn). '">';
Avatar billede camban Nybegynder
07. august 2005 - 12:49 #26
takker, det virker fint...jeg prøver selv med default billedet men er jeg mon på rigtige vej med en if(!$file) og noget mere???

Hvis jeg skal give dig flere point, opretter jeg så et andet spørgsmål udover selvfølgelig at acceptere dit svar her?
Avatar billede myplacedk Nybegynder
07. august 2005 - 12:56 #27
Hvis $side ikke er null, så valider $file lige efter $side. Dvs. tjek at der er en fil i den mappe, der hedder sådan. Hvis ikke, sæt $file til null.

Hvis file så ikke er null ($file !== null), skal der vises et stort billede.

60 point er nok, så du skal bare acceptere mit svar.
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