|  | 		    
					
        
         
          
         
	
          | |  | Billedupload i mySQL database Fra : Christoffer Kjeldgaa~
 | 
 Dato :  08-07-03 13:46
 | 
 |  | 
 
            Hej derude,
 Jeg er igang med at lave et slags "nyhedssystem" i php, hvor man
 skal kunne tilføje en overskrift, en tekst og et billede (og
 intet andet), som bliver lagt op i en mySQL-database. På en anden
 side skal man så kunne alle de indlæg og billeder der er blevet
 tilføjet.
 Så vidt jeg har kunnet forstå ved at kigge mig lidt omkring på
 nettet, så er det ikke så smart at smide hele billeder op i
 databasen. Derimod skulle det være bedre kun at putte navnet på
 billedet i databasen, samtidig med at selve billedet bliver
 uploadet  til en mappe på serveren. På siden hvor man skal læse
 indlæggene skal må så linke til mappen med billedet, og finde
 billednavnet via databasen. 
 Det jeg har svært ved, er at det inputfelt af typen 'file' på
 tilføj-siden jo både skal uploade billedet til en mappe SAMTIDIG
 med at navnet på billedet bliver lagt i databasen. Og hvordan
 "isolerer" man i øvrigt billednavnet, så det kun er dét der
 bliver lagt op?
 Hvis der er nogle derude der ved det, må de meget gerne hjælpe
 mig. Jeg har efterhånden stødt hovedet mod muren.
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
  jæsparr (08-07-2003) 
 
	
          | |  | Kommentar Fra : jæsparr
 | 
 Dato :  08-07-03 14:03
 | 
 |  | 
 
            Christoffer Kjeldgaard wrote:
 > Hej derude,
 > 
 > Jeg er igang med at lave et slags "nyhedssystem" i php, hvor man
 > skal kunne tilføje en overskrift, en tekst og et billede (og
 > intet andet), som bliver lagt op i en mySQL-database. På en anden
 > side skal man så kunne alle de indlæg og billeder der er blevet
 > tilføjet.
 > Så vidt jeg har kunnet forstå ved at kigge mig lidt omkring på
 > nettet, så er det ikke så smart at smide hele billeder op i
 > databasen. Derimod skulle det være bedre kun at putte navnet på
 > billedet i databasen, samtidig med at selve billedet bliver
 > uploadet  til en mappe på serveren. På siden hvor man skal læse
 > indlæggene skal må så linke til mappen med billedet, og finde
 > billednavnet via databasen. 
 > 
 > Det jeg har svært ved, er at det inputfelt af typen 'file' på
 > tilføj-siden jo både skal uploade billedet til en mappe SAMTIDIG
 > med at navnet på billedet bliver lagt i databasen. Og hvordan
 > "isolerer" man i øvrigt billednavnet, så det kun er dét der
 > bliver lagt op?
 > Hvis der er nogle derude der ved det, må de meget gerne hjælpe
 > mig. Jeg har efterhånden stødt hovedet mod muren.
 > 
 Det er slet ikke noget problem at have billeder i en database. Se selv: 
