Avatar billede s0mmer Nybegynder
11. september 2006 - 17:08 Der er 62 kommentarer og
1 løsning

Hjælp til multi upload

Hej eksperter.
Jeg har et upload script der uploader 1 fil af gangen samtidig med at den resizer den + indsætter et mærke på billedet. Samtidig med den selvfølgelig indsætter dataerne i en mysql.
Nu skal jeg så have lavet den om så jeg evt. kan uploade 10 filer af gangen, samtidig med at den laver det den skal ved hver fil.

Mit upload script nu:

//Upload
    if ($_POST['action'] == "addpic" && isset($_FILES['userfile'])) {
        if ($_FILES['userfile']['name'] != "") {
            if (($_FILES['userfile']['type'] == "image/pjpeg") || ($_FILES['userfile']['type'] == "image/jpeg")) {
                $tempnavn = str_replace("æ", "ae", $_FILES['userfile']['name']);
                $tempnavn = str_replace("ø", "oe", $tempnavn);
                $tempnavn = str_replace("å", "aa", $tempnavn);
                $filnavn = str_replace(" ", "_", $tempnavn);
                $gemfil = "temp/".$filnavn;
                if (!@move_uploaded_file($_FILES['userfile']['tmp_name'], $gemfil)) {
                    echo "Billedet kunne ikke gemmes.<br>\n";
                } else {
                    $pic1 = ImageCreateFromJPEG($gemfil);
                    $sizeX = ImageSX($pic1);
                    $sizeY = ImageSY($pic1);
                   
                    $pic2 = ImageCreateFromGIF("images/fotologo.gif");
                    $lsizeX = ImageSX($pic2);
                    $lsizeY = ImageSY($pic2);
                   
                    // Udregn hvor billedet skal placeres (nederste højre hjørne her)
                    $posX = $sizeX - $lsizeX;
                    $posY = $sizeY - $lsizeY;
                   
                    // Indsæt logo med 80% blanding
                    ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 100);
                   
                    $wscale = 600 / $sizeX;
                    $hscale = 450 / $sizeY;
                    $scale = ( $hscale < $wscale ? $hscale : $wscale );
                    $nw = round( $sizeX * $scale, 0 );
                    $nh = round( $sizeY * $scale, 0 );
                    $dstim = imagecreatetruecolor( $nw, $nh );
                    imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY );

                    // Gem billede
                    ImageJPEG($dstim, "fotos/".$_POST["select"]."/".$filnavn, 100);
                   
                    // Ryd op (inkl. sletning af midlertidig fil)
                    ImageDestroy($pic1);
                    ImageDestroy($pic2);
                    unlink($gemfil);
                   
                    echo "Billedet blev gemt.<br>\n";
                    $db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$filnavn."')");
echo "<script language='Javascript'>
alert ('Billedet er uploadet!')
</script>";
echo "<script> location = 'admin_billeder.php' </script>";
                }
            }
        }
    } else {

<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
      <input type="hidden" name="action" value="addpic">
      <input type="hidden" name="MAX_FILE_SIZE" value="1024000">


og form til upload:
<input type="file" name="userfile">

På forhånd tak
Avatar billede Slettet bruger
11. september 2006 - 17:21 #1
Jeg ville da lave det der til en function eller en class, og så lave en forløkke på input af filer, og så bruge functionen/classen.

Håber du forstår hvad jeg mener.
Avatar billede s0mmer Nybegynder
11. september 2006 - 17:29 #2
Nej er ikke helt med, fyr løs med eksempler :)
Avatar billede Slettet bruger
11. september 2006 - 18:16 #3
Du kender ikke noget til funktioner eller klasser?
Avatar billede s0mmer Nybegynder
11. september 2006 - 18:18 #4
Jo, men hvis jeg vidste hvordan jeg kunne lave det havde jeg allerede lavet det.
Avatar billede Slettet bruger
11. september 2006 - 18:31 #5
Kigger lige på det, skal lige spise.
Avatar billede Slettet bruger
11. september 2006 - 19:34 #6
Hvad indeholder $_POST["select"]?
Avatar billede Slettet bruger
11. september 2006 - 19:34 #7
<?PHP
    class Upload {
        public $temp_name;
        public $name;
        public $dir;
        public $tempdir;
       

        public function badchar() {
            $var = $this->name;
            $bad = "\\'*^´`+}{][£!§½%¤#=¨áàãââçéèêëìíîïñòóôõöùúûüýÿ?,";
                for($i = 0; $i < strlen($bad); $i++) {
                    $var = str_replace($bad[$i], "", $var);
                }

            $replace = array("æ" => "ae", "ø" => "oe", "å" => "aa", "Æ" => "Ae", "Ø" => "Oe", "Å" => "AA", " " => "_");
                while(list($key, $value) = each($replace)) {
                    $var = str_replace($key, $value, $var);
                }
            $this->name = $var;
        }//ends the function badchar

       
        public function file_upload() {
            $this->badchar();
            $temp = $this->temp_name;
            $name = $this->name;
            $dir = $this->dir;
            if(!@move_uploaded_file($temp, $tempdir."/".$this->name) {
                return false;
            } else {
                if(!$pic1 = ImageCreateFromJPEG($name)) return false;
                $sizeX = ImageSX($pic1);
                $sizeY = ImageSY($pic1);
               
                if(!$pic2 = ImageCreateFromGif("images/fotologo.gif")) return false;
                $lsizeX = ImageSX($pic2);
                $lsizeY = ImageSY($pic2);

            //Udregner hvor billedet skal placeres
                $posX = $sizeX - $lsizeX;
                $poxY = $sizeY - $lsizeY;
           
            //Indsæltter logo med 80% blanding
                if(!ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 100)) return false;

                $wscale = 600 / $sizeX;
                $hscale = 450 / $sizeY;
                $scale = ($hscale < $wscale ? $hscale : $wscale);
                $nw = round($sizeX * $scale, 0);
                $dstim = imagecreatetruecolor( $nw, $nh );
                        if(!imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY)) return false;
            // Gem billede
                if(!ImageJPEG($dstim, "fotos/".$_POST["select"]."/".$filnavn, 100)) return false;
                 
                        // Ryd op (inkl. sletning af midlertidig fil)
                            @ImageDestroy($pic1);
                            @ImageDestroy($pic2);
                            @unlink($temp);
            return true;
           
        }//ends the function file_upload

    } //ends the class Upload
