Avatar billede sabumnim Novice
02. december 2007 - 22:40 Der er 42 kommentarer og
2 løsninger

Upload (2 opgaver)

Hejsa,

Jeg sidder pt og skal afslutte en webside som jeg er ved at lave for min idrætsklub.

Til dette skal jeg bruge følgende:

1)
En upload funktion som kan uploade to billeder på samme submit.
En thumbnail og et real size billede.
De skal samtidig smides i min mysql db som reference altså ind i min db, f.eks galleri.
Har her oprettet en mappe der hedder 'galleri' hvor de skal ende i.

Når jeg så laver mit opret billede i galleri har jeg følgende:
id
caption (tastes ind af admin i mysql i insert)
lillebillede (hentes fra mysql da info er lagt ind via upload evt. noget select array)
stortbillede (hentes fra mysql da info er lagt ind via upload, evt. noget select array)

2)
En upload funktion som kan uploade dokumenter, både .doc - .odt - .pdf

Min mappe hertil hedder 'docs'

Her kan bare være ét upload felt, eller evt. flere alt efter hvad du kan komme op med.
Igen skal der smides en reference ind i min mysql db.

Her kan jeg så oprette f.eks en download side som indeholder:
id
dok_beskrivelse
dokument (jvf. den information der er smid i db igennem upload)

Håber I forstår og har mulighed for at hjælpe hurtigt.

Har allerede siddet og bladret rundt herinde efter en søgning på 'upload' men synes ikke rigtig jeg kunne finde noget brugbart og søger derfor noget hjælp her.

Ps. flere point end normalt da der er 2 opgaver!
Avatar billede yHec Novice
02. december 2007 - 23:18 #1
Har du overvejet, at få php til at lave din thumbnail, så skal du kun uploade et billede. Meget nemmere!!!!

Se her ang uploads: http://dk.php.net/manual/da/function.move-uploaded-file.php
Og her ang at lave en thumb: http://dk.php.net/manual/da/function.imagecreate.php

/y
Avatar billede yHec Novice
02. december 2007 - 23:24 #2
Dette script laver en thumb:
// forudsætter det er jpg billeder du bruger
$file="Dit Billede"; // laves selvfølgelig som en variabel, fx fra $_FILES['img']['name']
$dir="Din billedemappe";
$thumbdir="Din thumb-nail mappe";

    // Bemærk at !== ikke er tilgængelig før 4.0.0-RC2
    $filename=$dir."/".$file;
    $thumb=$dir.$thumbdir."/thumb_{$file}";

    // Set de nye dimensiooner på thumben
    list($width, $height) = getimagesize($filename);
    $new_height = Den ønskede højde på nailen;
    $division = $height / $new_height;
    $new_width = $width / $division;
   
   
    if($new_width>0 && $new_height>0) {
        // lav thumben
        $image_p = imagecreatetruecolor($new_width, $new_height);
        $image = imagecreatefromjpeg($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
       
        // Output af thumben
        imagejpeg($image_p, $thumb);
        }

/y
Avatar billede sabumnim Novice
02. december 2007 - 23:30 #3
Hej y

Det kunne jegnaturligvis godt vælge, men hvordan med filstørrelsen og ikke mmindst proportioner på thumb?

Jeg ønsker nemlig ikke at fylde min umiddelbare webhotels lager plads med thumbs som egentlig er resizet men stadig fylder x antal kb som det store (oprindelige) billede og ønsker heller ikke at proportionerne på thumb forskrues helt vild

//Carsten
Avatar billede yHec Novice
02. december 2007 - 23:43 #4
Proportionerne bliver ændrede i ovennævnte script, du vælger blot den højde dine thumbs skal have. Min erfaring er, at mindre 100 px er passende. Det før du i linjen, $new_height = Den ønskede højde på nailen;

Kvaliteten, og dermed størrelsen, sættes i linjen imagejpg imagejpeg($image_p, $thumb), den er pr default sat til 75 (på en skala til 100), det er webstandard kvaliteten, du kan selv ændre den ved at tilføje en treje parameter til linjen, den skal bae være mellem 0 og 100, Det kommer i sidste ende an på størrelsen af full-size-billedet.

Se evt: http://dk.php.net/manual/da/function.imagejpeg.php

Det ville mpske være en god idé, hvis du læste kommentarerne/scriptene, inden du betvivler deres anvendelighed!

/y
Avatar billede sabumnim Novice
02. december 2007 - 23:54 #5
Hej y

Det er meget muligt jeg skal læse kommentare først men hvis jeg lige umiddelbart fik en "aha-oplevelse" ud af det beskrevne ville jeg sandsynligvis også have været 100% klar hvordan dit script heroven for skulle køres.

Men da jeg ikke aner det dette spurgte jeg.

Men sætter jeg f.eks:
$new_height = Den ønskede højde på nailen;
sådan
$new_height = 50px;

...eller hvordan?

Og her står intet om en default på 75?
imagejpeg($image_p, $thumb);
??

//Carsten
Avatar billede yHec Novice
03. december 2007 - 00:00 #6
$new_height - præcis!

imagejpeg($image_p, $thumb) - det står der ikke, fordi de 75 automatisk sættes, hvis parameteren ikke er sat af brugeren. hvis du vil have en kvalitet på 60 gøres følgende:
imagejpeg($image_p, $thumb, 60);

Husk at sætte dine mapper øverst i scriptet.

Lige for at understrege - det fremgik ikke tydeligt af mit tidligere svar - så ørger scriptet for, at holde proportionerne på thumb'erne

/y
Avatar billede sabumnim Novice
03. december 2007 - 09:20 #7
Godmorgen y

Det lyder jo lige til at gå til :0)

