Avatar billede dmy Nybegynder
19. maj 2009 - 18:46 Der er 13 kommentarer

Ekstra til min kode

Jeg har denne billedeupload med resize og thumb, men skal have dette til at gøre sådan at jeg har mulgihederne:

[li]Uploade alle 4 billeder samt tekst[/li]
[li]tekst, undlade upload af 4 fotos[/li]
[li]tekst, kun uploade f.eks. 1 foto.[/li]
_________________________________________________________________

Min billedeupload function:

<?php
function newImage($file, $dir, $image, $thumb)
{
    $fejl = null;
    $newfile = $_FILES[$file]['name'];
   
    $illegalChars = array('æ','Æ','ø','Ø','å', 'Å');
    $legalChars = array('ae','AE','oe','OE','aa','AA');
   
    $newfile = str_replace($illegalChars, $legalChars, $newfile);
   
    $imgTypes = array('jpg', 'gif', 'jpeg', 'png');
   
    #get flleeextension
    $ext = strtolower(array_pop(explode(".", $newfile)));
   
    #get filesize
    $size = round($_FILES[$file]['size']/1024, 1);
   
    if(in_array($ext, $imgTypes))
    {
        if($size < 10000)
        {
            if(!is_file($dir.'/'.$newfile))
            {
                if(move_uploaded_file($_FILES[$file]['tmp_name'], $dir.'/'.$newfile))
                {
                    #create thumb version
                    if(imageResize($dir.'/'.$newfile, $thumb.'/'.$newfile, 224, 149))
                    {
                        //echo 'En thumbnail er lavet<br /><br />';//thumb er lavet
                    } else {
                    unlink($dir.'/'.$newfile);
                    return false;
                        //fejl meddelelse
                    }
                   
                    #create bigger thumb version and owerwrite the original image
                    imageResize($dir.'/'.$newfile, $image.'/'.$newfile, 600, 400);
                   
                    return $newfile;

                } else {
                    //return 'Filen kunne ikke uploades';
                    return false;
                }
            }else{
                //return 'Filen eksisterer allerede';
                return false;
            }
        }else{
            //return 'Filen fylder for meget (maximum 10 MB)';
            return false;
        }
    }else{
        //return 'Fejl! Tilladte filtyper: JPG, GIF og PNG';
        return false;
    }
   
}

function imageResize( $filename, $newfilename, $maxw, $maxh, $quality=70 )
{
    $ext = strtolower(array_pop(explode(".", $filename)));
   
    switch($ext)
    {
        case 'jpeg':
        case 'jpe':
        case 'jpg':
            $srcim = imagecreatefromjpeg( $filename );
        break;
        case 'gif':
            $srcim = imagecreatefromgif( $filename );
        break;
        case 'png':
            $srcim = imagecreatefrompng( $filename );
        break;
        default:
            return false;
    }
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
   
    if($oh > $maxh || $ow > $maxw)
    {
        $wscale = $maxw / $ow;
        $hscale = ($maxh / $oh);
       
        //$scale = min( $hscale, $wscale ); //hvis billedet skal scaleres efter enten højde eller bredde
        //$scale = $hscale; //hvis billedet kun skal scaleres efter højde
        $scale = $wscale; //hvis billedet kun skal scaleres efter bredde

        $nw = round( $ow * $scale, 0 );
        $nh = round( $oh * $scale, 0 );
    }else{
        $nh = $oh;
        $nw = $ow;
    }
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
   
    switch($ext)
    {
        case 'jpeg':
        case 'jpe':
        case 'jpg':
            imagejpeg( $dstim, $newfilename, $quality );
        break;
        case 'gif':
            imagegif( $dstim );
        break;
        case 'png':
            imagesavealpha($dstim, true);
            $trans_colour = imagecolorallocatealpha($dstim, 0, 0, 0, 127);
            imagefill($dstim, 0, 0, $trans_colour);
            $png_q = floor( abs( $quality / 10 - 9.9 ) );
            imagepng( $dstim, $newfilename, $png_q );
        break;
        default:
            return false;
    }
   
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return true;
    }

?>
_______________________________________________________________


Min insert into:

<?php
if (isset($_POST['submit_bil']))
    {
        $filnavn = newImage("upload", "../pic/biler/original", "../pic/biler/image", "../pic/biler/thumb");
        $filnavn2 = newImage("upload2", "../pic/biler/original", "../pic/biler/image", "../pic/biler/thumb");
        $filnavn3 = newImage("upload3", "../pic/biler/original", "../pic/biler/image", "../pic/biler/thumb");
        $filnavn4 = newImage("upload4", "../pic/biler/original", "../pic/biler/image", "../pic/biler/thumb");

        if ($filnavn && $filnavn2 && $filnavn3 && $filnavn4)
        {
            $overskrift=$_POST["overskrift"];
            $maerke=$_POST["maerke"];
            $aargang=$_POST["aargang"];
            $model=$_POST["model"];
            $farve=$_POST["farve"];
            $km=$_POST["km"];
            $pris=$_POST["pris"];
       
            mysql_query("INSERT INTO biler (overskrift, maerke, aargang, model, farve, km, pris, image, image2, image3, image4)
           
            VALUES
           
('".$overskrift."','".$maerke."','".$aargang."','".$model."','".$farve."','".$km."','".$pris."','".$filnavn."','".$filnavn2."','".$filnavn3."','".$filnavn4."')")
            or die(mysql_error());
               
               
                echo 'Billedet blev gemt <br />';
        }
        else
        {
            echo 'fejl';
        }
    }
?>
                 
<form  method="post" enctype="multipart/form-data" action=""  onSubmit="return ValidateForm(this)" >
    <table width="400" height="205" border="0" cellpadding="" cellspacing="1">
  <tr>
            <td>Overskrift</td>
              <td><input name="overskrift" type="text" id="overskrift" /></td>
        </tr>
        <tr>
            <td>Forsidebillede</td>
            <td><input type="file" name="upload" /></td>
   
        </tr>
        <tr>
            <td>Billede 2</td>
            <td><input type="file" name="upload2" /></td>
   
        </tr>
        <tr>
            <td>Billede 3</td>
            <td><input type="file" name="upload3" /></td>
   
        </tr>
        <tr>
            <td>Billede 4</td>
            <td><input type="file" name="upload4" /></td>
   
        </tr>
        <tr>
              <td>Mærke</td>   
            <td><input name="maerke" type="text" id="maerke" /></td>
        </tr>
        <tr>
            <td>Årgang</td>
            <td><input name="aargang" type="text" id="aargang" /></td>
        </tr>
        <tr>
            <td>Model</td>
            <td><input name="model" type="text" id="model" /></td>
        </tr>
        <tr>
            <td>Farve</td>     
            <td><input name="farve" type="text" id="farve" /></td>
        </tr>
        <tr>
            <td>Km</td>
            <td><input name="km" type="text" id="km" /></td>
        </tr>
        <tr>
            <td>Pris</td>
            <td><input name="pris" type="text" id="pris" /></td>
        </tr>
        <tr>
              <td><input type="submit" name="submit_bil" value="Tilføj nyt" /></td>
        </tr>
    </table>
    </form>
Avatar billede dmy Nybegynder
19. maj 2009 - 18:48 #1
Ignorer lige mit forsøg på punktopstilling hehe

Uploade alle 4 billeder samt tekst
tekst, undlade upload af 4 fotos
tekst, kun uploade f.eks. 1 foto
Avatar billede majbom Novice
19. maj 2009 - 19:21 #2
den skal indsætte teksten og uploade de billeder der nu engang er, hvadenten det er 0, 1, 2, 3 eller 4?
Avatar billede dmy Nybegynder
20. maj 2009 - 08:25 #3
Ja lige præcis, lige nu skal man uploade alle 4 billeder, før den gemmer.
Avatar billede majbom Novice
20. maj 2009 - 08:49 #4
hvis du nu navngiver dine input file som et array (upload[]) og løber det array igennem på siden hvor du smider i databasen. og for hvert felt der er noget i, uploader den billedet?
Avatar billede dmy Nybegynder
20. maj 2009 - 10:41 #5
Det forstår jeg intet af, jeg skal kunne se i kode hvordan, jeg er ikke særlig god i php men den slags her.
Avatar billede zkill Nybegynder
20. maj 2009 - 13:35 #6
altså lige som din kode ser ud, så tror jeg det blir et par steder du skal rette for at få dette til at virke..

Men gemmer du billedet i sql databasen.? eller hvad data ligger der i dem der $filnavn, $filnavn1...,$filnavn3.?
Avatar billede majbom Novice
20. maj 2009 - 13:39 #7
prøv med:

<?php
if (isset($_POST['submit_bil']))
{
    $filnavn = new array();
    for($i=0;$i>=4;$i++){
        $filnavn[$i] = newImage($i, "../pic/biler/original", "../pic/biler/image", "../pic/biler/thumb");
    }
    $overskrift=$_POST["overskrift"];
    $maerke=$_POST["maerke"];
    $aargang=$_POST["aargang"];
    $model=$_POST["model"];
    $farve=$_POST["farve"];
    $km=$_POST["km"];
    $pris=$_POST["pris"];

    mysql_query("INSERT INTO biler (overskrift, maerke, aargang, model, farve, km, pris, image, image2, image3, image4) VALUES('".$overskrift."','".$maerke."','".$aargang."','".$model."','".$farve."','".$km."','".$pris."','".$filnavn[0]."','".$filnavn[1]."','".$filnavn[2]."','".$filnavn[3]."')")or die(mysql_error());
    echo 'Billedet blev gemt <br />';
}
else
{
    echo 'fejl';
}
?>








<?php
if (isset($_POST['submit_bil']))
{
    $filnavn = new array();
    for($i=0;$i>=4;$i++){
        $filnavn[$i] = newImage($i, "../pic/biler/original", "../pic/biler/image", "../pic/biler/thumb");
    }
    $overskrift=$_POST["overskrift"];
    $maerke=$_POST["maerke"];
    $aargang=$_POST["aargang"];
    $model=$_POST["model"];
    $farve=$_POST["farve"];
    $km=$_POST["km"];
    $pris=$_POST["pris"];

    mysql_query("INSERT INTO biler (overskrift, maerke, aargang, model, farve, km, pris, image, image2, image3, image4) VALUES('".$overskrift."','".$maerke."','".$aargang."','".$model."','".$farve."','".$km."','".$pris."','".$filnavn[0]."','".$filnavn[1]."','".$filnavn[2]."','".$filnavn[3]."')")or die(mysql_error());
    echo 'Billedet blev gemt <br />';
}
else
{
    echo 'fejl';
}
?>

_______________________________________


<tr>
            <td>Forsidebillede</td>
            <td><input type="file" name="upload[]" /></td>
   
        </tr>
        <tr>
            <td>Billede 2</td>
            <td><input type="file" name="upload[]" /></td>
   
        </tr>
        <tr>
            <td>Billede 3</td>
            <td><input type="file" name="upload[]" /></td>
   
        </tr>
        <tr>
            <td>Billede 4</td>
            <td><input type="file" name="upload[]" /></td>
   
        </tr>





_____________________________________


<?php
function newImage($file, $dir, $image, $thumb)
{
    $fejl = null;
    $newfile = $_FILES[$upload[$file]]['name'];
   
    $illegalChars = array('æ','Æ','ø','Ø','å', 'Å');
    $legalChars = array('ae','AE','oe','OE','aa','AA');


______________________________________

det er ikke testet...
Avatar billede zkill Nybegynder
20. maj 2009 - 13:49 #8
arrh havde lige sovet lidt over kigget på din kode..
haha du ka os simpelt gøre sådan her..

$filnavn = newImage("upload", "../pic/biler/original", "../pic/biler/image", "../pic/biler/thumb");
        $filnavn2 = newImage("upload2", "../pic/biler/original", "../pic/biler/image", "../pic/biler/thumb");
        $filnavn3 = newImage("upload3", "../pic/biler/original", "../pic/biler/image", "../pic/biler/thumb");
        $filnavn4 = newImage("upload4", "../pic/biler/original", "../pic/biler/image", "../pic/biler/thumb");


if(!$filnavn) 
  $filnavn = "None";
if(!filnavn1)
  $filnavn1 = "None";
if(!filnavn2)
  $filnavn2 = "None";
if(!filnavn3)
  $filnavn3 = "None";


nu vil den indsætte None som filnavn..
Så skal du dog ændre der hvor den henter filnavnene fra DB og viser dem.. der skal du tjekke om filnavnet er None.

if($row['image'] != 'None')
  print image...
...
if($row['image4'] != 'None')
  print image...
Avatar billede dmy Nybegynder
23. maj 2009 - 10:51 #9
Jeg har prøvet splazz kode, men siden viser ingenting, den skriver bare

Webstedet kan ikke vise siden.
HTTP 500 
  Mest sandsynlige årsager:
Webstedet er under vedligeholdelse.
Webstedet har en programmeringsfejl.
Avatar billede majbom Novice
25. maj 2009 - 21:55 #10
mht min kode, så er det jo "rettelser" til koden i dine 3 eksisterende filer...

er det din formular-side der ikke virker?
Avatar billede dmy Nybegynder
27. maj 2009 - 09:37 #11
Nåh jeg har selv fundet en løsning, så nu virker det.

Smid et svar
Avatar billede majbom Novice
27. maj 2009 - 10:22 #12
behold du bare dine point, du har nok mere brug for dem :)
Avatar billede majbom Novice
04. november 2010 - 11:36 #13
husk at acceptere svaret :)
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



Seneste spørgsmål Seneste aktivitet
I dag 06:10 Excel åbner fil i kæmpe format Af Aske i Excel
I går 22:00 Datafordeler Af Lsk i PHP
I går 12:37 Summere beløb pr. dato Af TTA i Excel
31/1022:44 Tilslutte chassic fans Af viking69 i PC
31/1020:28 LED lysstofrør Af ErikHg i Fri debat