?>
Avatar billede s0mmer Nybegynder
11. september 2006 - 19:46 #8
select boksen vælger man hvilket galleri billederne skal uploades til. prøver lige din kode.
Avatar billede s0mmer Nybegynder
11. september 2006 - 19:49 #9
jeg har lige prøvet copy / paste og fik bare hvid skærm.

noget andet er, hvor indsætter du i databasen i din kode?
og hvordan skal form felterne se ud?
Avatar billede Slettet bruger
11. september 2006 - 22:15 #10
Dette er 2 filer: (upload.php)
<?PHP
    class Upload {
        public $temp_name;
        public $name;
        public $dir;
        public $tempdir;
       

        public function badchar() {
            $var = $this->name;
            $bad = "\\'*^´`+}{][£!§½%¤#=¨áàãââçéèêëìíîïñòóôõöùúûüýÿ?,";
                for($i = 0; $i < strlen($bad); $i++) {
                    $var = str_replace($bad[$i], "", $var);
                }

            $replace = array("æ" => "ae", "ø" => "oe", "å" => "aa", "Æ" => "Ae", "Ø" => "Oe", "Å" => "AA", " " => "_");
                while(list($key, $value) = each($replace)) {
                    $var = str_replace($key, $value, $var);
                }
            $this->name = $var;
        }//ends the function badchar

       
        public function file_upload() {
            $this->badchar();
            $temp = $this->temp_name;
            $name = $this->name;
            $dir = $this->dir;
            if(!@move_uploaded_file($temp, $tempdir."/".$this->name) {
                return false;
            } else {
                if(!$pic1 = ImageCreateFromJPEG($name)) return false;
                $sizeX = ImageSX($pic1);
                $sizeY = ImageSY($pic1);
               
                if(!$pic2 = ImageCreateFromGif("images/fotologo.gif")) return false;
                $lsizeX = ImageSX($pic2);
                $lsizeY = ImageSY($pic2);

            //Udregner hvor billedet skal placeres
                $posX = $sizeX - $lsizeX;
                $poxY = $sizeY - $lsizeY;
           
            //Indsæltter logo med 80% blanding
                if(!ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 100)) return false;

                $wscale = 600 / $sizeX;
                $hscale = 450 / $sizeY;
                $scale = ($hscale < $wscale ? $hscale : $wscale);
                $nw = round($sizeX * $scale, 0);
                $dstim = imagecreatetruecolor( $nw, $nh );
                        if(!imagecopyresampled( $dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY)) return false;
            // Gem billede
                if(!ImageJPEG($dstim, "fotos/".$_POST["select"]."/".$filnavn, 100)) return false;
                 
                        // Ryd op (inkl. sletning af midlertidig fil)
                            @ImageDestroy($pic1);
                            @ImageDestroy($pic2);
                            @unlink($temp);
            return true;
           
        }//ends the function file_upload

    } //ends the class Upload
?>
Avatar billede Slettet bruger
11. september 2006 - 22:15 #11
Fil 2 (formen) - Du skal lige udfylde antalfiler, mappe(dir) og temp mappen (tempdir)

<?PHP
include("upload.php");
$uploadObj = new Upload;
$antalfiler = 3;
$dir = "";
$tempdir = "";
if(isset($_POST['goUpload'])) {
    for($i=0; $i<count($fil); $i++) {
        if($fil[$i]['name'] != "") {
            $uploadObj->temp_name = $fil[$i]['tmp_name'];
            $uploadObj->name = $fil[$i]['name'];
        }
    }
}
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
      <input type="hidden" name="MAX_FILE_SIZE" value="1024000">
<?PHP
    if($y=0; $y<$antalfiler; $y++) {
?>
    <input type="file" name="fil[]" /><br />
<?PHP
    }
?>
<input type="submit" name="goUpload" value="Upload filer" />
Avatar billede s0mmer Nybegynder
11. september 2006 - 22:16 #12
prøver lige..
Avatar billede s0mmer Nybegynder
11. september 2006 - 22:24 #13
test.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?PHP
include("upload.php");
$uploadObj = new Upload;
$antalfiler = 10;
$dir = "fotos/ane";
$tempdir = "temp";
if(isset($_POST['goUpload'])) {
    for($i=0; $i<count($fil); $i++) {
        if($fil[$i]['name'] != "") {
            $uploadObj->temp_name = $fil[$i]['tmp_name'];
            $uploadObj->name = $fil[$i]['name'];
        }
    }
}
?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
      <input type="hidden" name="MAX_FILE_SIZE" value="1024000">
<?PHP
    if($y=0; $y<$antalfiler; $y++) {
?>
    <input type="file" name="fil[]" /><br />
<?PHP
    }
?>
<input type="submit" name="goUpload" value="Upload filer" />
</body>
</html>


Giver hvid skærm.
Avatar billede Slettet bruger
11. september 2006 - 22:27 #14
Prøv så lige:


test.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?PHP
include("upload.php");
$uploadObj = new Upload;
$antalfiler = 10;
$dir = "fotos/ane";
$tempdir = "temp";
if(isset($_POST['goUpload'])) {
    for($i=0; $i<count($fil); $i++) {
        if($fil[$i]['name'] != "") {
            $uploadObj->temp_name = $fil[$i]['tmp_name'];
            $uploadObj->name = $fil[$i]['name'];
        if($uploadObj->file_upload()) {
            echo "Billed(erne) er nu lagt op.<br />";
        } else {
            echo "Der skete en fejl under uploadingen.<br />";
        }
        }
    }
}
?>
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
      <input type="hidden" name="MAX_FILE_SIZE" value="1024000">
<?PHP
    if($y=0; $y<$antalfiler; $y++) {
?>
    <input type="file" name="fil[]" /><br />
<?PHP
    }
?>
<input type="submit" name="goUpload" value="Upload filer" />
</form>
</body>
</html>
Avatar billede s0mmer Nybegynder
11. september 2006 - 22:29 #15
Stadig hvid skærm.. Har du msn hvis det er?
Avatar billede Slettet bruger
11. september 2006 - 22:38 #16
Ja det har jeg men er ikke online før imorgen-morgen engang da jeg skal hjem fra arbejde nu her om lidt, og skal så hjem til min kæreste. Den siger hveken "Billed(erne) er nu lagt op." eller "Der skete en fejl under uploadingen" ??

Prøv rette:
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">

->

<form enctype="multipart/form-data" action="" method="POST">
Avatar billede s0mmer Nybegynder
11. september 2006 - 22:40 #17
ah okay, nej den siger ingen af delene og selvom jeg ændrer til
<form enctype="multipart/form-data" action="" method="POST">

så får jeg stadig hvid skærm :(
Avatar billede Slettet bruger
11. september 2006 - 22:40 #18
Har lige rettet det selv:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?PHP
include("upload.php");
$uploadObj = new Upload;
$antalfiler = 10;
$dir = "fotos/ane";
$tempdir = "temp";
if(isset($_POST['goUpload'])) {
    for($i=0; $i<count($fil); $i++) {
          if($fil[$i]['name'] != "") {
            $uploadObj->temp_name = $fil[$i]['tmp_name'];
              $uploadObj->name = $fil[$i]['name'];
                  if($uploadObj->file_upload()) {
                      echo "Billed(erne) er nu lagt op.<br />";
                  } else {
                        echo "Der skete en fejl under uploadingen.<br />";
                  }
        }
    }
}
?>
<form enctype="multipart/form-data" action="" method="POST">
      <input type="hidden" name="MAX_FILE_SIZE" value="1024000">
<?PHP
    if($y=0; $y<$antalfiler; $y++) {
?>
    <input type="file" name="fil[]" /><br />
<?PHP
    }
?>
<input type="submit" name="goUpload" value="Upload filer" />
</form>
</body>
</html>
Avatar billede Slettet bruger
11. september 2006 - 22:41 #19
Du kan ikke engang se de 3 input felter? + en submit knap?

Men hvad siger 'Kilde koden'?
Avatar billede Slettet bruger
11. september 2006 - 22:42 #20
Er først online igen imorgen.
Håber du selv finder ud af det, eller at der er andre der kan bygge videre.
Avatar billede s0mmer Nybegynder
11. september 2006 - 22:42 #21
Har lige indsat det du postede og stadig hvid skærm

Nej kan ikke se noget som helst

og vis kilde giver:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1"></HEAD>
<BODY></BODY></HTML>
Avatar billede s0mmer Nybegynder
11. september 2006 - 22:47 #22
bare iorden, håber vi skrives imorgen. tak for hjælpen indtil nu
Avatar billede Slettet bruger
12. september 2006 - 10:46 #23
Men du skal da ikke selv bestemme hvilke temp mappe det skal ind i?!
Så den sletter jeg lige igen.
Avatar billede Slettet bruger
12. september 2006 - 11:05 #24
Men nu skal jeg lige have styr på alle dine mapper:
Du har fotos/ane/ hvor filerne først gang skal kopieres ind i?
Så har du images/fotologo.gif, som er dit logo.
Så har du forskellige undermapper i mappen fotos, hvor du hiver det med i en $_POST, og så filen. Altså fotos/$_POST/filnavn.

Flere er jeg helt med?
Avatar billede s0mmer Nybegynder
12. september 2006 - 14:39 #25
fotos/ane var bare noget jeg skrev.
mappen temp er der hvor billederne midltertigigt ryger ind hvor de får sat images/fotologo.gif på hvor de derefter bliver gemt endeligt i fotos/$_POST og slettes fra temp mappen. forstår du?
Avatar billede Slettet bruger
12. september 2006 - 16:08 #26
okay nu forstår jeg tror jeg.
Avatar billede Slettet bruger
12. september 2006 - 16:09 #27
Jeg har testet det hos mig og det virker perfekt, og sletter som sagt temp filen osv.

Koden til upload.php

<?PHP
    class Upload {
        var $temp_name;
        var $name;
        var $dir;
      var $temp_dir;
      var $error_msg;
      var $myselection;

        function badchar() {
            $var = $this->name;
            $bad = "\\'*^´`+}{][£!§½%¤#=¨áàãââçéèêëìíîïñòóôõöùúûüýÿ?,";
                for($i = 0; $i < strlen($bad); $i++) {
                    $var = str_replace($bad[$i], "", $var);
                }

            $replace = array("æ" => "ae", "ø" => "oe", "å" => "aa", "Æ" => "Ae", "Ø" => "Oe", "Å" => "AA", " " => "_");
                while(list($key, $value) = each($replace)) {
                    $var = str_replace($key, $value, $var);
                }
            $this->name = $var;
        }//ends the function badchar

     
        function file_upload() {
            $this->badchar();
            $temp = $this->temp_name;
        $temp_dir = $this->temp_dir;
            $name = $this->name;
            $dir = $this->dir;
        $myselection = $this->myselection;

        print "Temp: <b>".$temp."</b><br />";
        print "Temp_dir: <b>".$temp_dir."</b><br />";
        print "Name: <b>".$name."</b><br />";
        print "Dir: <b>".$dir."</b><br />";
        print "Selection: <b>".$myselection."</b><br />";

            if(!@move_uploaded_file($temp, $temp_dir.$name)) {
                $this->error_msg = "linje 30";
                return false;
            } else {
                if(!$pic1 = ImageCreateFromJPEG($temp_dir.$name)) { $this->error_msg = "linje 43"; return false; }
                $sizeX = ImageSX($pic1);
                $sizeY = ImageSY($pic1);
             
                if(!$pic2 = ImageCreateFromGif("images/fotologo.gif")) { $this->error_msg = "linje 47"; return false; }
                $lsizeX = ImageSX($pic2);
                $lsizeY = ImageSY($pic2);

            //Udregner hvor billedet skal placeres
                $posX = $sizeX - $lsizeX;
                $poxY = $sizeY - $lsizeY;
         
            //Indsæltter logo med 80% blanding
                if(!ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 80)) { $this->error_msg = "linje 56"; return false; }

                $wscale = 600 / $sizeX;
                $hscale = 450 / $sizeY;
                $scale = ($hscale < $wscale ? $hscale : $wscale);
                $nw = round($sizeX * $scale, 0);
            $nh = round($sizeY * $scale, 0);
                $dstim = imagecreatetruecolor($nw, $nh);
            print "Scale: <b>".$nw."/".$nh." (".$scale.")</b><br />";
            print "Wscale: <b>".$wscale."</b><br />";
            print "Hscale: <b>".$hscale."</b><br />";
                        if(!imagecopyresampled($dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY)) { $this->error_msg = "linje 67"; return false; }
            // Gem billede
                if(!ImageJPEG($dstim, $dir.$name, 60)) { $this->error_msg = "linje 69"; return false; }
               
                        // Ryd op (inkl. sletning af midlertidig fil)
                            @ImageDestroy($pic1);
                            @ImageDestroy($pic2);
                            @unlink($temp_dir.$name);
            return true;
          }
        }//ends the function file_upload

    } //ends the class Upload
?>
Avatar billede Slettet bruger
12. september 2006 - 16:09 #28
min upload_test.php


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?PHP
include("upload.php");
$uploadObj = new Upload;
$uploadObj->dir = "foto/";
$uploadObj->temp_dir = "myTemp/";
$uploadObj->myselection = $_POST['selection'];

$antalfiler = 3;

if(isset($_POST['goUpload'])) {
    for($i=0; $i<count($_FILES['fil']['name']); $i++) {
          if($_FILES['fil']['name'][$i] != "") {
            $uploadObj->temp_name = $_FILES['fil']['tmp_name'][$i];
            $uploadObj->name = $_FILES['fil']['name'][$i];
              if($uploadObj->file_upload()) {
                      echo "Billed 1 er nu lagt op.<br />";
                  } else {
                      echo "Billed 1 lavede en fejl under uploadingen.<br />";
                  } 
        }
    }
/*
    print "<pre>";
    print "Error: ".$uploadObj->error_msg."<br />";
    print_r($_FILES);
    print "</pre>";
*/
}
?>
<form action="" method="post" enctype="multipart/form-data">
      <input type="hidden" name="MAX_FILE_SIZE" value="1024000">
Hvor skal billederne lægges hen? <select name="selection">
                        <option value="2">Alm mappe</option>
                        <option value="1">Andet mappen</option>
                      </select><br />
<?PHP
    for($i=0; $i<$antalfiler; $i++) {
?>
        Fil #<?PHP echo $i+1; ?><input type="file" name="fil[]" /><br />
<?PHP
    }
?>
<input type="submit" name="goUpload" value="Upload filer" />
</form>
</body>
</html>
Avatar billede Slettet bruger
12. september 2006 - 16:13 #29
Og husk at give rettighed til de mapper du vil have filerne skal kunne læse fra og skrive til.

I mit tilfælde har jeg mapperne:
+ foto (Har givet den chmod 777)
|_ 2 (chmod 777) - denne mappe og den neden under det er der hvor filen bliver lagt op i alt efter selectionen på upload siden.
|_1 (chmod 777) - ^^

+ images (chmod 777) - tror ikke det behøves.  (fotologo.gif lægger her i)

+ myTemp (chmod 777) - de midlertidig filer - bliver slettet.
Avatar billede Slettet bruger
12. september 2006 - 16:15 #30
Du skal nok lige udkommenter dette understående i filen upload.php


        print "Temp: <b>".$temp."</b><br />";
        print "Temp_dir: <b>".$temp_dir."</b><br />";
        print "Name: <b>".$name."</b><br />";
        print "Dir: <b>".$dir."</b><br />";
        print "Selection: <b>".$myselection."</b><br />";


->

/*
        print "Temp: <b>".$temp."</b><br />";
        print "Temp_dir: <b>".$temp_dir."</b><br />";
        print "Name: <b>".$name."</b><br />";
        print "Dir: <b>".$dir."</b><br />";
        print "Selection: <b>".$myselection."</b><br />";
*/
Avatar billede Slettet bruger
12. september 2006 - 16:16 #31
og dette:

print "Scale: <b>".$nw."/".$nh." (".$scale.")</b><br />";
            print "Wscale: <b>".$wscale."</b><br />";
            print "Hscale: <b>".$hscale."</b><br />";

->

/*
                print "Scale: <b>".$nw."/".$nh." (".$scale.")</b><br />";
            print "Wscale: <b>".$wscale."</b><br />";
            print "Hscale: <b>".$hscale."</b><br />";
*/
Avatar billede Slettet bruger
12. september 2006 - 16:29 #32
Altså poster lige hele upload.php igen med de der udkommenteringer:

<?PHP
    class Upload {
        var $temp_name;
        var $name;
        var $dir;
      var $temp_dir;
      var $error_msg;
      var $myselection;

        function badchar() {
            $var = $this->name;
            $bad = "\\'*^´`+}{][£!§½%¤#=¨áàãââçéèêëìíîïñòóôõöùúûüýÿ?,";
                for($i = 0; $i < strlen($bad); $i++) {
                    $var = str_replace($bad[$i], "", $var);
                }

            $replace = array("æ" => "ae", "ø" => "oe", "å" => "aa", "Æ" => "Ae", "Ø" => "Oe", "Å" => "AA", " " => "_");
                while(list($key, $value) = each($replace)) {
                    $var = str_replace($key, $value, $var);
                }
            $this->name = $var;
        }//ends the function badchar

     
        function file_upload() {
            $this->badchar();
            $temp = $this->temp_name;
        $temp_dir = $this->temp_dir;
              $name = $this->name;
                $dir = $this->dir;
        $myselection = $this->myselection;

/*
        print "Temp: <b>".$temp."</b><br />";
        print "Temp_dir: <b>".$temp_dir."</b><br />";
        print "Name: <b>".$name."</b><br />";
        print "Dir: <b>".$dir."</b><br />";
        print "Selection: <b>".$myselection."</b><br />";
*/

            if(!@move_uploaded_file($temp, $temp_dir.$name)) {
                $this->error_msg = "linje 30";
                return false;
            } else {
                if(!$pic1 = ImageCreateFromJPEG($temp_dir.$name)) { $this->error_msg = "pic1 - imagecreatefromjpeg melder fejl"; return false; }
                $sizeX = ImageSX($pic1);
                $sizeY = ImageSY($pic1);
             
                if(!$pic2 = ImageCreateFromGif("images/fotologo.gif")) { $this->error_msg = "pic2 - imagecreatefromgif melder fejl"; return false; }
                $lsizeX = ImageSX($pic2);
                $lsizeY = ImageSY($pic2);

            //Udregner hvor billedet skal placeres
                $posX = $sizeX - $lsizeX;
                $poxY = $sizeY - $lsizeY;
         
            //Indsæltter logo med 80% blanding
                if(!ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 80)) { $this->error_msg = "imagecopymerge melder fejl"; return false; }

                $wscale = 600 / $sizeX;
                $hscale = 450 / $sizeY;
                $scale = ($hscale < $wscale ? $hscale : $wscale);
                $nw = round($sizeX * $scale, 0);
            $nh = round($sizeY * $scale, 0);
                $dstim = imagecreatetruecolor($nw, $nh);
/*
            print "Scale: <b>".$nw."/".$nh." (".$scale.")</b><br />";
            print "Wscale: <b>".$wscale."</b><br />";
            print "Hscale: <b>".$hscale."</b><br />";
*/
                        if(!imagecopyresampled($dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY)) { $this->error_msg = "imagecopyresampled melder fejl"; return false; }
            // Gem billede
                if(!ImageJPEG($dstim, $dir.$name, 60)) { $this->error_msg = "imagejpeg melder fejl"; return false; }
               
                        // Ryd op (inkl. sletning af midlertidig fil)
                            @ImageDestroy($pic1);
                            @ImageDestroy($pic2);
                            @unlink($temp_dir.$name);
            return true;
          }
        }//ends the function file_upload

    } //ends the class Upload
