Avatar billede rhandersen Nybegynder
08. februar 2005 - 15:28 Der er 10 kommentarer og
1 løsning

PHP upload

Hej Alle

Jeg har et uploadscript som skal erstatte et billede med et andet, men mit problem er at den bare melder blank skærm når man har udfyldt formen og sagt send. Den har ikke udskiftet det eller noget som helst.

Her kommer koden:

<?
include("dbcon.php");
$id = $_GET['ID'];
$ex = $_GET['ex'];
$opret = $_POST['opret'];
if($opret == "toogto"){
if($ex == "0"){
$uploaddir = "inc/galleri/full/"; // din mappe til billeder
$thumbnail_dir = "inc/galleri/thumb/"; // din mappe til thumbnails
function tjektype($type) {
    $tilladt = array('image/x-png', 'image/png', 'image/pjpeg', 'image/jpeg');
    if(!in_array($type, $tilladt)) {
        return false;
    }else{
        return true;
    }
}

function tjekfilnavn($filnavn) {
    $i = 0;
    $ext = strrchr($filnavn, '.');
    $navn = substr($filnavn, 0, -strlen($ext));
    while (is_file($filnavn)) {
        $i++;
        $filnavn = $navn . "_" . sprintf("%03u", $i) . $ext;
    }
    return $filnavn;
}

if (isset($_POST['submit']) && $_POST['submit'] == "Upload" && $_POST['rettype'] == "ny") {
    $billede = $_FILES['nyhedsBillede']['name'];
    $billede = strtolower($billede);// ændre alt til små bogstaver
    $type = strrchr($billede, ".");// For at finde filtypen til tjek af jpeg kontra jpg 
    $dest = $uploaddir . $billede;// Stien til det store billede
    $dest = tjekfilnavn($dest);
    $dato_array = getdate();
    $oprettelsesdato = $dato_array['mday'] . "-" . $dato_array['mon'] . "-" . $dato_array['year'];
$dato = $dato_array['seconds'] . "-" .$dato_array['minutes'] . "-" .$dato_array['hours'] . "-" .$dato_array['mday'] . "-" . $dato_array['mon'] . "-" . $dato_array['year'];
    $source = $_FILES['nyhedsBillede']['tmp_name'];
    if (is_uploaded_file($source)) {
        if (tjektype($_FILES['nyhedsBillede']['type'])) {
            if (move_uploaded_file($source, $dest)) {
              list($width, $height) = getimagesize($dest);
                $new_width = 450;
                $krympefaktor = $new_width/$width;
                $new_height = round($height * $krympefaktor);
                $destinationImage = imagecreatetruecolor($new_width, $new_height);
                if ($type == ".jpeg" || $type == ".jpg") {
                    $sourceImage = imagecreatefromjpeg($dest);
                    imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, imagesx($sourceImage), imagesy($sourceImage));
                    $dest = $uploaddir . $dato . "_fuld" . $type;
                    imagejpeg($destinationImage, $dest);
                } elseif ($type == ".png") {
                    $sourceImage = imagecreatefrompng($dest);
                    imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, imagesx($sourceImage), imagesy($sourceImage));
                    imagepng($destinationImage, $dest);
                } 
                if($height <= $width){
                    $new_width = 100;
                } else {
                    $new_width = 82;
                }
                $krympefaktor = $new_width/$width;
                $new_height = round($height * $krympefaktor);
                $destinationImage = imagecreatetruecolor($new_width, $new_height);
                if ($type == ".jpeg" || $type == ".jpg") {
                    $sourceImage = imagecreatefromjpeg($dest);
                    imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, imagesx($sourceImage), imagesy($sourceImage));
                    $thumbnail = $thumbnail_dir.basename($dato, $type)."_thumb".$type;// Stien til thumbnail
                    imagejpeg($destinationImage, $thumbnail);
                } elseif ($type == ".png") {
                    $sourceImage = imagecreatefrompng($dest);
                    imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, imagesx($sourceImage), imagesy($sourceImage));
                    $thumbnail = $thumbnail_dir.basename($dato, $type)."_thumb".$type;
                    imagepng($destinationImage, $thumbnail);
                }                   
            }
$select = "SELECT * FROM galleri WHERE ID = '$id'";
$selected = mysql_query($select) or die(mysql_error());
while($gal = mysql_fect_array($selected)){
unlink("/home/web/web36045/adm/" . $gal['thumbnail']);
unlink("/home/web/web36045/adm/" . $gal['dest']);
}
              mysql_query("UPDATE galleri SET dest='$dest' and thumbnail = '$thumbnail' WHERE ID = $id") or die(mysql_error());
                mysql_close();
                $besked = "<span class=menu><br><br>Tekst og billede gemt</span>";
        } else {
                $besked = "<span class=menu><br><br>Der opstod en ukendt fejl</span><br><a href=\"index.php?ID=" . $id . "&page=galleriskift&ex=0\" class=\"linkS\">Prøv igen</a>";
        }
    } else {
            $besked = "<span class=menu><br><br>Du prøvede at gemme et billedeformat som ikke er tilladt. Du kan gemme billeder i JPEG og PNG formaterne.</span><br><a href=\"index.php?ID=" . $id . "&page=galleriskift&ex=0\" class=\"linkS\">Skift</a>Prøv igen</a>";
    }
