Avatar billede drinkit Praktikant
01. februar 2010 - 21:45 Der er 9 kommentarer og
1 løsning

Directory liste med billeder

Jeg bruger følgende script til at liste mine billeder i mappen bday/thumbs/

Men jeg vil gerne have at billederne er på en række med 4 billeder i hver række - og derefter skal der så indsættes et <br> (linie skift!) - Hvordan laves det med det her script?

Vil meget gerne lære lidt :) God dag.. Og på forhånd tak for tiden..

<?php

$path = "bday/thumbs/";
$dir_handle = @opendir($path) or die("Fejl - Kan ikke åbne mappen!");

while (false !== ($file = readdir($dir_handle))) {

if($file == "index.php")
continue;
if($file == ".")
continue;
if($file == "..")
continue;
?>
<img class="img" src="bday/thumbs/<?=$file?>" alt="<?=$file?>"><br>
<?
}
closedir($dir_handle);

?>
Avatar billede Slettet bruger
01. februar 2010 - 22:16 #1
Én måde at få scriptet til at sætte et linjeskift ind efter hvert 4 billede kan laves ved at angive en variable inden dit loop med værdien "1", i slutningen af hvert loop forhøjer du så værdien af din variable med 1. Efter du udskriver billedet tjekker du så værdien af din variabel og hvis værdien er 4 så skal der indsættes et linjeskift og bagefter resetter du variablens værdi til "1" igen.
Ovenstående kode i brug:
<?php
$path = "bday/thumbs/";
$dir_handle = @opendir($path) or die("Fejl - Kan ikke åbne mappen!");

// Laver variable der skal styrer linjeskift
$i = 1;

while (false !== ($file = readdir($dir_handle))) {

if($file == "index.php")
continue;
if($file == ".")
continue;
if($file == "..")
continue;
?>
<img class="img" src="bday/thumbs/<?=$file?>" alt="<?=$file?>" />
<?php
// Tjekker om $i har nået 4-billede
if($i == 4) {
  // $i har nået 4-billede så vi resetter $i til "1" og indsætter et <br />
  $i = 1;
?>
<br />
<?php
} else {
  // $i har ikke nået 4-billede så vi tæller bare videre og venter...
  $i++;
}
closedir($dir_handle);
?>


Håber det kan være en hjælp :-)
Avatar billede Slettet bruger
01. februar 2010 - 22:25 #2
Istedet for at have en variabel der tæller 1-2-3-4 om og om igen, så kan man også bruge modulus operatoren i PHP som giver dig hvad der er tilbage af et divisions-stykke.
Eksempel på modulus:
<?php
// Angiver antal før der skal laves seperation/linjeskift
$seperator_nr = 4;

// Angiver vores tæller, starter fra 1
$i = 1;

while() {
  // Tjekker om $i går lige op i det angivne seperations/linjeskift nr.
  if($i % $seperator_nr == 0) {
    echo "<br />";
  }

  // Forhøjer vores tæller med 1
  $i++;
}
?>
Avatar billede drinkit Praktikant
01. februar 2010 - 22:43 #3
Tak for hjælpen - men umiddelbart giver begge jeres scripts fejl - http://www.xup.dk/ny/galleri/?galleri=bday

den viser ikke fejlene, men siden "går kold" når der er fejl - og galleriet vises ikke, som det gør under "blandet", selvom der kun er et billede der :)

Hvad kan det være?
Avatar billede Slettet bruger
01. februar 2010 - 22:54 #4
Uden en eller anden form for fejl-besked vil jeg ikke kunne hjælpe dig mere.
For at slå alle fejl-beskeder til i dit PHP så tilføj følgende linjer i toppen af din PHP-fil:
<?php
ini_set("error_reporting", 1);
error_reporting(E_ALL);
?>

Hvis der er en fejl i PHP-koderne så vil de blive vist efter du har sat ovenstående koder ind.
Men prøv og vend tilbage efter du har smidt ovenstående linjer ind.
Avatar billede drinkit Praktikant
01. februar 2010 - 23:18 #5
http://www.xup.dk/ny/galleri/?galleri=bday

der kommer stadig ingen fejl.

hmm

poster lige hele filen:

<?php
define ("MAX_SIZE","50000");
function getExtension($str) {
        $i = strrpos($str,".");
        if (!$i) { return ""; }
        $l = strlen($str) - $i;
        $ext = substr($str,$i+1,$l);
        return $ext;
}

$errors=0;
if(isset($_POST['Submit']) && $_POST['kode']=="testest")
{
    $image=$_FILES['image']['name'];
    if ($image)
    {
        $filename = stripslashes($_FILES['image']['name']);
          $extension = getExtension($filename);
        $extension = strtolower($extension);
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))
        {

            echo '<h2>FEJL: Ukendt filtype!</h2><br><br>';
            $errors=1;
        }
        else
        {

$size=filesize($_FILES['image']['tmp_name']);


if ($size > MAX_SIZE*1024)
{
    echo '<h2>FELJ: Billedet er for stort</h2><br><br>';
    $errors=1;
}


$image_name=time().'.'.$extension;
//the new name will be containing the full path where will be stored (images folder)
$newname="bday/".$image_name;
//we verify if the image has been uploaded, and print error instead
$copied = copy($_FILES['image']['tmp_name'], $newname);
if (!$copied)
{
    echo '<h2>FEJL: Prøv igen..</h2><br><br>';
    $errors=1;
}}}}