?>
Avatar billede s0mmer Nybegynder
12. september 2006 - 16:59 #33
prøver lige
Avatar billede s0mmer Nybegynder
12. september 2006 - 17:10 #34
jep, det kører uden fejl. men det skal lige rettes til. jeg har lavet en mappe der hedder ane på sitet og lavet en option i selection der hedder ane. men selvom jeg vælger ane ryger de ikke i ane mappen, men bare i fotos mappen.

og vi skal have den til at skrive i databasen for hvert billede (se min første kode):
$db->ExecSQL("INSERT INTO snm_galleri (galleri,billede)VALUES('".$_POST["select"]."','".$_POST["select"]."/".$filnavn."')");
echo "<script language='Javascript'>
alert ('Billedet er uploadet!')
</script>";
echo "<script> location = 'admin_billeder.php' </script>";
Avatar billede Slettet bruger
12. september 2006 - 17:15 #35
Hvad hedder din klasse til din connection, og inserts? og hvad hedder filen?
Avatar billede s0mmer Nybegynder
12. september 2006 - 17:18 #36
jeg har bare include("db_con.php");
andet behøves du vel ik?
Avatar billede Slettet bruger
12. september 2006 - 17:20 #37
jo skal bruge navnet på din class.
Du åbner db_con.php og så står der
class NavnetJegSkalBruge {

}
Avatar billede s0mmer Nybegynder
12. september 2006 - 17:24 #38
finder det lige.. imens- hvorfor gider den så kun at ligge billederne i fotos mappen og ikke den mappe jeg vælger i select? har en mappe der hedder test og ane nu. og har lavet:
                        <option value="2">ane</option>
                        <option value="1">test</option>

