Avatar billede oleodder Nybegynder
28. juli 2004 - 10:55 Der er 2 kommentarer og
1 løsning

Vise 5 billeder på en linie, fremfor 1 billede/filnavn

Hej Alle

Jeg anvender normalt ikke PHP, så jeg kan desværre ikke selv løse dette.

Jeg har en side der lister nogle jpg billeder via et filnavn samt visning af billedet.

MEN - Der listes kun et billede af gangen, før der skiftes ny linie. Er det muligt at liste/vise 5 filnavn+billeder af gangen, før der skiftes linie ???

(Altså 5 billeder på en linie og så et linieskift)

Kan det lade sig gøre ??

Min kode står herunder:

<?php

/**
* Hvor skal filerne uploades til?
* Husk, at webserveren skal kunne skrive til dette bibliotek
*/
$konfiguration["upload_bibliotek"] = "./upload";

/* Hvor mange kilobytes maa filerne fylde per styk? */
$konfiguration["max_stoerrelse"] = "30";


/**
* Checker PHP-version
*/
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
  die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
}


/**
* Udligner forskellene mellem 4.1.x og 4.0.x
* Bemaerk, at disse ikke er "superglobals"
*/
if($minor < 1) {
  $_FILES = $HTTP_POST_FILES;
  $_POST = $HTTP_POST_VARS;
  $_SERVER = $HTTP_SERVER_VARS;
}


if($_FILES["upfil"]["size"] > 0) {

  /**
  * Hvis der er en fil, saa uploader vi den.
  *
  * Foerst slaar vi lige fast, hvor filen skal flyttes fra og til.
  */

  $fra = $_FILES["upfil"]["tmp_name"];
  $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];

  /**
  *  Checker lige om filen er for stor til at vi vil acceptere den.
  *  Vi bruger ceil() i stedet for round(), saa vi ikke faar den skoere
  *  situation, at fejlmeldingen siger, at filen er for stor, men angiver
  *  samme stoerrelse for filen og den oevre graense.
  */
  $fil_stoerrelse = filesize($fra)/1024;
  if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
      die("Desv&aelig;rre - filen er for stor. Jeg accepterer kun " .
          $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
          ceil($fil_stoerrelse) . "kb");
  }
  if(function_exists("move_uploaded_file")) {
    move_uploaded_file($fra, $til);
  } else {
    copy($fra, $til);
  }

  header("Location: " . $_SERVER["PHP_SELF"]);
  exit;

} else {

  /**
  * Intet tegn paa upload, saa vi viser bare listen over filer
  * og HTML-formularen til nye uploads.
  */
  $indhold = listFiler($konfiguration["upload_bibliotek"]);
  $indhold .= bygFormular($_SERVER["PHP_SELF"]);
  $output = bygSide("hej", $indhold);

}


/**
* Skriver ud til browseren
*/
echo $output;
exit;



/**************************************************\
**              Hjaelpefunktioner              **
\**************************************************/

function bygSide($titel, $indhold) {

  /**
  * Pakker indholdet ind i lidt formalia
  */
  return '<html>
            <head><title>' . $titel . '</title></head>
            <body bgcolor="#ffffff">
              <div align="right"><a href="./">Tilbage til artiklen</a></div>
              ' . $indhold . '</body>
          </html>
        ';

}

function bygFormular($action) {

  $formular = '<form action="' . $action . '" method="post" enctype="multipart/form-data">
                <table border="1" cellpadding="5" cellspacing="0">
                  <tr>
                    <td align="right" bgcolor="#999999"><b>Fil til upload:</b></td>
                    <td bgcolor="#cccccc"><input type="file" name="upfil" /></td>
                  </tr>
                  <tr>
                    <td colspan="2" align="middle" bgcolor="#dddddd"><input type="submit" value="upload" /></td>
                  </tr>
                </table>
              </form>
              ';

  return "<h2>Upload fil:</h2>" . $formular;

}

function listFiler($bibliotek) {

  if($bib = @opendir($bibliotek)) {
    /**
    * Denne syntaks er forklaret i PHP-manualen:
    * http://www.php.net/manual/en/function.readdir.php
    */
    while (false !== ($fil = readdir($bib))) {
      if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) {
          if ( preg_match("/\.(jp(e|g|eg)|gif|png)$/i", $fil ) )
          {
            $fil_liste[] = "<a href=\"$bibliotek/$fil\"><img src=\"$bibliotek/$fil\" border=\"0\" align=\"middle\">$fil</a>";
          }
          else
          {
            $fil_liste[] = "<a href=\"$bibliotek/$fil\">$fil</a>";
          }
      }
    }
    closedir($bib);

    if(is_array($fil_liste)) {
      $liste = "<li>" . join("</li><li>", $fil_liste) . "</li>";
    } else {
      $liste = "<li>Ingen filer p&aring; lager</li>";
    }
    return "<h2>Filer p&aring; lager:</h2><ul>" . $liste . "</ul>";
  } else {
    die("Kunne ikke &aring;bne biblioteket: " . $bibliotek);
  }

}
?>
Avatar billede coderdk Praktikant
28. juli 2004 - 16:11 #1
if(is_array($fil_liste)) {
      $liste = "<li>" . join("</li><li>", $fil_liste) . "</li>";
    } else {
      $liste = "<li>Ingen filer p&aring; lager</li>";
    }
    return "<h2>Filer p&aring; lager:</h2><ul>" . $liste . "</ul>";
  } else {
    die("Kunne ikke &aring;bne biblioteket: " . $bibliotek);
  }

ændres til:


    if(is_array($fil_liste)) {
        $c = count( $fil_liste );
        $liste = "<table width='100%' border='0'>";
        for ( $i = 0; $i < $c; $i++ )
        {
            $n = $i % 5;
            if ( $n == 0 && $i != 0 )
            {
                $liste .= "  </tr>\n";
            }
            if ( $i == 0 || $n == 0 )
            {
                $liste .= "  <tr>\n";
            }
            $liste .= "    <td>$fil_liste[$i]</td>\n";
        }
        for ( $i = $n + 1; $i < 5; $i++ )
        {
            $liste .= "    <td>&nbsp;</td>\n";
        }
        $liste .= "  </tr>\n</table>\n";

    } else {
      $liste = "<p>Ingen filer p&aring; lager</p>";
    }
    return "<h2>Filer p&aring; lager:" . $liste;
  } else {
    die("Kunne ikke &aring;bne biblioteket: " . $bibliotek);
  }
Avatar billede oleodder Nybegynder
31. juli 2004 - 11:57 #2
Perfekt, præcist som jeg ønskede. Point til dig.

PS: Hvis man også skulle have en "sletteknap" tilknyttet hvert billede, ville det være svært at lave ?? (Jeg ved godt det er uden for spørgsmålet, men jeg har fundet ud af, det ville være en rigtig god ide !!)

;-) God Week-end
Avatar billede coderdk Praktikant
31. juli 2004 - 13:38 #3
Det er bare at smide en form omkring tabellen og ændre:

$liste .= "    <td>$fil_liste[$i]</td>\n";

til

$liste .= "    <td><input type="checkbox" name="sletfil[]" value="$fil_liste[$i]">$fil_liste[$i]</td>\n";

og så have en submitknap i bunden. For at se hvad du får med, kan du inden du laver slettefunktionaliteten bare lave en print_r( $_POST );
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