Avatar billede clausberg Nybegynder
22. juni 2006 - 20:22 Der er 26 kommentarer og
1 løsning

Script til upload image

Jeg er på udkig efter en script der kan uploade billeder til et bibliotek og tekst, beskrivelse og titel til en database.

Jeg kører med PHP og Mysql.

Er der nogen der har fundet noget på nettet? Eller selv ligger inde med et???
Avatar billede evers- Nybegynder
22. juni 2006 - 20:36 #1
Jeg skulle lige til at oprette en tråd med samme spørgsmål. Så jeg er med på en kigger :)
Avatar billede jakobdo Ekspert
22. juni 2006 - 21:28 #2
Avatar billede clausberg Nybegynder
22. juni 2006 - 21:41 #3
Hey igen Jakobdo>>> Ja, dette script kunne godt være et bud på det.
>>>> bliver billedet smidt ned i et bibliotek?
Avatar billede jakobdo Ekspert
22. juni 2006 - 21:55 #4
Ja, det lægges i upload diret.
Avatar billede sofr Nybegynder
26. juni 2006 - 11:05 #5
Det ser godt ud og det er nogenlunde det samme jeg er på udkig efter, men hvad hvis der skal uploades en anden type fil f.eks. en ZIP fil ?
Avatar billede jakobdo Ekspert
26. juni 2006 - 12:02 #6
Så tilføjer du:
$allowedFiles = array('jpg','zip');
Avatar billede clausberg Nybegynder
01. juli 2006 - 12:39 #7
Jakobdo>>>>> Så er jeg ved at ændre lidt på det script du forslog fra codebreaker.dk

Jeg er ved at oprette en table i mysql
id int 6 auto_inc primary
filename text 35
header varchar 35
comment varchar 100
added datetime

Ser det rigtigt ud?????
Avatar billede clausberg Nybegynder
01. juli 2006 - 12:57 #8
jeg har problemer med at connecte til min database. Jeg får en fejl der siger:
Table 'bilferie.uppic' doesn't exist

min database hedder netop bilferie, men hvorfor leder den efter en table der hedder 'bilferie.uppic' når jeg i mysql har døbt den blot "uppic" ????
Avatar billede evers- Nybegynder
01. juli 2006 - 13:12 #9
Navnet før punktum er databasen, og navnet efter punktum er tabellen :)

Altså database.tabel

Hvis den formår at connecte ordenligt, og din database hedder "bilferie" og der findes en tabel ved navn "uppic", så burde den kunne finde "bilferie.uppic" :)
Avatar billede clausberg Nybegynder
01. juli 2006 - 14:02 #10
aha... :-)

Jeg connecter med følgende fil:
<?php
mysql_connect("localhost", "bilferie", "xxx");
mysql_select_db("bilferie");
?>

jeg ved ikke om jeg connecter ordentligt for jeg får fortsat fejlen. I scriptet fra codebreaker.dk, har jeg blot ændret tabellen navn fra tbl_716418 til uppic

Og selvfølglig oprettet en table med de ovenover anførte værdier
Avatar billede jakobdo Ekspert
02. juli 2006 - 11:51 #11
Du skal rette disse 2 linier, så de passer til dit tabelnavn:
mysql_query("INSERT INTO tbl_716418(filename,header,comment,added) VALUES('".$file."','".$header."','".$comment."',NOW())") or die(mysql_error());

Og her:
$query = mysql_query('SELECT * FROM tbl_716418 ORDER BY added DESC') or die(mysql_error());
Avatar billede clausberg Nybegynder
05. juli 2006 - 21:04 #12
Interessant :-) nu virker det fint.

Jeg har dog to spørgsmål:
1) Hvis jeg nu ikke vil have vist hele scriptet i bunden, skal jeg så slette        <?php echo $output;?>

2) Hvis jeg ikke vil have vist det billede jeg netop har oploadet, hvad skal jeg så ændre på.

3) hvis jeg vil oploade 3 billeder, hvilken del skal jeg så kopiere?
Avatar billede jakobdo Ekspert
05. juli 2006 - 21:58 #13
1: Så fjerner du:
$output .= '<hr />';
$output .= highlight_file(__FILE__, true);

2: Så fjerner du:
$query = mysql_query('SELECT * FROM tbl_716418 ORDER BY added DESC') or die(mysql_error());
if(mysql_num_rows($query)>0)
{
    $output .= '<hr />';
    while($row = mysql_fetch_assoc($query))
    {
        $output .= '<div class="row">';
        $output .= '<span class="label">Picture:&nbsp;</span>';
        $output .= '<span class="formw"><img src=".'.$uploadDir . $row['filename'].'" alt="'.$row['filename'].'"></span>';
        $output .= '</div>';
        if(!empty($row['header']))
        {
            $output .= '<div class="row">';
            $output .= '<span class="label">Header:&nbsp;</span>';
            $output .= '<span class="formw">'.$row['header'].'</span>';
            $output .= '</div>';
        }
        if(!empty($row['comment']))
        {
            $output .= '<div class="row">';
            $output .= '<span class="label">Comment:&nbsp;</span>';
            $output .= '<span class="formw">'.nl2br($row['comment']).'</span>';
            $output .= '</div>';
        }
        $output .= '<div class="row">';
        $output .= '<span class="label">Added:&nbsp;</span>';
        $output .= '<span class="formw">'.$row['added'].'</span>';
        $output .= '</div>';
        $output .= '<div class="spacer">&nbsp;</div>';
    }
}