men de ryger ikke i dem, stadig kun i fotos mappen
Avatar billede Slettet bruger
12. september 2006 - 17:27 #39
Det er en fejl i koden, men du skal rette value="mappenavn">
<option value="2">ane</option>
<option value="1">test</option>

->

<option value="ane">ane</option>
<option value="test">test</option>

ellers så skal du fjene value så der bare stå <option>ane</option>
<option>test</option>

Men jeg ville fortrække med value, det er jo ikke sikkert brugeren skal kende mappen som ane, men som normal mappe eller lign.

for så kan du give en værdi med value, men vise noget andet til brugeren der skal vælge.
Avatar billede s0mmer Nybegynder
12. september 2006 - 17:27 #40
jamen det eneste class jeg har er jo
class DB
{
var $DBHost;
var $DBUser;
var $DBPass;
var $DBName;
var $DBConn;

men det er jo ik nok ?
Avatar billede Slettet bruger
12. september 2006 - 17:30 #41
Det var bare 'DB' jeg skulle vide (altså class navn som er => DB)
Avatar billede Slettet bruger
12. september 2006 - 17:30 #42
Lægger din db_con.php i samme mappe som upload.php?
Avatar billede Slettet bruger
12. september 2006 - 17:31 #43
Hvis den gør så skulle det gerne virke:

<?PHP
include("db_con.php"); //din connection fil
    class Upload EXTENDS DB {
        var $temp_name;
        var $name;
        var $dir;
      var $temp_dir;
      var $error_msg;
      var $myselection;

