Avatar billede oldschool Nybegynder
17. september 2007 - 18:20 Der er 9 kommentarer og
1 løsning

Upload og skriv til mysql

Hej

Jeg er i gang med et php script som modtager et billede fra flash, resizer det og skriver stien til mysql. Jeg kan sagtens uploade og resize, men kan ikke få det at skrive til MySql'en til at fungerer!

Mit script ser sådan her ud:

<?php

include 'db.inc.php';

$date = date('d.F.Y');
$time = time('H.i.S');

if ($_FILES['Filedata']['name']) {
        echo(" ");
        $uploadDir = "uploads/";
        $uploadFile = "uploads/" .  $time . basename($_FILES['Filedata']['name']);
        move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadFile);
        //Resize og dupliker
        $max_width=400; //max bredde
        $max_height=300; //max højde
        $size=getimagesize($uploadFile);
        $width=$size[0];
        $height=$size[1];
        $x_ratio=$max_width/$width;
        $y_ratio=$max_height/$height;
        if(($width<=$max_width) && ($height<=$max_height)){
                $tn_width=$width;
                $tn_height=$height;
        }
        else if(($x_ratio*$height)<$max_height){
                $tn_height=ceil($x_ratio*$height);
                $tn_width=$max_width;
        }
        else{
                $tn_width=ceil($y_ratio*$width);
                $tn_height=$max_height;
        }
        $src=imagecreatefromjpeg($uploadFile);
        $dst=imagecreatetruecolor($tn_width,$tn_height); //lav en holder
        imagecopyresized($dst,$src,0,0,0,0,$tn_width,$tn_height,$width,$height);
        $nameResized = $uploadDir . $time . "re.jpg"; //navn på det nye billede
        imagejpeg($dst,$nameResized,80); //gemmer det nye billede med jpg kvalitet 80
        imagedestroy($src);
        imagedestroy($dst);
 
 
        $sql = "INSERT INTO teater_images SET
          sti='$nameResized',
          date='$date'";
          if (@mysql_query($sql)) {
        echo '<h1><p>Image added</p></h1>';
          } else {
        echo '<h1><p>Could not add image, sorry: ' .
        mysql_error() . '</p></h1>';


}
?>

Min db include:

<?php
$dbcnx = @mysql_connect('host', 'user', 'pass');
    if (!$dbcnx) {
        exit('<p>Kunne ikke connecte...</p>');
}

if (!@mysql_select_db('web114009')) {
    exit('<p>Kunne ikke finde sql...</p>');
}

?>

Jeg har prøvet at fikse det, men kan simpelthen ikke få det til at virke!

Er der en der vil være venlig at kigge scriptet igennem?

Mange tak :)

//Oldschool
Avatar billede jakobdo Ekspert
17. september 2007 - 18:48 #1
Får du en mysql fejl når du forsøger?
Eller hvad oplever du nu?
Avatar billede oldschool Nybegynder
17. september 2007 - 19:25 #2
Det er faktisk et godt spørgsmål! Jeg sender filen fra flash - og har faktisk aldrig lavet sådan noget før (altså flash, php ph mysql sammen). Er der en smart måde jeg kan checke det på?
Avatar billede jakobdo Ekspert
17. september 2007 - 20:06 #3
Virker din kode til og med her:

$nameResized = $uploadDir . $time . "re.jpg"; //navn på det nye billede
        imagejpeg($dst,$nameResized,80); //gemmer det nye billede med jpg kvalitet 80
        imagedestroy($src);
        imagedestroy($dst);
???
Avatar billede oldschool Nybegynder
17. september 2007 - 21:20 #4
Nu har jeg lige prøvet lidt frem og tilbage...

Jeg kan godt skrive til mysql'en hvis jeg bare giver det nye billede navnet $nameResized = $uploadDir . "thumb.jpg";

Men jeg vil gerne give det resizede billede et unikt navn, burde den metode jeg har brugt ik være ok, eller?
Avatar billede jakobdo Ekspert
17. september 2007 - 21:23 #5
Din linie:
$nameResized = $uploadDir . $time . "re.jpg"; //navn på det nye billede
ville jeg nok rette til:
$nameResized = $uploadDir . md5(uniqid(rand(), true)) . ".jpg"; //navn på det nye billede
Avatar billede oldschool Nybegynder
17. september 2007 - 21:34 #6
Arh thanks, det virker!

Er der en måde man kan sætte antal characters på random nummeret? Lige nu er der ca 40 :)

Men mange tak, smid et svar!
Avatar billede jakobdo Ekspert
17. september 2007 - 21:39 #7
Så kan du bruge: substr(md5(uniqid(rand(), true)),0,20)
20 = længde
Avatar billede jakobdo Ekspert
17. september 2007 - 21:39 #8
Og du får et svar.
Avatar billede oldschool Nybegynder
17. september 2007 - 21:43 #9
Jeg bukker og takker. Fortsat god aften!
Avatar billede jakobdo Ekspert
17. september 2007 - 21:46 #10
Takker for point og tak i lige måde.
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