3: Så skal du have flere felter af typen: file.
$output .= '<span class="formw"><input type="file" name="myFile" /></span>';
Husk også de skal have andre navne, det er lidt mere tricky.

Men du kan jo prøve dig lidt frem, ellers må du spørge igen.

Og et svar...
Avatar billede clausberg Nybegynder
06. juli 2006 - 22:23 #14
Takker. Det prøver jeg.
Avatar billede clausberg Nybegynder
06. juli 2006 - 22:27 #15
Er det muligt at bygge en form for resize image ind i scriptet?
Avatar billede jakobdo Ekspert
07. juli 2006 - 07:54 #16
Denne virker kun på jpeg, men kan udbygges.

function resize( $filename, $newfilename, $maxw, $maxh )
{
    $srcim = imagecreatefromjpeg( $filename );
    $ow = imagesx( $srcim );
    $oh = imagesy( $srcim );
    $wscale = $maxw / $ow;
    $hscale = $maxh / $oh;
    $scale = ( $hscale < $wscale ? $hscale : $wscale );
    $nw = round( $ow * $scale, 0 );
    $nh = round( $oh * $scale, 0 );
    $dstim = imagecreatetruecolor( $nw, $nh );
    imagecopyresampled( $dstim, $srcim, 0, 0, 0, 0, $nw, $nh, $ow, $oh );
    imagejpeg( $dstim, $newfilename, 85 );
    imagedestroy( $dstim );
    imagedestroy( $srcim );
    return file_exists($newfilename);
}

Og takker for point.
Avatar billede clausberg Nybegynder
07. juli 2006 - 09:03 #17
Takker :-)
Der er vel et bestemt sted jeg skal sætte den ind - jeg har prøvet mig lidt frem, men der sker ikke meget.
Avatar billede jakobdo Ekspert
07. juli 2006 - 09:13 #18
Nogle gange kan du nøjes med at rette linien:

if(move_uploaded_file($_FILES['myFile']['tmp_name'], $curDir . $uploadDir . $file))
til:
if(resize($_FILES['myFile']['tmp_name'], $curDir . $uploadDir . $file, 400, 400))

Andre gange skal der kodes lidt mere.
Avatar billede clausberg Nybegynder
07. juli 2006 - 11:11 #19
Hvis jeg skifter de to linier ud, dur scriptet ikke - dvs. når jeg trykker på submit knappen bliver skærmen blank.

Den resize funktion du viste ovenfor, hvor skal den sættes ind. Jeg kan ikke få det til at fungere. Men det er i øvrigt et fedt script :-)
Avatar billede jakobdo Ekspert
07. juli 2006 - 19:31 #20
Det er kun en linie du skal udskifte.
Du "sletter" linien:
if(move_uploaded_file($_FILES['myFile']['tmp_name'], $curDir . $uploadDir . $file))
og indsætter:
if(resize($_FILES['myFile']['tmp_name'], $curDir . $uploadDir . $file, 400, 400))

Husk at smid function resize(...) i toppen af din kode.
Avatar billede clausberg Nybegynder
07. juli 2006 - 22:44 #21
Det dur desværre ikke.
Jeg har forsøgt at slette den ene linie og udskifte den med den anden... så bliver skærmen blank.?

Jeg har også sat function resize ind i toppen... så går scriptet også kold. Jeg har sat det ind forskellige steder. Også lige efter <?php

Jeg har brugt
function resize( $filename, $newfilename, $maxw, $maxh )
Avatar billede jakobdo Ekspert
08. juli 2006 - 09:15 #22
Må jeg se din fulde kode?
Avatar billede clausberg Nybegynder
09. juli 2006 - 12:21 #23
HA HA HA HA... jeg lavede lige en fejl, jeg knap nok tør fortælle :-) Problemet er løst. Det virker perfekt. Scriptet kan jeg varmt anbefale til andre - hvis I læser dette spørgsmål.

Tak for hjælpen Jakobdo - du skal jo nærmest have point for denne sidste hjælp.
Avatar billede clausberg Nybegynder
09. juli 2006 - 12:35 #24
Har du selv bygget videre på scriptet?

Kan man udvide scriptet til, at det er muligt for brugeren at rette i "header" og "comment"... altså i den information, som allerede er oploaded?

Eller hvis man har uploaded det forkerte billede - kan man så rette det. Jeg ved, at jeg kan rette i det hele via phpmyadmin, men de brugere, som bruger siden, skal have adgang til rettelser direkte fra hjemmesiden.
Avatar billede jakobdo Ekspert
09. juli 2006 - 16:44 #25
Scriptet er lidt lånt og lidt rettet efter egen erfaring. (dog mest lånt)

Ja, scriptet kan sagtens udvides! :o) (det kan man jo altid)
Avatar billede clausberg Nybegynder
11. juli 2006 - 16:30 #26
Jeg tror jeg vil forsøge mig med en "rette" funktion... takker for hjælpen. :-)
Avatar billede jakobdo Ekspert
11. juli 2006 - 16:46 #27
Det var så lidt.
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