        function badchar() {
            $var = $this->name;
            $bad = "\\'*^´`+}{][£!§½%¤#=¨áàãââçéèêëìíîïñòóôõöùúûüýÿ?,";
                for($i = 0; $i < strlen($bad); $i++) {
                    $var = str_replace($bad[$i], "", $var);
                }

            $replace = array("æ" => "ae", "ø" => "oe", "å" => "aa", "Æ" => "Ae", "Ø" => "Oe", "Å" => "AA", " " => "_");
                while(list($key, $value) = each($replace)) {
                    $var = str_replace($key, $value, $var);
                }
            $this->name = $var;
        }//ends the function badchar

     
        function file_upload() {
            $this->badchar();
            $temp = $this->temp_name;
        $temp_dir = $this->temp_dir;
              $name = $this->name;
                $dir = $this->dir;
        $myselection = $this->myselection;

/*
        print "Temp: <b>".$temp."</b><br />";
        print "Temp_dir: <b>".$temp_dir."</b><br />";
        print "Name: <b>".$name."</b><br />";
        print "Dir: <b>".$dir."</b><br />";
        print "Selection: <b>".$myselection."</b><br />";
*/

            if(!@move_uploaded_file($temp, $temp_dir.$name)) {
                $this->error_msg = "linje 30";
                return false;
            } else {
                if(!$pic1 = ImageCreateFromJPEG($temp_dir.$name)) { $this->error_msg = "pic1 - imagecreatefromjpeg melder fejl"; return false; }
                $sizeX = ImageSX($pic1);
                $sizeY = ImageSY($pic1);
             
                if(!$pic2 = ImageCreateFromGif("images/fotologo.gif")) { $this->error_msg = "pic2 - imagecreatefromgif melder fejl"; return false; }
                $lsizeX = ImageSX($pic2);
                $lsizeY = ImageSY($pic2);

            //Udregner hvor billedet skal placeres
                $posX = $sizeX - $lsizeX;
                $poxY = $sizeY - $lsizeY;
         
            //Indsæltter logo med 80% blanding
                if(!ImageCopyMerge($pic1, $pic2, $posX, $posY, 0, 0, $lsizeX, $lsizeY, 80)) { $this->error_msg = "imagecopymerge melder fejl"; return false; }

                $wscale = 600 / $sizeX;
                $hscale = 450 / $sizeY;
                $scale = ($hscale < $wscale ? $hscale : $wscale);
                $nw = round($sizeX * $scale, 0);
            $nh = round($sizeY * $scale, 0);
                $dstim = imagecreatetruecolor($nw, $nh);
/*
            print "Scale: <b>".$nw."/".$nh." (".$scale.")</b><br />";
            print "Wscale: <b>".$wscale."</b><br />";
            print "Hscale: <b>".$hscale."</b><br />";
*/
                        if(!imagecopyresampled($dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY)) { $this->error_msg = "imagecopyresampled melder fejl"; return false; }
            // Gem billede
                if(!ImageJPEG($dstim, $dir.$myselection."/".$name, 60)) { $this->error_msg = "imagejpeg melder fejl"; return false; }
               
                        // Ryd op (inkl. sletning af midlertidig fil)
                            @ImageDestroy($pic1);
                            @ImageDestroy($pic2);
                            @unlink($temp_dir.$name);
            $this->insert();
            return true;
          }
        }//ends the function file_upload

