Avatar billede cardinale Nybegynder
23. juli 2004 - 22:06 Der er 6 kommentarer og
1 løsning

Upload og resize af billeder i php

Vil lave en funktion der uploader et billede - og samtidig automatisk genererer en thumbnail, og samtidig skriver sig ind i min mysql database. Hvordan kan det gøres. Nogen der har noget færdig kode der bare skal rettes til?
Avatar billede krydset Nybegynder
23. juli 2004 - 22:33 #1
Jeps det er her

<?php
//Denne side får data fra opret_film_form.php
//Tjekker om brugeren har trykket på knappen
if(isset($_POST['make_movie'])) {
    //Her sættes variabler
    $head_cat = $_POST['head_category'];
    $titel = $_POST['title'];
    $lyd = $_POST['sound'];
    $cat = $_POST['category'];
    $length = $_POST['length'];
    $aar = $_POST['year'];
    $lang = $_POST['lang'];
    $sub = $_POST['sub'];
    $info = $_POST['about'];
    $cover = $_FILES['cover']['name'];
    $date = time();
    //Her sættes tilladte filtyper ved upload af cover
    $allow_files = array("jpg", "gif", "jpeg");
    //Tjek om felter er tomme
    if(!empty($_POST['title']) || !empty($_POST['length'])) {
        //Tjek om minutter indtastes i tal og ikke bogstaver
        if(ereg("([0-9])", $_POST['length'])) {
            //Tjekkes om $_FILES['cover']['name'] Indeholder noget hvis ja skal der ligges billednavn i database
            if(!empty($_FILES['cover']['name'])) {
                //Her hentes hvilken extension eller filtype som filen er
                $path = pathinfo($_FILES['cover']['name']);
                $ext = $path['extension'];
                //Her tjekkes om der filtypen er tilladt(filtyper sættes i længere oppe)
                if(in_array($ext, $allow_files)) {
                    //Her indsættes der i databasen
                    mysql_query("INSERT INTO dvd (title, sound_id, head_cat_id, cat_id, length, aar, lang_id, sub_id, info, pic, date) VALUES('$titel','$lyd','$head_cat','$cat','$length','$aar','$lang','$sub','$info','$cover','$date')") or die(mysql_error());
                    //Sætter id til det sidste indsatte id i databasen
                    $id = mysql_insert_id();
                    $fra = $_FILES['cover']['tmp_name'];
                    $til = "".$id."_".$_FILES['cover']['name']."";
                    //resize billede
                    header("content: image/jpeg");
                    $pic = $_FILES['cover']['tmp_name'];
                    $src_img = imagecreatefromjpeg($pic);
                    $size = getimagesize($pic);
                    $src_width = $size[0];
                    $src_height = $size[1];
                    $width = $size[0] / 2;
                    $height = $size[1] / 2;
                    $dest_imag = imagecreatetruecolor($width, $height);
                    imagecopyresampled($dest_imag, $src_img, 0, 0, 0, 0, $width, $height, $src_width, $src_height);
                    imagejpeg($dest_imag, "covers/thumb_$til");
                    //Flyt den uploadede fil
                    move_uploaded_file($fra, "covers/".$til);
                    //opdatere billedesti i databasen
                    mysql_query("UPDATE dvd SET pic = '$til', pic_thumb ='thumb_$til' WHERE id = '$id'") or die(mysql_error());
                    echo $id;
                } else {
                    //Udskriv fejl
                    echo "<div style='color:red;'>Filtype ikke tilladt</div>";
                }
            } else {
                //hvis $_FILES['cover']['name'] ikke indeholder noget skal billednavn i databasen sættes til NULL i databasen
                mysql_query("INSERT INTO film (titel, genre, laengde, sprog, lyd_1, lyd_2, lyd_3, sub_1, sub_2, sub_3, aar, cover_sti, handling) VALUES('$titel','$genre','$laengde','$sprog','$lyd_1','$lyd_2','$lyd_3','$sub_1','$sub_2','$sub_3','$aar','NULL','$handling')") or die(mysql_error());
            }
        } else {
            //Udskriv fejl
            echo "<div style='color:red;'>Du har ikke indtastet minutter i et rigtigt format eks 123</div>";
        }
    } else {
        //Udskriv fejl
        echo "<div style='color:red;'>Du mangler at udfylde et felt. Gå <a href='java script:history.go(-1)'>tilbage</a> og udfyld det der mangler</div>";
    }
}else {
    //Udskriv fejl
    echo "<div style='color:red;'>Du kommer ikke fra den rigtige side</div>";
}       
//Slut script
?>