Men jeg havde jo et lille kriterie med at der samtidig skulle smides noget reference info i min DB, dette er så vidt jeg kan se ikke indeholdt i scriptet her?

//Carsten
Avatar billede yHec Novice
03. december 2007 - 16:45 #8
det laver du således:
$data_sql=sprintf("INSERT INTO [tabel] (caption, stortbillede, lillebillede) VALUES (%s, %s, %s)", $caption, $file, "thumb_{$file}");

mysql_select_db($[database], $[connectstreng]);
  $Result1 = mysql_query($data_sql, $[connectstreng]) or die(mysql_error());

Husk lige at sætte de relevante værdier, dvs. alt der er indrammet med [].

/y
Avatar billede michael_stim Ekspert
03. december 2007 - 16:48 #9
http://www.eksperten.dk/artikler/1130
http://www.eksperten.dk/artikler/1098

jakoba skriver gode og gratis artikler. Der er også en artikel hvor man crop'er et billede.
Avatar billede yHec Novice
03. december 2007 - 16:50 #10
ang dit problem med dokument-uoload:
Det er ret simpelt:
<?php
if($_FILES['file']['name']!=""){
    $dk=array("æ", "Æ", "ø", "Ø", "å", "Å", " ", ",", "-","'");
    $net=array("ae", "AE", "oe", "OE", "aa", "AA", "_", "", "_","");
    $file=strtolower(str_replace($dk, $net, $_FILES['file']['name']));
    $uploaddir = DIT UPLOADDIR;
    $uploadfile = $uploaddir . $file;
    move_uploaded_file($_FILES['file']['tmp_name'], "../".$uploadfile);
   
    $doc_sql = sprintf("INSERT INTO dokumenter (filnavn, beskrivelse) VALUES (%s, %s)",
                      GetSQLValueString($uploadfile, "text"),
                      GetSQLValueString(ltrim(ucfirst($beskrivelse)), "text"));

    mysql_select_db($[database], $[connectstreng]);
    $Result1 = mysql_query($doc_sql, $[connectstreng]) or die(mysql_error());
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data" name="form1">
Dokument:  <input type="file" name="file" />
<br />
<input type="submit" name="Submit" value="send" />
</form>
</body>
</html>

/y
Avatar billede sabumnim Novice
04. december 2007 - 20:16 #11
Hej y

Skal lige have dette afklaret, er dette nogenlunde som det skal se ud:

/////////////
<?php
Dette script laver en thumb:
// forudsætter det er jpg billeder du bruger
$file="Dit Billede"; // laves selvfølgelig som en variabel, fx fra $_FILES['img']['name']
$dir="Din billedemappe";
$thumbdir="Din thumb-nail mappe";

    // Bemærk at !== ikke er tilgængelig før 4.0.0-RC2
    $filename=$dir."/".$file;
    $thumb=$dir.$thumbdir."/thumb_{$file}";

    // Set de nye dimensiooner på thumben
    list($width, $height) = getimagesize($filename);
    $new_height = 70px;
    $division = $height / $new_height;
    $new_width = $width / $division;
   
   
    if($new_width>0 && $new_height>0) {
    // Indsæt i DB
    $data_sql=sprintf("INSERT INTO [billeder] (caption, stortbillede, lillebillede) VALUES (%s, %s, %s)", $caption, $file, "thumb_{$file}");

mysql_select_db($[database], $[connectstreng]);
  $Result1 = mysql_query($data_sql, $[connectstreng]) or die(mysql_error());


        // lav thumben
        $image_p = imagecreatetruecolor($new_width, $new_height);
        $image = imagecreatefromjpeg($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
       
        // Output af thumben
        imagejpeg($image_p, $thumb);
        }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data" name="form1">
Billedestor:  <input type="file" id="lillebillede" name="file" />
<br />
Billedestor:  <input type="file" id="stortbillede" name="file" />
<br />
Caption:  <input type="tekst" id="caption" name="caption" />
<br />
<input type="submit" name="Submit" value="send" />
</form>
</body>
</html>
//////////////

//Carsten
Avatar billede yHec Novice
04. december 2007 - 22:18 #12
Jeps.
Der er lige et par ting:
Husk lige at sætte en if($_FILES[file]['name']!=""){ omkring hele din resize og upload del, ellers får du en fejlmelding hvergang du går på siden.

Desuden skal du lige kalde de to filfelter to forskellige ting, med mit script lægger op til, at thumben automatisk får det samme navn med thumb_ som prefix.

Desuden har du lavet din form på en måde, der forventer at du både uploader et stort billede OG en thumb. Scriptet laver selv thumben, på serveren.

Så slet følgende:
Billedestor:  <input type="file" id="lillebillede" name="file" />
<br />

Husk at ændre fil stierne, samt at indsætte navnet på din billedetabel, der hvor der står [billeder], samt at indsætte din connectstreng til databasen.

Der skal heller ikke stå "px" efter 70 i $new_height linjen. Kommandoen ved godt, at det er pixels, og værdien SKAL være en integer.

Ret disse ting, og så skulle det spille.

/y

/y
Avatar billede sabumnim Novice
04. december 2007 - 22:42 #13
Hej y

Vil bare lige tjekke at jeg har sat det hele rigtigt, inden jeg tester i stor stil:
NY KODE:
//////////////
<?php
Dette script laver en thumb:
// forudsætter det er jpg billeder du bruger
$file="Dit Billede"; // laves selvfølgelig som en variabel, fx fra $_FILES['img']['name']
$dir="/galleri/";
$thumbdir="/galleri/thumbs/";


    // If files sætning
    if($_FILES[file]['name']!=""){
    // Bemærk at !== ikke er tilgængelig før 4.0.0-RC2
    $filename=$dir."/".$file;
    $thumb=$dir.$thumbdir."/thumb_{$file}";

    // Set de nye dimensiooner på thumben
    list($width, $height) = getimagesize($filename);
    $new_height = 70;
    $division = $height / $new_height;
    $new_width = $width / $division;
   
   
    if($new_width>0 && $new_height>0) {
    // Indsæt i DB
    $data_sql=sprintf("INSERT INTO [billeder] (caption, stortbillede, lillebillede) VALUES (%s, %s, %s)", $caption, $file, "thumb_{$file}");
 



mysql_select_db($[database], $[connectstreng]);
  $Result1 = mysql_query($data_sql, $[connectstreng]) or die(mysql_error());

        // lav thumben
        $image_p = imagecreatetruecolor($new_width, $new_height);
        $image = imagecreatefromjpeg($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
       
        // Output af thumben
        imagejpeg($image_p, $thumb);
        }
   
      //If files sætning afsluttes
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data" name="form1">
Billedefil:  <input type="file" id="stortbillede" name="file" />
<br />
Caption:  <input type="tekst" id="caption" name="caption" />
<br />
<input type="submit" name="Submit" value="send" />
</form>
</body>
</html>
/////////////


//Carsten
Avatar billede yHec Novice
04. december 2007 - 22:53 #14
Der mangler et par ting:
$file="Dit Billede"; // laves selvfølgelig som en variabel, fx fra $_FILES['img']['name']
Skal være:
$file=$_FILES['file']['name'];

Du mangler stadig at ændre [billede] til navnet på  din tabel. UDEN []. Husk database navnet og connedtstrengen.

/y
Avatar billede sabumnim Novice
04. december 2007 - 23:06 #15
Hej

Prøver igen, men kan du ikke lige forklare mig med den $file=$_FILES['file']['name']; hvad den helt præcist gør?
Og er det rigtigt sat?

Ang. connection, så laver jeg en require_once i toppen af php admin siden.

///////////
<?php
Dette script laver en thumb:
// forudsætter det er jpg billeder du bruger
$file=$_FILES['file']['name'];
//$file="Dit Billede"; // laves selvfølgelig som en variabel, fx fra $_FILES['img']['name']
$dir="/galleri/";
$thumbdir="/galleri/thumbs/";


    // If files sætning
    if($_FILES[file]['name']!=""){
    // Bemærk at !== ikke er tilgængelig før 4.0.0-RC2
    $filename=$dir."/".$file;
    $thumb=$dir.$thumbdir."/thumb_{$file}";

    // Set de nye dimensiooner på thumben
    list($width, $height) = getimagesize($filename);
    $new_height = 70;
    $division = $height / $new_height;
    $new_width = $width / $division;
   
   
    if($new_width>0 && $new_height>0) {
    // Indsæt i DB
    $data_sql=sprintf("INSERT INTO gallery (caption, stortbillede, lillebillede) VALUES (%s, %s, %s)", $caption, $file, "thumb_{$file}");
 



mysql_select_db($[database], $[connectstreng]);
  $Result1 = mysql_query($data_sql, $[connectstreng]) or die(mysql_error());

        // lav thumben
        $image_p = imagecreatetruecolor($new_width, $new_height);
        $image = imagecreatefromjpeg($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
       
        // Output af thumben
        imagejpeg($image_p, $thumb);
        }
   
      //If files sætning afsluttes
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data" name="form1">
Billedefil:  <input type="file" id="stortbillede" name="file" />
<br />
Caption:  <input type="tekst" id="caption" name="caption" />
<br />
<input type="submit" name="Submit" value="send" />
</form>
</body>
</html>
//////////
Avatar billede sabumnim Novice
06. december 2007 - 21:43 #16
Hej y

Håber du stadig er derude

Jeg har nu testet dit script og den melder fejl:
////////////////
Warning: getimagesize(): Unable to access ../galleri//stor4.jpg in MIN STI/upload.php on line 19

Warning: getimagesize(../galleri//stor4.jpg): failed to open stream: No such file or directory in MIN STI/upload.php on line 19

Warning: Division by zero in MIN STI/upload.php on line 22
//////////////////

Min upload kode ser sådan ud:
/////////////

<?php
require_once ('../connection.php');
//Dette script laver en thumb:
// forudsætter det er jpg billeder du bruger
$file=$_FILES['file']['name'];
//$file="Dit Billede"; // laves selvfølgelig som en variabel, fx fra $_FILES['img']['name']
$dir="../galleri/";
$thumbdir="../galleri/thumbs/";


    // If files sætning
    if($_FILES[file]['name']!=""){
    // Bemærk at !== ikke er tilgængelig før 4.0.0-RC2
    $filename=$dir."/".$file;
    $thumb=$dir.$thumbdir."/thumbs_{$file}";

    // Set de nye dimensiooner på thumben
    list($width, $height) = getimagesize($filename);
    $new_height = 70;
    $division = $height / $new_height;
    $new_width = $width / $division;
 
 
    if($new_width>0 && $new_height>0) {
    // Indsæt i DB
    $data_sql=sprintf("INSERT INTO galleri (caption, stortpic, lillepic) VALUES (%s, %s, %s)", $caption, $file, "thumb_{$file}");




/*mysql_select_db($[database], $[connectstreng]);
  $Result1 = mysql_query($data_sql, $[connectstreng]) or die(mysql_error());*/

        // lav thumben
        $image_p = imagecreatetruecolor($new_width, $new_height);
        $image = imagecreatefromjpeg($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
     
        // Output af thumben
        imagejpeg($image_p, $thumb);
        }
 
      //If files sætning afsluttes
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data" name="form1">
Billedefil:  <input type="file" id="stortpic" name="file" />
<br />
Caption:  <input type="tekst" id="caption" name="caption" />
<br />
<input type="submit" name="Submit" value="send" />
</form>
</body>
</html>
/////////////

Kan du se hvad der er galt ?

//Carsten
Avatar billede sabumnim Novice
06. december 2007 - 21:57 #17
Hej igen

Har også netop testet upload af dokumenter, som ligeledes fejler, da den skriver:

Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid/gid is 3079/80 is not allowed to access /usr/home/web owned by uid/gid 3393/0 in MIN STI//uploaddocs.php on line 10

Fatal error: Call to undefined function: getsqlvaluestring() in MIN STI/uploaddocs.php on line 13

Min upload dok kode ser sådan ud:
//////////////

<?php
require_once ('../connection.php');
if($_FILES['doksti']['name']!=""){
    $dk=array("æ", "Æ", "ø", "Ø", "å", "Å", " ", ",", "-","'");
    $net=array("ae", "AE", "oe", "OE", "aa", "AA", "_", "", "_","");
    $file=strtolower(str_replace($dk, $net, $_FILES['doksti']['name']));
    $uploaddir = ('../docs');
    $uploadfile = $uploaddir . $file;
    move_uploaded_file($_FILES['doksti']['tmp_name'], "../".$uploadfile);
 
    $doc_sql = sprintf("INSERT INTO pensumdown (doksti, dok) VALUES (%s, %s)",
                      GetSQLValueString($uploadfile, "text"),
                      GetSQLValueString(ltrim(ucfirst($dok)), "text"));

    /*mysql_select_db($[database], $[connectstreng]);
    $Result1 = mysql_query($doc_sql, $[connectstreng]) or die(mysql_error());*/
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data" name="form1">
Dokument:  <input type="file" name="doksti" />
<br />
Beskrivelse <input type="text" name="beskrivelse" />
<input type="submit" name="Submit" value="send" />
</form>
</body>
</html>
/////////////

//Carsten
Avatar billede yHec Novice
06. december 2007 - 23:16 #18
Mht til den første fejl:
Warning: getimagesize(): Unable to access ../galleri//stor4.jpg in MIN STI/upload.php on line 19
Får du væk ved at fjerne det sidste "/" i disse to linjer:
$dir="../galleri/";
$thumbdir="../galleri/thumbs/";

I den anden;
Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid/gid is 3079/80 is not allowed to access /usr/home/web owned by uid/gid 3393/0 in MIN STI//uploaddocs.php on line 10

Fjerner du ved at ændre
$uploaddir = ('../docs'); til
$uploaddir = ('../docs/');

Fatal error: Call to undefined function: getsqlvaluestring() in MIN STI/uploaddocs.php on line 13
Er min fejl; gør følgende;

$doc_sql = sprintf("INSERT INTO pensumdown (doksti, dok) VALUES (%s, %s)",
                      GetSQLValueString($uploadfile, "text"),
                      GetSQLValueString(ltrim(ucfirst($dok)), "text"));
ændres til:
$doc_sql = sprintf("INSERT INTO pensumdown ('doksti', 'dok') VALUES (%s, %s)",
                      addslashes($uploadfile),
                      ltrim(ucfirst(addslashes($dok))));

Og post så yderligere fejl, hvis der komer nogen.

Også ved jeg ikke hvorfor du har udkommenteret mysql_select etc. På den måde indættes der ingenting i din database....

/y
Avatar billede sabumnim Novice
06. december 2007 - 23:34 #19
Hej igen y

I uploaddocs.php

skal der da ændres fra min side i dette kode?
mysql_select_db($[database], $[connectstreng]);
    $Result1 = mysql_query($doc_sql, $[connectstreng]) or die(mysql_error());

For den returnerer:
Parse error: parse error, unexpected '[', expecting T_VARIABLE or '$' in MIN STI/uploaddocs.php on line 16
Avatar billede sabumnim Novice
06. december 2007 - 23:37 #20
Og for billedeupload kommer der stadig følgende fejl:
Warning: getimagesize(): Unable to access ../galleri/stor4.jpg in MIN STI/upload.php on line 19

Warning: getimagesize(../galleri/stor4.jpg): failed to open stream: No such file or directory in MIN STI/upload.php on line 19

Warning: Division by zero in MIN STI/upload.php on line 22

Både mappen "galleri" og "galleri - thumbs" er oprettet og CHMOD til 777 begge to?

//Carsten
Avatar billede yHec Novice
06. december 2007 - 23:43 #21
Parse error: parse error, unexpected '[', expecting T_VARIABLE or '$' in MIN STI/uploaddocs.php on line 16
Har du indsat dine databasedata? Dvs navnet og conectstrengen? Desuden skal du fjerne alle [].

Warning: getimagesize(../galleri/stor4.jpg): failed to open stream: No such file or directory in MIN STI/upload.php on line 19
er også min fejl :-(

list($width, $height) = getimagesize($filename); skal være
list($width, $height) = getimagesize($file);

/y
Avatar billede yHec Novice
06. december 2007 - 23:45 #22
Ligger "galleri" en mappe over den hvori du har lagt upload.php?
/y
Avatar billede sabumnim Novice
07. december 2007 - 08:55 #23
Hej y

Tager et kig på det her i aften.

Ang. mine DB connections så har jeg jo indkluderet en php fil hvor disse info ligger i.
Denne ligger i toppen af upload
"require_once ('../connection.php');"

Har jeg så brug for dette: Har du indsat dine databasedata? Dvs navnet og conectstrengen? Desuden skal du fjerne alle []. ?

Ang. min galleri mappe så ligger selve upload i min admin mappe og galleri ligger således et niveau oppe i forhold til admin mappen, derfor (../galleri)

//Carsten
Avatar billede yHec Novice
07. december 2007 - 20:11 #24
Ja, det har du brug for. Du inkluderer blot databaseoplysningerne, men du bruger dem ikke. Det er derfor de skal indsættes, der hvor jeg har markeret dem.

/*mysql_select_db($[database], $[connectstreng]);
    $Result1 = mysql_query($doc_sql, $[connectstreng]) or die(mysql_error());*/
Laves til
mysql_select_db($[database], $connection);
    $Result1 = mysql_query($doc_sql, $connection) or die(mysql_error());

Vil jeg umiddelbart tro. Du kan se databasenavnet i connection.php

/y
Avatar billede sabumnim Novice
07. december 2007 - 22:10 #25
Hej y

Har forsøgt at smide dine rettelser ind men den fejler stadig på billede upload, og returnerer dette:
Warning: getimagesize(): Unable to access stor4.jpg in MIN STI/upload.php on line 19

Warning: getimagesize(stor4.jpg): failed to open stream: No such file or directory in MIN STI/upload.php on line 19

Warning: Division by zero in MIN STI/upload.php on line 22


Er lidt i tvivl om de rigtige settings for mysql_select_db er korrekt sat, se nede i koden

Min upload fil ser nu sådan ud:
///////////////

<?php
require_once ('../baseup.php');
//Dette script laver en thumb:
// forudsætter det er jpg billeder du bruger
$file=$_FILES['file']['name'];
//$file="Dit Billede"; // laves selvfølgelig som en variabel, fx fra $_FILES['img']['name']
$dir="../galleri";
$thumbdir="../galleri/thumbs";


    // If files sætning
    if($_FILES[file]['name']!=""){
    // Bemærk at !== ikke er tilgængelig før 4.0.0-RC2
    $filename=$dir."/".$file;
    $thumb=$dir.$thumbdir."/thumbs_{$file}";

    // Set de nye dimensiooner på thumben
    list($width, $height) = getimagesize($file);
    $new_height = 70;
    $division = $height / $new_height;
    $new_width = $width / $division;
 
 
    if($new_width>0 && $new_height>0) {
    // Indsæt i DB
    $data_sql=sprintf("INSERT INTO galleri (caption, stortpic, lillepic) VALUES (%s, %s, %s)",

$caption, $file, "thumb_{$file}");




/*mysql_select_db($db.domænet.dk, $måskekode); //denne connection er mit kodeord? y?
  $Result1 = mysql_query($data_sql, $måskekode) or die(mysql_error());*/

        // lav thumben
        $image_p = imagecreatetruecolor($new_width, $new_height);
        $image = imagecreatefromjpeg($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
     
        // Output af thumben
        imagejpeg($image_p, $thumb);
        }
 
      //If files sætning afsluttes
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data"

name="form1">
Billedefil:  <input type="file" id="stortpic" name="file" />
<br />
Caption:  <input type="tekst" id="caption" name="caption" />
<br />
<input type="submit" name="Submit" value="send" />
</form>
</body>
</html>

///////////////
Avatar billede yHec Novice
08. december 2007 - 09:57 #26
Gider du prøve at lægge indholdet af connect.php/baseup.php - uden koder og brugernavn, selvfølgelig.

/y
Avatar billede yHec Novice
08. december 2007 - 10:10 #27
Denne her HAR jeg pråøvet af her hos mig selv. Og den virker, dog ikke med databasedelen. Der mangler jeg stadig at kende navnene på de relevante variabler, dvs databasens navn og din connectstreng. Har du andre sider, der bruger databasen, for så burde du kunne finde de relevante oplysninger der.

<?php
require_once ('../baseup.php');
//Dette script laver en thumb:
// forudsætter det er jpg billeder du bruger
$file=$_FILES['file']['name'];
//$file="Dit Billede"; // laves selvfølgelig som en variabel, fx fra $_FILES['img']['name']
$dir="../galleri";
$thumbdir="$dir/thumbs";

    // If files sætning
    if($_FILES[file]['name']!=""){
    // Bemærk at !== ikke er tilgængelig før 4.0.0-RC2
    $filename=$dir."/".$file;
    $thumb=$thumbdir."/thumbs_{$file}";
    move_uploaded_file($_FILES['file']['tmp_name'], $filename);

    // Set de nye dimensiooner på thumben
    list($width, $height) = getimagesize($filename);
    $new_height = 70;
    $division = $height / $new_height;
    $new_width = $width / $division;
 
 
    if($new_width>0 && $new_height>0) {
        // lav thumben
        $image_p = imagecreatetruecolor($new_width, $new_height);
        $image = imagecreatefromjpeg($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
        // Output af thumben
        imagejpeg($image_p, $thumb);
        }
      //If files sætning afsluttes
   
      // Indsæt i DB
        $data_sql=sprintf("INSERT INTO galleri (caption, stortpic, lillepic) VALUES (%s, %s, %s)", $caption, $file, "thumb_{$file}");
        mysql_select_db($db.domænet.dk, $måskekode); //DETTE ER NOGET VRØVL
        $Result1 = mysql_query($data_sql, $måskekode) or die(mysql_error()); // OGSÅ HER
    }
?>

Det her resizer og gemmmer som den skal.

/y
Avatar billede sabumnim Novice
09. december 2007 - 13:48 #28
Hej y

Her koderne som jeg håber du får et eller andet ud af og de funker fint da jeg ellers henter alt indhold med disse connections.

<?php
    $db = mysql_connect("db.domain.dk", "webxxxxxx", "xxxPASSxxx");
    mysql_select_db("webxxxxxx", $db);
    ?>

//Carsten
Avatar billede yHec Novice
09. december 2007 - 18:19 #29
Jamen, det har du jo alle oplysningerne!

Og hvis det virker på dine andre sider, så virker det også her!!!

Prøv dette:
// Indsæt i DB
$data_sql=sprintf("INSERT INTO galleri (caption, stortpic, lillepic) VALUES (%s, %s, %s)", $caption, $file, "thumb_{$file}");
mysql_select_db("webxxxxxx", $db);
$Result1 = mysql_query($data_sql, $db) or die(mysql_error());

Nu lægger jeg dette som et svar ;-)

/y
Avatar billede yHec Novice
09. december 2007 - 18:20 #30
Hov, så lige en ting mere:
$data_sql=sprintf("INSERT INTO galleri (caption, stortpic, lillepic) VALUES ('%s', '%s', '%s')", $caption, $file, "thumb_{$file}");

/y
Avatar billede sabumnim Novice
10. december 2007 - 21:49 #31
Hej y

Det er sgu altsammen meget godt og at du ligger det som et svar, men det gør desværre ikke at scriptet fungerer bedre af den grund.

Får stadig disse fejl:
Warning: getimagesize(): Unable to access stor4.jpg in STIEN/upload.php on line 19

Warning: getimagesize(stor4.jpg): failed to open stream: No such file or directory in STIEN/upload.php on line 19

Warning: Division by zero in STIEN/upload.php on line 22

Min kode i upload ser sådan ud:
//////////

<?php
require_once ('baseup.php');
//Dette script laver en thumb:
// forudsætter det er jpg billeder du bruger
$file=$_FILES['file']['name'];
//$file="Dit Billede"; // laves selvfølgelig som en variabel, fx fra $_FILES['img']['name']
$dir="../galleri";
$thumbdir="../galleri/thumbs";


    // If files sætning
    if($_FILES[file]['name']!=""){
    // Bemærk at !== ikke er tilgængelig før 4.0.0-RC2
    $filename=$dir."/".$file;
    $thumb=$dir.$thumbdir."/thumbs_{$file}";

    // Set de nye dimensiooner på thumben
    list($width, $height) = getimagesize($file);
    $new_height = 70;
    $division = $height / $new_height;
    $new_width = $width / $division;
 
 
    if($new_width>0 && $new_height>0) {
  // Indsæt i DB
$data_sql=sprintf("INSERT INTO galleri (caption, stortpic, lillepic) VALUES ('%s', '%s', '%s')", $caption, $file, "thumb_{$file}");
mysql_select_db("webxxxxx", $db);
$Result1 = mysql_query($data_sql, $db) or die(mysql_error());


        // lav thumben
        $image_p = imagecreatetruecolor($new_width, $new_height);
        $image = imagecreatefromjpeg($filename);
        imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
     
        // Output af thumben
        imagejpeg($image_p, $thumb);
        }
 
      //If files sætning afsluttes
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data" name="form1">
Billedefil:  <input type="file" id="stortpic" name="file" />
<br />
Caption:  <input type="tekst" id="caption" name="caption" />
<br />
<input type="submit" name="Submit" value="send" />
</form>
</body>
</html>
//////////

Både mappen "galleri" og mappen "thumbs" er CHMOD 777

//Carsten
Avatar billede yHec Novice
10. december 2007 - 22:03 #32
Hej Carsten.
Det er da klart det ikke virker, når du ikke bruger de rettelser jeg giver dig... Se venligst denne post 08/12-2007 10:10:55 fra mig. Der er ALLE relevante rettelser (ppå dem til db-delen) implementeret, og afprøvet, og det virker!!!!!!!!!!!!!!

Kopier den direkte ind og erstat den du har med den jeg har skrevet!!!

/y
Avatar billede yHec Novice
10. december 2007 - 22:04 #33
Den eneste linje du mangler, er move_uploaded_file. Find den i mit script og sæt den ind på det samme sted i dit script. Så skal du bare se løjer

/y
Avatar billede sabumnim Novice
10. december 2007 - 22:51 #34
Hej y

Du havde ret...nu virker det.

Dog skriver den f'lgende>
Warning: imagejpeg(): Unable to open '../galleri/thumbs/thumbs_stor2.jpg' for writing in STIEN/upload.php on line 31

Er det et spørgsmål om CHMOD eller hvad?

Hvis jeg nu gerne vil have at der fremkommer en tekst efter endt upload hvor der står "billedet uploadet og info lagt i database"
hvor smider jeg så denne tekst ind ?

//Carsten
Avatar billede sabumnim Novice
10. december 2007 - 22:53 #35
Ps. vil du give et udkast til en doc upload, så du kan inkassere de samlede 100 point?
Avatar billede yHec Novice
10. december 2007 - 23:17 #36
Indsæt din besked her:
// Indsæt i DB
        $data_sql=sprintf("INSERT INTO galleri (caption, stortpic, lillepic) VALUES (%s, %s, %s)", $caption, $file, "thumb_{$file}");
        mysql_select_db($db.domænet.dk, $måskekode); //DETTE ER NOGET VRØVL
        $Result1 = mysql_query($data_sql, $måskekode) or die(mysql_error());
        echo "billedet uploadet og info lagt i databasen";
}

Jeg HAR lagt et udkast til doc-upload, men her den lige ige, nu med funktionerende db, formular mm:
<?php
require_once ('../connection.php');
if($_FILES['doksti']['name']!=""){
    $dk=array("æ", "Æ", "ø", "Ø", "å", "Å", " ", ",", "-","'");
    $net=array("ae", "AE", "oe", "OE", "aa", "AA", "_", "", "_","");
    $file=strtolower(str_replace($dk, $net, $_FILES['doksti']['name']));
    $uploaddir = ('../docs/');
    $uploadfile = $uploaddir . $file;
    $dok=$_POST['dok_desc'];
    move_uploaded_file($_FILES['doksti']['tmp_name'], "../".$uploadfile);
 
    $doc_sql = sprintf("INSERT INTO pensumdown ('doksti', 'dok') VALUES (%s, %s)",
                      addslashes($uploadfile),
                      ltrim(ucfirst(addslashes($dok))));
    mysql_select_db("webxxxxx", $db);
    $Result1 = mysql_query($doc_sql, $db) or die(mysql_error());
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <input type="file" name="doksti" /><br />
  <input name="doc_desc" type="text" />
  - Dokumentbeskrivelse <br />
  <input name="nyt_dok" type="submit" /><br />
</form>
</body>
</html>
////////
/y
Avatar billede sabumnim Novice
10. december 2007 - 23:30 #37
Hej igen

Har nu forsøgt at afvikle doc upload på serveren igen, men får følggende fejl:
Warning: move_uploaded_file(): SAFE MODE Restriction in effect. The script whose uid/gid is 3079/80 is not allowed to access /usr/home/web owned by uid/gid 3393/0 in /usr/home/web/web35591/paginas/uploaddocs.php on line 11
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''doksti', 'dok') VALUES (../docs/julefrokost.pdf, )' at line 1

Koden er her i henhold til det du sendte:

<?php
require_once ('../baseup.php');

if($_FILES['doksti']['name']!=""){
    $dk=array("æ", "Æ", "ø", "Ø", "å", "Å", " ", ",", "-","'");
    $net=array("ae", "AE", "oe", "OE", "aa", "AA", "_", "", "_","");
    $file=strtolower(str_replace($dk, $net, $_FILES['doksti']['name']));
    $uploaddir = ('../docs/');
    $uploadfile = $uploaddir . $file;
    $dok=$_POST['dok_desc'];
    move_uploaded_file($_FILES['doksti']['tmp_name'], "../".$uploadfile);
 
    $doc_sql = sprintf("INSERT INTO pensumdown ('doksti', 'dok') VALUES (%s, %s)",
                      addslashes($uploadfile),
                      ltrim(ucfirst(addslashes($dok))));
    mysql_select_db("webxxxxx", $db);
    $Result1 = mysql_query($doc_sql, $db) or die(mysql_error());
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <input type="file" name="doksti" /><br />
  <input name="doc_desc" type="text" />
  - Dokumentbeskrivelse <br />
  <input name="nyt_dok" type="submit" /><br />
</form>
</body>
</html>
Avatar billede yHec Novice
11. december 2007 - 09:04 #38
Hmmmmm. Jeg er jo nok lidt blind... Disse rettes:
$uploaddir = ('../docs/'); til
$uploaddir = ('docs/');

$doc_sql = sprintf("INSERT INTO pensumdown ('doksti', 'dok') VALUES (%s, %s)",
$doc_sql = sprintf("INSERT INTO pensumdown (doksti, dok) VALUES ('%s', '%s')",

Sikke dog det driller.... :-)

/Jan
Avatar billede sabumnim Novice
11. december 2007 - 21:39 #39
Hej y

Nu tror jeg snart at den er hjemme :0)
Håber du har lidt tålmodighed endnu....

Min fil i doc-upload bliver godt nok hevet op på serveren nu i den rette mappe.
Inde i MySql laver den så en "doksti" der hedder "docs/julefrokost.pdf" hvor jeg blot gerne ville have at den smed dokumentet i mappen og så smed doksti op så det var uden docs/...
Altså i dette tilfælde at de blot smed selve navnet på pdf´en op (som her så ville være julefrokost.pdf)

Desuden smider scriptet IKKE noget i beskrivelsen altså der hvor du har sat den til doc_desc.

/////////////
<?php
require_once ('min forbindelse.php');

if($_FILES['doksti']['name']!=""){
    $dk=array("æ", "Æ", "ø", "Ø", "å", "Å", " ", ",", "-","'");
    $net=array("ae", "AE", "oe", "OE", "aa", "AA", "_", "", "_","");
    $file=strtolower(str_replace($dk, $net, $_FILES['doksti']['name']));
  $uploaddir = ('docs/');
    $uploadfile = $uploaddir . $file;
    $dok=$_POST['dok_desc'];
    move_uploaded_file($_FILES['doksti']['tmp_name'], "../".$uploadfile);
 
  $doc_sql = sprintf("INSERT INTO pensumdown (doksti, dok) VALUES ('%s', '%s')",
                      addslashes($uploadfile),
                      ltrim(ucfirst(addslashes($dok))));
    mysql_select_db("webxxxx", $db);
    $Result1 = mysql_query($doc_sql, $db) or die(mysql_error());
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <input type="file" name="doksti" /><br />
  <input name="dok_desc" type="text" /> //BEMÆRK HER ER ÆNDRET SÅ DET STEMMER OVERENS
  - Dokumentbeskrivelse <br />
  <input name="nyt_dok" type="submit" /><br />
</form>
</body>
</html>

//////////////////////
Avatar billede yHec Novice
11. december 2007 - 22:26 #40
problem 1:
For at få filnavnet i mysql skifter du blot $uploadfile ud med $file i sql sætningen:
$doc_sql = sprintf("INSERT INTO pensumdown (doksti, dok) VALUES ('%s', '%s')",
                      addslashes($file),
                      ltrim(ucfirst(addslashes($dok))));

mht det andet problem, forstår jeg det ikke. Det virker fint hos mig. Prøv at sætte en echo $doc_sql ind efter sql-sætningen. Så kan du se om den kommer derind!

/y
Avatar billede yHec Novice
14. december 2007 - 19:04 #41
Virker det?
/y
Avatar billede sabumnim Novice
17. december 2007 - 08:49 #42
Hej Jan
Har ikke her i weekenden haft tid til at tjekke det af, da der har været julefrokost og det store juleindkøb.
Men tjekker det i aften og så får du en melding tilbage.

//Carsten
Avatar billede sabumnim Novice
17. december 2007 - 21:15 #43
Hejsa y

Det virkede sgu fjong, ganske som det skulle :0)

Jeg skulle have kvitteret med 100 smackeroonies i point til dig og et kanon stort tak for hjælpen med begge disse upload funktioner.

Nu kan jeg få afsluttet det hele.

Thanks a million

//Carsten
Avatar billede sabumnim Novice
05. februar 2008 - 21:57 #44
Hej y

Hvis du stadig er på linien så tag lige en kigger med her og se om jeg gør noget galt?

http://www.eksperten.dk/spm/818200

//Carsten
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