        function insert() {
            $myselection = $this->myseletion;
            $name = $this->name;
                $this->$db->ExecSQL("INSERT INTO snm_galleri (galleri, billede)VALUES('".$myselection."','".$myselection."/".$name."')");
                echo "<script language='Javascript'>
                alert ('Billedet er uploadet!')
                </script>";
                echo "<script> location = 'admin_billeder.php' </script>";
        }//ends the function insert
    } //ends the class Upload
?>
Avatar billede s0mmer Nybegynder
12. september 2006 - 17:31 #44
ja, men det referer videre til en anden mappe, men de oplys. ligger jo i db_con.php
Avatar billede s0mmer Nybegynder
12. september 2006 - 17:34 #45
jeg prøver lige det hvor den indsætter i databasen efter vi fundet ud af hvorfor den selection ikke virker. selvom jeg har:
                        <option value="ane">ane</option>
                        <option value="test">test</option>
og jeg har mapperne test og ane.. dvs de ligger på (fotos/ane og fotos/test) så uploader den stadig til fotos. vi har ikk overset et / eller lign?
Avatar billede Slettet bruger
12. september 2006 - 17:48 #46
Hos mig smider den det i den rigtige mappe, men har du ændret noget i forhold til det jeg har lavet?
Avatar billede s0mmer Nybegynder
12. september 2006 - 17:49 #47
test.php :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?PHP
include("upload.php");
$uploadObj = new Upload;
$uploadObj->dir = "fotos/";
$uploadObj->temp_dir = "temp/";
$uploadObj->myselection = $_POST['selection'];

$antalfiler = 3;

if(isset($_POST['goUpload'])) {
    for($i=0; $i<count($_FILES['fil']['name']); $i++) {
          if($_FILES['fil']['name'][$i] != "") {
            $uploadObj->temp_name = $_FILES['fil']['tmp_name'][$i];
            $uploadObj->name = $_FILES['fil']['name'][$i];
              if($uploadObj->file_upload()) {
                      echo "Billed 1 er nu lagt op.<br />";
                  } else {
                      echo "Billed 1 lavede en fejl under uploadingen.<br />";
                  } 
        }
    }
/*
    print "<pre>";
    print "Error: ".$uploadObj->error_msg."<br />";
    print_r($_FILES);
    print "</pre>";
*/
}
?>
<form action="" method="post" enctype="multipart/form-data">
      <input type="hidden" name="MAX_FILE_SIZE" value="1024000">
Hvor skal billederne lægges hen? <select name="selection">
                        <option>ane</option>
                        <option>test</option>
                      </select><br />
<?PHP
    for($i=0; $i<$antalfiler; $i++) {
?>
        Fil #<?PHP echo $i+1; ?><input type="file" name="fil[]" /><br />
<?PHP
    }
?>
<input type="submit" name="goUpload" value="Upload filer" />
</form>
</body>
</html>
Avatar billede s0mmer Nybegynder
12. september 2006 - 17:57 #48
og hvis jeg sætter den til at printe ud hvad der sker:
Temp: /tmp/phpWWwNwO
Temp_dir: temp/
Name: Vinter.jpg
Dir: fotos/
Selection: ane
Scale: 600/450 (0.75)
Wscale: 0.75
Hscale: 0.75
Avatar billede Slettet bruger
12. september 2006 - 18:14 #49
Prøv fjern kommenteringen på den nedereste del linje 67 - 71, og fortæl mig hvad den siger.

I din upload_test.php prøv fjern det udkommenteret der, linje 30 - 35, og fortæl mig hvad den siger.
Avatar billede Slettet bruger
12. september 2006 - 18:21 #50
Husket at chmod din mapper som jeg beskrev ^^?
Avatar billede s0mmer Nybegynder
12. september 2006 - 18:25 #51
Så skriver den:
Temp: /tmp/phpXBX9ry
Temp_dir: temp/
Name: Vinter.jpg
Dir: fotos/
Selection: ane
Scale: 600/450 (0.75)
Wscale: 0.75
Hscale: 0.75
Billed 1 er nu lagt op.

Error: Array
(
    [fil] => Array
        (
            [name] => Array
                (
                    [0] => Vinter.jpg
                    [1] =>
                    [2] =>
                )

            [type] => Array
                (
                    [0] => image/pjpeg
                    [1] =>
                    [2] =>
                )

            [tmp_name] => Array
                (
                    [0] => /tmp/phpXBX9ry
                    [1] =>
                    [2] =>
                )

            [error] => Array
                (
                    [0] => 0
                    [1] => 4
                    [2] => 4
                )

            [size] => Array
                (
                    [0] => 105542
                    [1] => 0
                    [2] => 0
                )

        )

)


og nej jeg har ik chmod noget da jeg har et upload script i forvejen som uploadet en fil af gangen som også uploader til mappen ane hvor det virker.
Avatar billede s0mmer Nybegynder
12. september 2006 - 18:44 #52
det er godt nok underligt. men jeg skal lige til noget møde fra 7 - 8 ca. så kommer jeg igen, du kan evt. poste din msn hvis du ikke kan finde fejlen, så kan vi snakkes der
Avatar billede s0mmer Nybegynder
12. september 2006 - 19:42 #53
så er jeg tilbage.
Avatar billede Slettet bruger
12. september 2006 - 19:46 #54
Jeg er på arbejde lige nu men kan godt svarer ind i mellem.
Hvad siger du din msn er?
Avatar billede s0mmer Nybegynder
12. september 2006 - 19:53 #55
privat_sommer@hotmail.com
Avatar billede s0mmer Nybegynder
12. september 2006 - 19:54 #56
men har lidt bøvl med at logge på msn lige pt. tjenesten er ikke tilgængelig. men går ud fra den snart kommer.
Avatar billede s0mmer Nybegynder
12. september 2006 - 19:54 #57
er kommet på nu.
Avatar billede Slettet bruger
13. september 2006 - 13:59 #58
Vi fik det til at virke, men sOmmer havde så et ekstra spørgsmål og det var fordi scriptet sætter mærke/logo på og derefter resizer. Men han ønskede den først resize'de og så satte mærke/logoet på.

Så det har jeg lavet, jeg og ham har skrevet sammen over msn og det gør vi også idag, og finder ud af om det skulle være fint nok.(?)
Hvis det er fint nok, så poster jeg lige koden ind her.
Avatar billede Slettet bruger
13. september 2006 - 15:01 #59
Så fik vi det til at virke, så nu er den der, jeg poster lige koden.
Det er 2 filer.
Avatar billede Slettet bruger
13. september 2006 - 15:02 #60
upload_test.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?PHP
include("upload.php");
$uploadObj = new Upload;
$uploadObj->dir = "foto/";
$uploadObj->temp_dir = "myTemp/";
$uploadObj->myselection = $_POST['selection'];

$antalfiler = 3;

if(isset($_POST['goUpload'])) {
    for($i=0; $i<count($_FILES['fil']['name']); $i++) {
          if($_FILES['fil']['name'][$i] != "") {
            $uploadObj->temp_name = $_FILES['fil']['tmp_name'][$i];
            $uploadObj->name = $_FILES['fil']['name'][$i];
              if($uploadObj->file_upload()) {
                      echo "Billed " . $i+1 . " er nu lagt op.<br />\n";
                  } else {
                      echo "Billed ". $i+1 ." lavede en fejl under uploadingen.<br />";
                  } 
        }
    }
    print "<pre>";
    print "Error: ".$uploadObj->error_msg."<br />";
    print_r($_FILES);
    print "</pre>";

}
?>
<form action="" method="post" enctype="multipart/form-data">
      <input type="hidden" name="MAX_FILE_SIZE" value="1024000">
Hvor skal billederne lægges hen? <select name="selection">
                        <option value="2">Alm mappe</option>
                        <option value="1">Andet mappen</option>
                      </select><br />
<?PHP
    for($i=0; $i<$antalfiler; $i++) {
?>
        Fil #<?PHP echo $i+1; ?> - <input type="file" name="fil[]" /><br />
<?PHP
    }
?>
<input type="submit" name="goUpload" value="Upload filer" />
</form>
</body>
</html>





----------------------------------------------------------------------------------
upload.php

<?PHP
    class Upload {
      var $temp_name;
      var $name;
      var $dir;
      var $temp_dir;
      var $error_msg;
      var $myselection;