echo $besked;
} elseif($ex == "1") {
$thumbnail_dir = "inc/galleri/ekstra/"; // din mappe til thumbnails
function tjektype($type) {
    $tilladt = array('image/x-png', 'image/png', 'image/pjpeg', 'image/jpeg');
    if(!in_array($type, $tilladt)) {
        return false;
    }else{
        return true;
    }
}

function tjekfilnavn($filnavn) {
    $i = 0;
    $ext = strrchr($filnavn, '.');
    $navn = substr($filnavn, 0, -strlen($ext));
    while (is_file($filnavn)) {
        $i++;
        $filnavn = $navn . "_" . sprintf("%03u", $i) . $ext;
    }
    return $filnavn;
}

if (isset($_POST['submit']) && $_POST['submit'] == "Upload" && $_POST['rettype'] == "ny") {
    $billede = $_FILES['nyhedsBillede']['name'];
    $billede = strtolower($billede);// ændre alt til små bogstaver
    $type = strrchr($billede, ".");// For at finde filtypen til tjek af jpeg kontra jpg 
    $dest = $uploaddir . $billede;// Stien til det store billede
    $dest = tjekfilnavn($dest);
    $bygaar = $_POST['aar'];
    $bynavn = $_POST['bynavn'];
    $bygherre = $_POST['bygherre'];
    $gade = $_POST['gade'];
    $dato_array = getdate();
    $oprettelsesdato = $dato_array['mday'] . "-" . $dato_array['mon'] . "-" . $dato_array['year'];
$dato = $dato_array['seconds'] . "-" .$dato_array['minutes'] . "-" .$dato_array['hours'] . "-" .$dato_array['mday'] . "-" . $dato_array['mon'] . "-" . $dato_array['year'];
    $source = $_FILES['nyhedsBillede']['tmp_name'];
    if (is_uploaded_file($source)) {
        if (tjektype($_FILES['nyhedsBillede']['type'])) {
            if (move_uploaded_file($source, $dest)) {
                list($width, $height) = getimagesize($dest);
                if($height <= $width){
                    $new_width = 100;
                } else {
                    $new_width = 82;
                }
                $krympefaktor = $new_width/$width;
                $new_height = round($height * $krympefaktor);
                $destinationImage = imagecreatetruecolor($new_width, $new_height);
                if ($type == ".jpeg" || $type == ".jpg") {
                    $sourceImage = imagecreatefromjpeg($dest);
                    imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, imagesx($sourceImage), imagesy($sourceImage));
                    $thumbnail = $thumbnail_dir.basename($dato, $type)."_1".$type;// Stien til thumbnail
                    imagejpeg($destinationImage, $thumbnail);
                } elseif ($type == ".png") {
                    $sourceImage = imagecreatefrompng($dest);
                    imagecopyresampled($destinationImage, $sourceImage, 0, 0, 0, 0, $new_width, $new_height, imagesx($sourceImage), imagesy($sourceImage));
                    $thumbnail = $thumbnail_dir.basename($dato, $type)."_extra1".$type;
                    imagepng($destinationImage, $thumbnail);
                }                   
            }
$select = "SELECT * FROM galleriextra WHERE ID = '$id'";
$selected = mysql_query($select) or die(mysql_error());
while($gal = mysql_fect_array($selected)){
unlink("/home/web/web36045/adm/" . $extra['extra']);
}
              mysql_query("UPDATE galleriextra SET extra = '$thumbnail' WHERE ID = $id") or die(mysql_error());
                mysql_close();
                $besked = "<span class=menu><br><br>Tekst og billede gemt</span>";
        } else {
                $besked = "<span class=menu><br><br>Der opstod en ukendt fejl</span><br><a href=\"index.php?ID=" . $id . "&page=galleriskift&ex=1\" class=\"linkS\">Prøv igen</a>";
        }
    } else {
            $besked = "<span class=menu><br><br>Du prøvede at gemme et billedeformat som ikke er tilladt. Du kan gemme billeder i JPEG og PNG formaterne.</span><br><a href=\"index.php?ID=" . $id . "&page=galleriskift&ex=1\" class=\"linkS\">Skift</a>Prøv igen</a>";
    }
}
echo $besked;
                }

  } else {
  echo "Der er opstået en fejl, kontakt webmaster";
  }
} else {
    ?>
    <div style="text-align:center" class="normtext"><br><br><br><br><br><form name="admin"  method="post" action="<? echo "index.php?page=gallery&galleripage=skift&ex=$ex&ID=$id"; ?>" enctype="multipart/form-data">
    <table><tr>
    <td><span class="normtext">Billede:</span></td><td colspan="3"><input name="nyhedsBillede" type="file" size="20"></td>
    </tr>
    <tr>
    <td><input name="opret" type="hidden" value="toogto"><input name="submit" type="submit" value="Upload"></td>
    </tr></table></form>
    <?
}
?>

