Avatar billede tobrukDk Novice
14. december 2011 - 08:14 Der er 8 kommentarer og
1 løsning

Upload billede til localhost

Hej

Jeg er lige nu i gang med en skole opgave og det er sådan at vi skal upload billeder til CV, jeg kun godt tænke mig at den vise billede op på mysql server :) og jeg kun godt tænke mig at vide hvordan jeg gøre det på en måde så det bliver godt eller hvad man siger.. :)


<?php
$filnavn=$_FILES['file']['name'];
$tmp_navn=$_FILES['file']['tmp_name'];
//echo "du har uploadet filen: $filnavn. Midlertidigt filnavn: $tmp_navn";

move_uploaded_file($tmp_navn, "billeder/$filnavn");

echo "<img src='billeder/$filnavn' />";



?>


efter echo vil jeg gerne have at den ligger sig ind i mappen "billeder" men samme tid også vise den op på mysql databasen. :)

Det vil være utroligt lækkert hvis du ikke skrive koden for mig fordi så læret jeg også noget af det her! :D eller forklare mig hvordan jeg skal gøre det på en måde som jeg forstår det :)



altså så vidt jeg har forstår med det hele så skal den hedde noget i den her still :)


if(isset($_POST["opret_ny"]))
{
    $tid = $_POST['tid'];
    $overskriftet = $_POST['overskriftet'];
    $tekst = $_POST['tekst'];
    $sted = $_POST['sted'];

    $query = "INSERT INTO cv_uddannelse (overskriftet, tid, tekst,sted) VALUES ('$overskriftet', '$tid', '$tekst','$sted')";
    mysql_query($query) or die (mysql_error());


    //Genstart siden
    header('location:cv_opret.php');
}


så skal jeg bare lave en Variable mere til billedet :) eller hvad?

Håber du kan hjælp mig ellers må du lige sig til hvis jeg gøre noget forkert :) Fordi jeg vil nemlig gerne være en god programmer så jeg også kan hjælp andre herinde :)

MVH Jesper
(Tobrukdk)
Avatar billede inteeeL Nybegynder
14. december 2011 - 10:12 #1
Hej Jesper.

Du skal selvfølgelig blot have sat variablen $billede = $_FILES['fil'].

Lige en lille kommentar til den måde, du håndtere data, der skal indsættes i databasen. Som jeg kan se, har du ingen validering af POST-dataene, hvilket er at løbe en risiko. Det er selvfølgelig noget andet, når det er dig selv, der skal bruge scriptet - men mere i fremtiden. Det ville være godt at gøre det til en vane, at escape stringe, så du slipper for SQL-injection. Der vil funktioner som mysql_real_escape_string( $string) og stripslashes( $string) være utrolig brugbare.

Det måske noget, du kan vente lidt med, så du i stedet lærer det grundlæggende.
Avatar billede tobrukDk Novice
14. december 2011 - 14:50 #2
Jeps nemlig :)


<?php
$filnavn=$_FILES['file']['name'];
$tmp_navn=$_FILES['file']['tmp_name'];
$billede=$_FILES['fil'];
//echo "du har uploadet filen: $filnavn. Midlertidigt filnavn: $tmp_navn";

move_uploaded_file($tmp_navn, "billeder/$filnavn");

echo "<img src='billeder/$filnavn' />";



?>
Avatar billede tobrukDk Novice
14. december 2011 - 14:50 #3
Hvad skal jeg mere gøre på det?
Avatar billede inteeeL Nybegynder
14. december 2011 - 15:44 #4
Hej Jesper.

Jeg har prøvet at sammensætte en kode til dig, som bør klare både upload-delen og database-delen. Læg mærke til, at jeg har oprettet en funktion til upload-delen, det er mere for overskuelighedens skyld. Samtid er der medtaget valideringslinjer, som jeg håber du vil kunne forstå efter at summe lidt over det (læs kommentarerne).

Læg mærke til at upload-delen er på engelsk - det samme gælder i query-stringen. Så der skal du lige tilpasse det til dit system.