//If no errors registred, print the success message
if(isset($_POST['Submit']) && !$errors && $_POST['kode']=="testtest")
{
?>

<meta http-equiv="refresh" content="1; url=?galleri=bday">

<h2>Filen er nu uploaded..</h2><br><br>


<?
function createThumbs( $pathToImages, $pathToThumbs, $thumbWidth )
{
  $dir = opendir( $pathToImages );

  while (false !== ($fname = readdir( $dir ))) {
    $info = pathinfo($pathToImages . $fname);
    if ( strtolower($info['extension']) == 'jpg' )
    {

      // load image and get image size
      $img = imagecreatefromjpeg( "{$pathToImages}{$fname}" );
      $width = imagesx( $img );
      $height = imagesy( $img );

      // calculate thumbnail size
      $new_width = $thumbWidth;
      $new_height = floor( $height * ( $thumbWidth / $width ) );

      // create a new temporary image
      $tmp_img = imagecreatetruecolor( $new_width, $new_height );

      // copy and resize old image into new image
      imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

      // save thumbnail into a file
      imagejpeg( $tmp_img, "{$pathToThumbs}{$fname}" );
    }
  }
  // close the directory
  closedir( $dir );
}
// call createThumb function and pass to it as parameters the path
// to the directory that contains images, the path to the directory
// in which thumbnails will be placed and the thumbnail's width.
// We are assuming that the path will be a relative path working
// both in the filesystem, and through the web for links
createThumbs("bday/","bday/thumbs/",860);









}if(isset($_POST['kode']) && $_POST['kode']!="testtest"){?>
<h2>FEJL: Forkert kode!</h2><br><br>
<?}?>

<?include("upload_form.php");?>

<hr>
<h2>Galleri: Fest</h2>

<?php
// Angiver antal før der skal laves seperation/linjeskift
$seperator_nr = 4;

// Angiver vores tæller, starter fra 1
$i = 1;

while() {
  // Tjekker om $i går lige op i det angivne seperations/linjeskift nr.
  if($i % $seperator_nr == 0) {
    echo "<br />";
  }

  // Forhøjer vores tæller med 1
  $i++;
}
?>
Avatar billede Slettet bruger
01. februar 2010 - 23:34 #6
Okay der er lige nogle ting der skal på plads.
Det eksempel jeg skrev, var ment som et eksempel og har aldrig været min mening det skulle virke hvis man copy/pastede det ind uden at tilpasse det til det, det skal kunne.
Derudover vil jeg påstå du stadig ikke har slået fejlmeldinger til.

Så det første du skal have gjort er at slå fejlmeldinger til, som du kan gøre ved at læse post nr. #4

Dernæst skal du have tilpasset den kode du har copy/pastet i bunden af filen så den faktisk gør noget. Som det står nu har du helt fjernet koden der henter billederne fra din mappe og forsøgt at lave et loop med fejl i, men da du ikke har fejlmeldinger slået til får du selvfølgelig ingen fejl.

Og for lige at give dig et lille tip, så vil jeg råde dig til at få ryddet lidt op i dine koder :-)
Avatar billede drinkit Praktikant
02. februar 2010 - 14:25 #7
Tak for det! :)
smid et svar! - ved godt min kode er rodet - rydder op når siden er ved at være færdig.. pt. tester jeg galleriet på http://www.xup.dk/billeder/
og har fået det til at se ud som jeg gerne vil nu :)
God dag!
Avatar billede Slettet bruger
02. februar 2010 - 14:37 #8
Var så lidt, her får du et svar.
Avatar billede drinkit Praktikant
04. februar 2010 - 09:26 #9
kan forresten ikke få mine sider til at vise fejl - selvom jeg putter ovensående script ind.
Jeg har ikke adgang til serveren, da den bliver hostet hos en stor virksomhed.. Nogle ideer?
Avatar billede Slettet bruger
04. februar 2010 - 12:22 #10
De 2 linjer jeg gav for at slå fejlmeldinger til burde virke...
Du kunne prøve at se hvad de står til som standard ved at bruge følgende kode:
<?php
$display_errors = ini_get("display_errors");
$error_reporting = ini_get("error_reporting");

echo "Display Errors: " . $display_errors . "<br />\nError Reporting: " . $error_reporting;
?>


Ellers skal jeg have noget mere information om PHP opsætningen som kan fås via følgende kode (skal slettes fra serveren så snart den ikke skal bruges mere):
<?php
phpinfo();
?>


Uden mere information kan jeg ikke finde på andre ting, desværre.
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