Det kan du prøve at kigge på.
Avatar billede cardinale Nybegynder
23. juli 2004 - 22:41 #2
Har du et mere optimeret script? Der mangler også en form ikke?
Avatar billede krydset Nybegynder
23. juli 2004 - 22:42 #3
her er formen. troede du selv kunne lave det

Mere optimeret hvad mener du med det ??


<form action="?link=make_movie.php" enctype="multipart/form-data" method="POST">
<table width="100%" border="0">
<tr>
    <td align="center">Opret film.<br>Her kan du oprette en film i systemet.<br>Udfyld de forskellige felter og tryk på opret</td>
</tr>

<tr>
    <td>Titel</td>
</tr>
<tr>
    <td><input type="text" name="title" class="textfield_norm"></td>
</tr>
<tr>
    <td>Lyd</td>
</tr>
<tr>
    <td>
    <select name="sound">
    <?php
    //Henter lydformater fra databasen
    $sound_res = mysql_query("SELECT * FROM sounds ORDER BY sound");
    while($sound_row = mysql_fetch_array($sound_res)) {
        ?>
        <option value="<?php echo $sound_row[sounds_id]; ?>"><?php echo $sound_row['sound']; ?></option>
        <?php
    }
    ?>
    </select>
    </td>
</tr>
<tr>
    <td>Hovedkategori</td>
</tr>
<tr>
    <td>
    <select name="head_category">
    <?php
    //Henter typerne fra database
    $head_category_res = mysql_query("SELECT * FROM head_category ORDER BY head_category") or die(mysql_error());
    while($head_category_row = mysql_fetch_array($head_category_res)) {
        ?>
        <option value="<?PHP echo $head_category_row['head_category_id']; ?>"><?php echo $head_category_row['head_category']; ?></option>
        <?php
    }
    ?>
    </select>
    </td>
</tr>
<tr>
    <td>Kategori</td>
</tr>
<tr>
    <td>
    <select name="category">
    <?php
    //Henter lydformater fra databasen
    $cat_res = mysql_query("SELECT * FROM category ORDER BY cat");
    while($cat_row = mysql_fetch_array($cat_res)) {
        ?>
        <option value="<?php echo $cat_row[category_id]; ?>"><?php echo ucfirst($cat_row['cat']); ?></option>
        <?php
    }
    ?>
    </select>
    </td>
</tr>
<tr>
    <td>Længde</td>
</tr>
<tr>
    <td><input type="text" name="length" class="textfield_norm"> (i min.)</td>
</tr>
<tr>
    <td>År</td>
</tr>
<tr>
    <td>
    <select name="year">
    <?php
    //Udskriver årene
    for($aar = 1900; $aar < 2021; $aar ++) {
        ?>
        <option value="<?PHP echo $aar; ?>"><?php echo $aar; ?></option>
        <?php
    }
    ?>
    </select>
    </td>
</tr>
<tr>
    <td>Sprog (hoved sprog)</td>
</tr>
<tr>
    <td>
    <select name="lang">
    <?php
    //Henter sprog fra databasen
    $lang_res = mysql_query("SELECT * FROM langs") or die(mysql_error());
    while ($lang_row = mysql_fetch_array($lang_res)) {
        ?>
        <option value="<?PHP echo $lang_row[langs_id]; ?>"><?PHP echo ucfirst($lang_row['lang']); ?></option>
        <?php
    }
    ?>
    </td>
</tr>

<tr>
    <td>Undertekst</td>
</tr>

<tr>
    <td>
    <select name="sub">
    <?php
    //henter undertekster fra database
    $sub_res = mysql_query("SELECT * FROM subs") or die(mysql_error());
    while($sub_row = mysql_fetch_array($sub_res)) {
        ?>
        <option value="<?PHP echo $sub_row['subs_id']; ?>"><?php echo $sub_row['sub']; ?></option>
        <?php
    }
    ?>
    </td>
</tr>
<tr>
    <td>Beskrivelse</td>
</tr>
<tr>
    <td><textarea name="about" rows="10" cols="45"></textarea></td>
</tr>

<tr>
    <td>Cover</td>
</tr>

<tr>
    <td><input type="file" name="cover" class="textfield_norm"></td>
</tr>
<tr>
    <td><input type="submit" name="make_movie" value="Opret film" class="submit_norm"></td>
</tr>
       
       
</table>
</form>
Avatar billede krydset Nybegynder
24. juli 2004 - 22:04 #4
fandt du ud af det ?
Avatar billede cardinale Nybegynder
24. juli 2004 - 22:57 #5
Jeps - men brugte ikke dit - smid et svar dog...
Avatar billede krydset Nybegynder
24. juli 2004 - 23:45 #6
nej skal ikke have noget for noget du ikke kunne bruge :-D
Nup dem selv :-P
Avatar billede cardinale Nybegynder
25. juli 2004 - 01:32 #7
...
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