function Upload() {
    global $file;
    $mode == 0777;
    $error = 'Ukendt fejl';
    $new_file = $_FILES[ 'fil']; // Her henter vi billedet fra upload-dataen
    $file_type = strtolower(end(explode(".", $new_file['name']))); // Henter filtypen
    $allow_types = array('jpg', 'jpeg', 'gif', 'png'); // Tilladte filtyper
    $target_path = 'billeder/'; //Den mappe, vi vil uploade filen i
    if ( $new_file[ 'name'] == '') { // Hvis der ikke er valgt en fil
        $error = 'Du har glemt at vælge en fil';
    }
    elseif ( $new_file[ 'error'] > 0) { //Tjekker for fejl
        if ( $new_file[ 'error'] > 2) {
            $error = 'Fejl: '.$new_file[ 'error'];
        }
        else {
            $error = 'Filen er for stor'; // Der kan du indsætte et hidden input i din form, som kontrollere størrelsen af filen
        }
    }
    elseif( !in_array( $file_type, $allow_types)) { //Tjekker om der valgt en tilladt filtype
        $error = 'Filtypen må kun være jpg, jpeg, gif eller png';
    }
    elseif ( !is_uploaded_file( $new_file[ 'tmp_name'])) { //Tjekker om filen er i upload-dataen
        $error = 'Kunne ikke finde filen i upload-dataen, prøv igen';
    }
    else {
        $target_fil = basename( $new_file['name']); //Retunere navnet som skal bruge til vores sti senere
        if ( move_uploaded_file( $new_file[ 'tmp_name'], $target_path.$new_file[ 'name'])) { //Uploader billedet
            $error = '';
            $file = $target_path.$new_file[ 'name']; //Dette er vores filnavn + stien
        }
        else {
            $error = 'Kunne ikke gemme filen, prøv igen senere';
        }
    }
    return $error;
}

// Denne funktion bruge til escape stringen for at undgå SQL-injection
function clean( $str) {
    $str = @trim( $str);
    if(get_magic_quotes_gpc()) {
        $str = stripslashes( $str);
    }
    $str = mysql_real_escape_string( $str);
   
    return $str;
    }
}

if( isset( $_POST[ 'opret_ny'])) {
    $file = '';
    $tid = clean( $_POST['tid']);
    $overskrift = clean( $_POST['overskrift']);
    $tekst = clean( $_POST['tekst']);
    $sted = clean( $_POST['sted']);
    $tjek_upload = Upload();
    if( !$tid) {
        echo 'Du har glemt at indtaste tiden';
    }
    elseif( !$overskrift) {
        echo 'Du har glemt at indtaste en overskrift';
    }
    elseif( !$tekst) {
        echo 'Du har glemt at skrive en tekst';
    }
    elseif( !$sted) {
        echo 'Du har glemt at indtaste sted';
    }
    elseif( $tjek_billede != '') {
        echo $tjek_billede;
    }
    else {
        $query = "INSERT INTO cv_uddannelse (overskriftet, tid, tekst,sted, fil) VALUES ('$overskriftet', '$tid', '$tekst','$sted', '$file')";
        if( mysql_query($query)) {
            echo 'Fuldført';
        }
        else {
            die( mysql_error());
        }
    }
}
Avatar billede inteeeL Nybegynder
14. december 2011 - 15:44 #5
PS. det er ikke testet..

Mvh,
Haris.
Avatar billede tobrukDk Novice
14. december 2011 - 23:49 #6
Tak for svar prøve kigge på det i morgen :D
Avatar billede tobrukDk Novice
18. december 2011 - 19:43 #7
okay min lærer sagde at jeg ikke skulle bruge så meget når jeg er ny til php næsten :D
Avatar billede inteeeL Nybegynder
18. december 2011 - 19:56 #8
Jeg kendte ikke dit niveau på forhånd, så det har jeg ikke taget forbehold for. Men selvfølgelig skal du ikke bruge det, hvis det niveaumæssigt ligger for højt. :-)
Avatar billede tobrukDk Novice
18. december 2011 - 23:12 #9
ja nemlig. :) men du få stadig noget for det at du vil hjælp mig :D
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