Kan i finde fejlen er det fint:D

Mvh Rasmus
Avatar billede rhandersen Nybegynder
08. februar 2005 - 15:34 #1
Jeg kan ikke lige se hvorhenne der skulle være en fejl så den overhovedet ikke smider noget op:S
Avatar billede lillebror Nybegynder
08. februar 2005 - 15:37 #2
Har du prøvet at sætte display_error = on i php.ini for at se om der eventuelt kommer en fejl?
Avatar billede rhandersen Nybegynder
08. februar 2005 - 15:40 #3
errors er slået til, den udfører bare ikke noget, det er problemet
Avatar billede apache999 Nybegynder
08. februar 2005 - 15:44 #4
Tjaa, der er godt nok meget kode, men hvis problemet er, at den ikke sletter det gamle billede, som den skal, kan forklaringen være, at du har en fejl i koden der, hvor det skal slettes:

while($gal = mysql_fect_array($selected)){
unlink("/home/web/web36045/adm/" . $gal['thumbnail']);
unlink("/home/web/web36045/adm/" . $gal['dest']);
}

Det hedder mysql_fetch_array og ikke mysql_fect_array.

Ellers har du vel husket at tjekke, at scriptet har skriverettigheder til den mappe, billedet skal uploades til?
Avatar billede lillebror Nybegynder
08. februar 2005 - 15:46 #5
Hvis errors er slået til, så burde den da melde fejl når der er sådan en typo?
Avatar billede rhandersen Nybegynder
08. februar 2005 - 16:13 #6
Det er ikke det der er fejlen, men du har ret, jeg har skrevet forkert:)
Avatar billede apache999 Nybegynder
08. februar 2005 - 16:24 #7
De kald, du har til imagecreatefromjpeg hhv imagecreatefrompng sker til $dest, som på det tidspunkt er en streng og ikke en billed-ressource. De skal da vist snarere være til $source, som på det tidspunkt henviser til en billedressource, nemlig $_FILES['nyhedsBillede']['tmp_name'].

tror jeg nok ... ;)
Avatar billede rhandersen Nybegynder
08. februar 2005 - 16:25 #8
der er ikke noget i vejen med upload, det virker. Det er nærmere en forkert if vi skal kigge efter
Avatar billede rhandersen Nybegynder
10. februar 2005 - 12:25 #9
Jeg har fundet af det, lad os dele pointene
Avatar billede apache999 Nybegynder
10. februar 2005 - 12:35 #10
naaa, jeg hjalp jo ikke til den faktiske løsning.

Ellers tak.
Avatar billede rhandersen Nybegynder
26. marts 2005 - 11:23 #11
Jeg fandt ud af det
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