        function badchar() {
            $var = $this->name;
            $bad = "\\'*^ï`+}{][œ!õ«%Ï#=ù …ƃƒ‡‚Šˆ‰?¡Œ‹¤•¢“ä”—£–?ì˜?,";
                for($i = 0; $i < strlen($bad); $i++) {
                    $var = str_replace($bad[$i], "", $var);
                }

            $replace = array("‘" => "ae", "›" => "oe", "†" => "aa", "’" => "Ae", "?" => "Oe", "?" => "AA", " " => "_");
                while(list($key, $value) = each($replace)) {
                    $var = str_replace($key, $value, $var);
                }
            $this->name = $var;
        }//ends the function badchar

     
        function file_upload() {
            $this->badchar();
            $temp = $this->temp_name;
        $temp_dir = $this->temp_dir;
              $name = $this->name;
                $dir = $this->dir;
        $myselection = $this->myselection;

/**/
        print "Temp: <b>".$temp."</b><br />";
        print "Temp_dir: <b>".$temp_dir."</b><br />";
        print "Name: <b>".$name."</b><br />";
        print "Dir: <b>".$dir."</b><br />";
        print "Selection: <b>".$myselection."</b><br />";

/**/
            if(!@move_uploaded_file($temp, $temp_dir.$name)) {
                $this->error_msg = "linje 30";
                return false;
            } else {
                if(!$pic1 = ImageCreateFromJPEG($temp_dir.$name)) { $this->error_msg = "pic1 - imagecreatefromjpeg melder fejl"; return false; }
                $sizeX = ImageSX($pic1);
                $sizeY = ImageSY($pic1);
             
                if(!$pic2 = ImageCreateFromGif("images/fotologo.gif")) { $this->error_msg = "pic2 - imagecreatefromgif melder fejl"; return false; }
                $lsizeX = ImageSX($pic2);
                $lsizeY = ImageSY($pic2);

            //Udregner hvor billedet skal placeres
                $posX = $sizeX - $lsizeX;
                $posY = $sizeY - $lsizeY;
         
                $wscale = 600 / $sizeX;
                $hscale = 450 / $sizeY;
                $scale = ($hscale < $wscale ? $hscale : $wscale);
                $nw = round($sizeX * $scale, 0);
                $nh = round($sizeY * $scale, 0);
                $dstim = imagecreatetruecolor($nw, $nh);
/**/
                print "Scale: <b>".$nw."/".$nh." (".$scale.")</b><br />";
                print "Wscale: <b>".$wscale."</b><br />";
                print "Hscale: <b>".$hscale."</b><br />";
                print "Pos: (x/y) (".$posX."/".$posY.")<br />";
                print "lsize: (x/y) (".$lsizeX."/".$lsizeY.")<br />";
/**/
                if(!imagecopyresampled($dstim, $pic1, 0, 0, 0, 0, $nw, $nh, $sizeX, $sizeY)) { $this->error_msg = "imagecopyresampled melder fejl"; return false; }

              //Inds‘ltter logo med 80% blanding
                if(!ImageCopyMerge($dstim, $pic2, $nw-$lsizeX, $nh-$lsizeY, 0, 0, $lsizeX, $lsizeY, 100)) { $this->error_msg = "imagecopymerge melder fejl"; return false; }
                //bool imagecopymerge ( resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct )
               
            // Gem billede
                if(!ImageJPEG($dstim, $dir.$myselection."/".$name, 60)) { $this->error_msg = "imagejpeg melder fejlen: (".$dir.$myselection."/".$name.")"; return false; }
               
                        // Ryd op (inkl. sletning af midlertidig fil)
                            @ImageDestroy($pic1);
                            @ImageDestroy($pic2);
                            @unlink($temp_dir.$name);
                $this->insert();
            return true;
          }
        }//ends the function file_upload

        function insert() {
            $myselection = $this->myselection;
            $myselection = $this->myselection;
            $name = $this->name;
            mysql_connect('localhost', 'bruger', 'kode', 'db');
            mysql_select_db('db');
            mysql_query("INSERT INTO snm_galleri (galleri, billede)VALUES('".$myselection."','".$myselection."/".$name."')");
                echo "<script language='Javascript'>
                alert ('Billedet er uploadet!')
                </script>";
                echo "<script> location = 'admin_billeder.php' </script>";
        }//ends the function insert
    } //ends the class Upload
?>
Avatar billede Slettet bruger
13. september 2006 - 15:03 #61
et lille svar ;D
Avatar billede Slettet bruger
13. september 2006 - 15:03 #62
ups svar
Avatar billede s0mmer Nybegynder
13. september 2006 - 17:43 #63
jeg takker mange gange -> utrolig god hjælp fra coldgate
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