http://delfs.dk/articles/danish/Filer_i_mysql.html -- 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
   Jesper S Nielsen  -  http://query.dk   -  looney at 0x960 dot net
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
            
             |  |  | 
  Christoffer Kjeldgaa~ (08-07-2003) 
 
	
          | |  | Kommentar Fra : Christoffer Kjeldgaa~
 | 
 Dato :  08-07-03 14:46
 | 
 |  | 
 
            jæsparr wrote in dk.edb.internet.webdesign.serverside.php:
 > Christoffer Kjeldgaard wrote: 
 > > Hej derude, 
 > >  
 > > Jeg er igang med at lave et slags "nyhedssystem" i php, hvor man 
 > > skal kunne tilføje en overskrift, en tekst og et billede (og 
 > > intet andet), som bliver lagt op i en mySQL-database. På en anden 
 > > side skal man så kunne alle de indlæg og billeder der er blevet 
 > > tilføjet. 
 > > Så vidt jeg har kunnet forstå ved at kigge mig lidt omkring på 
 > > nettet, så er det ikke så smart at smide hele billeder op i 
 > > databasen. Derimod skulle det være bedre kun at putte navnet på 
 > > billedet i databasen, samtidig med at selve billedet bliver 
 > > uploadet  til en mappe på serveren. På siden hvor man skal læse 
 > > indlæggene skal må så linke til mappen med billedet, og finde 
 > > billednavnet via databasen.  
 > >  
 > > Det jeg har svært ved, er at det inputfelt af typen 'file' på 
 > > tilføj-siden jo både skal uploade billedet til en mappe SAMTIDIG 
 > > med at navnet på billedet bliver lagt i databasen. Og hvordan 
 > > "isolerer" man i øvrigt billednavnet, så det kun er dét der 
 > > bliver lagt op? 
 > > Hvis der er nogle derude der ved det, må de meget gerne hjælpe 
 > > mig. Jeg har efterhånden stødt hovedet mod muren. 
 > >  
 >  
 > Det er slet ikke noget problem at have billeder i en database. Se selv:  
 > http://delfs.dk/articles/danish/Filer_i_mysql.html >  
 > --  
 > +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- 
 >   Jesper S Nielsen  -  http://query.dk   -  looney at 0x960 dot net 
 > +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- 
 > 
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
   Christoffer Kjeldgaa~ (08-07-2003) 
 
	
          | |  | Kommentar Fra : Christoffer Kjeldgaa~
 | 
 Dato :  08-07-03 17:10
 | 
 |  | 
 
            > jæsparr wrote in dk.edb.internet.webdesign.serverside.php:    
 > Det er slet ikke noget problem at have billeder i en database. Se selv:   
 > http://delfs.dk/articles/danish/Filer_i_mysql.html Hovsa, der kom jo slet ikke noget med i det sidste indlæg. Nå, vi prøver bare
 igen så:
 Jeg har kigget lidt på den artikel og har efterprøvet det der står, men til
 stor ærgelse virker den ikke. Jeg går ud fra der er to sider: Den hvor man
 uploader billederne (filer_i_mysql.php) og den side hvor man kan se billederne
 (filer.php). Eller har jeg misforstået noget her?
 Når man kører upload-siden sender den ganske vidst nogle oplysninger til
 databasen, men den glemmer desværre oplysningen file_code, og siden hvor man
 kan se billederne viser således ikke andet end fejlmeddelelsen "404 - file not
 found!". Man får et par Warnings på uploadsiden, hvorefter den fortsætter og
 fortæller, at filen er blevet sendt til databasen:
 Warning: open_basedir restriction in effect. File is in wrong directory in
 filer_i_mysql.php on line 22
 Warning: fopen("/usr/tmp/phpGdgk4z", "r") - Operation not permitted in
 filer_i_mysql.php on line 22
 Warning: Supplied argument is not a valid File-Handle resource in
 filer_i_mysql.php on line 22
 Your file is saved i the mysql-table 'files'
 I dette tilfælde er linje 22 følgende:
 $file_code = addslashes(fread(fopen($form_data, "r"), filesize($form_data)));
 Hvad er det der går galt her? For bortset fra denne ene linje lader det til at
 scriptet kører fint, og det var jo også lige det jeg skulle bruge.
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
  Flemming Joensson (08-07-2003) 
 
	
          | |  | Kommentar Fra : Flemming Joensson
 | 
 Dato :  08-07-03 14:12
 | 
 |  | 
 
            Christoffer Kjeldgaard <christoffer@result.dk> wrote in 
 news:beeees$cr7$1@sunsite.dk:
 > Hvis der er nogle derude der ved det, må de meget gerne hjælpe
 > mig. Jeg har efterhånden stødt hovedet mod muren.
 $HTTP_POST_FILES['userfile']['name']
 Den variabel indeholder navnet på filen der er blevet gemt.
 Det forudsætter din form der sender filen ser ud som dette:
 <FORM ENCTYPE="multipart/form-data" ACTION="imageupload.php" METHOD="POST">
 Vælg billedet der skal uploades: <INPUT TYPE="file" NAME="userfile">
 <INPUT TYPE="submit" VALUE="Upload">
 </FORM>
 imageupload.php indeholder så følgende:
 /* START */
 $path = "e:/www_root/up_images/"; //fuld sti til upload
 $max_size = 2000000; //max størrelse i bytes
 //først et tjek af filens størrelse
 if ($HTTP_POST_FILES['userfile']['size'] > $max_size) {
   echo "Filen er for stor - reducer billedets størrelse og prøv 
 igen<br>\n";
   exit;
 }
 //Derefter tjekker jeg om filen er en mime-type der må uploades.
 if (($HTTP_POST_FILES['userfile']['type'] == "image/gif") || 
 ($HTTP_POST_FILES['userfile']['type'] == "image/pjpeg") || 
 ($HTTP_POST_FILES['userfile']['type'] == "image/jpeg")) {
   //Hvis det er den rigtige type, så kopierer jeg filen til upload
   $res = copy($HTTP_POST_FILES['userfile']['tmp_name'], 
 $path.$HTTP_POST_FILES['userfile']['name']);
         if (!$res) {
             echo "Billedet kunne ikke gemmes!<br>\n";
             exit;
         } else {
               //Her kan du afvikle den kode der skal opdatere din 
               //database, og eventuelt udskrive lidt "success" info.
             echo "Billedet er nu tilgængeligt på serveren på adressen: <a 
 href=\"/images/".$HTTP_POST_FILES['userfile']['name']."\">http://".$_SERVER ['SERVER_NAME']."/up_images/".$HTTP_POST_FILES['userfile']['name']."</a><br
 >\n";
       
         }
 }
 /* SLUT */
 Ovenstående er noget simplificeret, og der er flere tjek man kan lave, men 
 det burde give dig en idé om hvad der skal til.
 Mvh.
 Flemming
            
             |  |  | 
  Flemming Joensson (08-07-2003) 
 
	
          | |  | Kommentar Fra : Flemming Joensson
 | 
 Dato :  08-07-03 14:14
 | 
 |  | Flemming Joensson <joensson@fjerndette.cs.auc.dk> wrote in
 news:Xns93B29B10B50E6joenssonfjerndettecs@130.225.247.90:
 
 > echo "Billedet er nu tilgængeligt på serveren på adressen:
 > <a href=\"/images/"
 
 Her skal der selvfølgelig stå /up_images/ for at linket virker.
 
 Flemming
 
 
 
 |  |  | 
  Flemming Joensson (08-07-2003) 
 
	
          | |  | Kommentar Fra : Flemming Joensson
 | 
 Dato :  08-07-03 14:24
 | 
 |  | Flemming Joensson <joensson@fjerndette.cs.auc.dk> wrote in
 news:Xns93B29B10B50E6joenssonfjerndettecs@130.225.247.90:
 
 
 >> Hvis der er nogle derude der ved det, må de meget gerne hjælpe
 >> mig. Jeg har efterhånden stødt hovedet mod muren.
 >
 > $HTTP_POST_FILES['userfile']['name']
 
 Ovenstående er taget fra et gammelt script jeg havde - hvis det skal være
 helt efter bogen, skal du slette HTTP_POST fra alle variable ved navne
 HTTP_POST_FILES sådan at de kun hedder $_FILES - men det virker nu stadig
 fint i PHP 4.3.2 :)
 
 Flemming
 
 
 |  |  | 
   Christoffer Kjeldgaa~ (08-07-2003) 
 
	
          | |  | Kommentar Fra : Christoffer Kjeldgaa~
 | 
 Dato :  08-07-03 15:11
 | 
 |  | 
 
            Okay, jeg har afprøvet det du har skrevet, men der bliver meldt fejl allerede
 inden vi når til "det sjove". Der hvor du tjekker om det er filer der må
 uploades, meldes der tilbage med en parse-error:
 Parse error: parse error in imageupload.php on line 16
 Og linje 16 er her den linje der hedder:
 ($HTTP_POST_FILES['userfile']['type'] == "image/pjpeg") 
 Jeg har også forsøgt at udskifte $HTTP_POST_FILES med $_FILES som du skrev,
 men det meldte blot samme resultat.
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
    Flemming Joensson (09-07-2003) 
 
	
          | |  | Kommentar Fra : Flemming Joensson
 | 
 Dato :  09-07-03 08:34
 | 
 |  | Christoffer Kjeldgaard <sjamser@hotmail.com> wrote in
 news:beejd4$l7l$1@sunsite.dk:
 
 > Parse error: parse error in imageupload.php on line 16
 >
 > Og linje 16 er her den linje der hedder:
 >
 > ($HTTP_POST_FILES['userfile']['type'] == "image/pjpeg")
 >
 > Jeg har også forsøgt at udskifte $HTTP_POST_FILES med $_FILES som du
 > skrev, men det meldte blot samme resultat.
 
 
 Jeg tror parsefejlen skyldes at den kode jeg postede her i gruppen blev
 wrappet. Så hvis du stadig vil teste det, så prøv og fjern linebreak efter
 
 if (($HTTP_POST_FILES['userfile']['type'] == "image/gif") ||
 og efter ($HTTP_POST_FILES['userfile']['type'] == "image/pjpeg") ||
 
 Sådan at du får én lang linje der begynder med "if (" og slutter med ") {"
 
 Så burde der ikke være parsefejl. Jeg kører selv med koden lige pt. på en
 Windowsmaskine med apache og PHP 4.3.2 og det virker fint her.
 
 Flemming
 
 
 |  |  | 
  Christoffer Kjeldgaa~ (08-07-2003) 
 
	
          | |  | Kommentar Fra : Christoffer Kjeldgaa~
 | 
 Dato :  08-07-03 19:48
 | 
 |  | 
 
            Flemming Joensson wrote in dk.edb.internet.webdesign.serverside.php:
 > $HTTP_POST_FILES['userfile']['name'] 
 >  
 > Den variabel indeholder navnet på filen der er blevet gemt. 
 Okay, nu virker det faktisk - sådan næsten da. Jeg brugte godt nok ikke den
 php-kode som du skrev, men jeg lavede lidt om på koden fra Webcafé's artikel
 om filupload, og nu virker det upåklageligt. Og du havde jo ret Flemming. Man
 skulle bare bruge den ene variabel, og så gemte den filnavnet. Jeg vil gerne
 sige dig mange tusind tak. Nu virkermit newssystem og jeg kan komme videre med
 udviklingen af det website jeg var igang med. 
 Mange, mange tak,
 Christoffer Kjeldgaard
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! => http://www.html.dk/tutorials |  |  | 
   Flemming Joensson (09-07-2003) 
 
	
          | |  | Kommentar Fra : Flemming Joensson
 | 
 Dato :  09-07-03 08:35
 | 
 |  | Christoffer Kjeldgaard <christoffer@sappy.dk> wrote in
 news:bef3kq$h9a$1@sunsite.dk:
 
 > Okay, nu virker det faktisk - sådan næsten da. Jeg brugte godt nok
 > ikke den php-kode som du skrev, men jeg lavede lidt om på koden fra
 > Webcafé's artikel om filupload, og nu virker det upåklageligt. Og du
 > havde jo ret Flemming. Man skulle bare bruge den ene variabel, og så
 > gemte den filnavnet. Jeg vil gerne sige dig mange tusind tak. Nu
 > virkermit newssystem og jeg kan komme videre med udviklingen af det
 > website jeg var igang med.
 >
 
 Det var så lidt, glad for at kunne hjælpe.
 
 Flemming
 
 
 |  |  | 
  Nezar Nielsen (08-07-2003) 
 
	
          | |  | Kommentar Fra : Nezar Nielsen
 | 
 Dato :  08-07-03 14:14
 | 
 |  | 
 
            Christoffer Kjeldgaard wrote:
 > Det jeg har svært ved, er at det inputfelt af typen 'file' på
 > tilføj-siden jo både skal uploade billedet til en mappe SAMTIDIG
 > med at navnet på billedet bliver lagt i databasen. Og hvordan
 > "isolerer" man i øvrigt billednavnet, så det kun er dét der
 > bliver lagt op?
http://dk.php.net/features.file-upload kig på $_FILES arrayet, det indeholder de oplysninger der skal bruges, 
 husk at flytte den uploadede fil et eller andet sted hen med 
http://dk.php.net/move_uploaded_file og gem den nye sti.
 -- 
 Mvh. Nezar Nielsen
http://fez.dk/ |  |  | 
 |  |