Avatar billede dhunters Nybegynder
25. november 2003 - 16:28 Der er 22 kommentarer og
2 løsninger

upload pic til MySQL og hiv det ud igen

Hei xperts.

Jeg har et problem. Jeg skal smide nogle billedefiler op i en MySQL-database, og jeg kan ikke finde et script...
har den her tabel:
CREATE TABLE `billeder` (
  `id` int(11) NOT NULL auto_increment,
  `beskrivelse` varchar(255) NOT NULL default '',
  `billede` longblob NOT NULL,
  `filetype` varchar(50) NOT NULL default '',
  `width` int(11) NOT NULL default '100',
  `height` int(11) NOT NULL default '100',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

Problemet er så, at jeg også skal trække billedet ud igen.

Håber der er nogle der kan hjælpe med noget script!

På forhånd tak for hjælpen!,
/dhunters
Avatar billede detox Nybegynder
25. november 2003 - 16:53 #1
Jeg bruger denne linie når jeg indlæser billedet:

$code = addslashes(fread(fopen($filnavn, "r"), $filesize));
Avatar billede Slettet bruger
25. november 2003 - 16:55 #2
Hvorfor vil du lægge dine billeder i MySQL databasen?
Avatar billede morpheus Nybegynder
25. november 2003 - 16:56 #3
du laver en side der hedder fx. showimg.php

<?php
$res = mysql_query("SELECT * FROM billeder WHERE id = ".$_GET['id']) or die(mysql_error());
$type = mysql_result($res, 0, "filetype");
$billede = mysql_result($res, 0, "billede");
header("Content-type: ".$type);
print $billede;
?>

Siden kalder du fra fx. img.php:
<img src="showimg.php?id=1">
Avatar billede morpheus Nybegynder
25. november 2003 - 16:57 #4
print $billede; => print stripslashes($billede);
Avatar billede detox Nybegynder
25. november 2003 - 16:57 #5
Når du så skal vise billedet, kan du lave en fil med noget i den her dur:

<?
include 'db.php';// Forbinelse til din database
$res = mysql_query("SELECT code, type FROM gallery WHERE id=$_GET[id]");
$data = mysql_fetch_assoc($res);
header("Content-type: ".$data['type']);
echo $data['code'];
?>
Avatar billede Slettet bruger
25. november 2003 - 16:59 #6
Jeg vil bare lige nævne at det giver rigtig dårlig ydelse og et voldsomt load på serveren at smide billeder i en database. Det er meget bedre at uploade dem til en mappe.
Avatar billede detox Nybegynder
25. november 2003 - 17:00 #7
Og den henviser du til med fx:

echo "<img src='vis_billede.php?id=".$id."' />";
Avatar billede morpheus Nybegynder
25. november 2003 - 17:19 #8
el_barto: Hvis man nu har en maskine der er glad for det... :)
Avatar billede fcknet Nybegynder
25. november 2003 - 18:10 #9
Avatar billede dhunters Nybegynder
25. november 2003 - 20:53 #10
okay... tak for alle svarene! Har fundet ud af hvordan jeg hiver ét billede ud nu! Men jeg skal have opstillet alle de billeder jeg har i MySQL-tabellen i en <table> der er fire kolonner bred med width=100 og height=100... Herfra skal man så kunne klikke sig videre ind og se billedet i fuld størrelse. sidder og roder rundt med den her kode:

<?php
$db=mysql_connect("xxx","xxx","xxx")or die("Der var en MySQL fejl: " . mysql_error());
mysql_select_db("xxx",$db)or die("Der var en MySQL fejl: " . mysql_error());
$res=mysql_query("SELECT id, billede, width, height FROM billeder") or die(mysql_error());
  while ($row=mysql_fetch_array($res)) {
    echo "<a href='showimg.php?id=$row[id]'><img src='$row[billede]' width='$row[width]' height='$row[height]'></a>";
  }
  mysql_free_result($res);
?>
Avatar billede dhunters Nybegynder
25. november 2003 - 20:53 #11
fcknet -> har set på den tidligere i dag...
Avatar billede detox Nybegynder
25. november 2003 - 21:18 #12
Ja, det dur ikke. Du er nødt til at vise billederne ved hjælp af filen, som jeg viste dig. Du kunne jo så vælge at tilføje en variabel, der fortæller om det skal være lille eller stort. Men det mest oplagte vil være at ligge thumbnails i tabellen med det samme, så ikke brugeren skal downloade store billeder for at vise dem i mindre format.
Avatar billede detox Nybegynder
25. november 2003 - 21:20 #13
Jeg har gjort det at jeg ligger en thumbnail i samme række som billedet og viser dem som links.
Avatar billede dhunters Nybegynder
25. november 2003 - 21:21 #14
sidder du så og laver thumbnails i photoshop e.lign.?
Avatar billede detox Nybegynder
25. november 2003 - 21:23 #15
Næ, dem laver php automatisk ved upload.
Avatar billede detox Nybegynder
25. november 2003 - 21:24 #16
Men de kunne da nemt laves i photoshop, hvis det er nogle billeder du har læggende.
Avatar billede dhunters Nybegynder
25. november 2003 - 21:24 #17
hvordan gør du det?
Avatar billede detox Nybegynder
25. november 2003 - 21:25 #18
Jeg har lavet en lille funktion til det:

//Thumb
function Thumb($sourcefile, $targetfile) {
$max_width = 120;
$jpegqual = 100;
$picsize=getimagesize($sourcefile);
$source_x = $picsize[0];
$source_y  = $picsize[1];
if ($source_x > $max_width) {
    $delta = $max_width/$source_x;
    $dest_x = round($source_x*$delta);
    $dest_y = round($source_y*$delta);
    $source_id = imageCreateFromJPEG($sourcefile);
    $target_id=imagecreatetruecolor($dest_x, $dest_y);
    $target_pic=imagecopyresampled($target_id,$source_id,
            0,0,0,0, $dest_x,$dest_y, $source_x,$source_y);
    imagejpeg ($target_id,$targetfile,$jpegqual);
}else{
copy($sourcefile, $targetfile);
}
}//END Thumb
Avatar billede detox Nybegynder
25. november 2003 - 21:26 #19
Den kalder jeg med:

$tmp = $_FILES['form_data']['tmp_name'];
$thumb_name = 'thumb.jpg';
Thumb($tmp, $thumb_name);
Avatar billede detox Nybegynder
25. november 2003 - 21:28 #20
Det er så kun beregnet til jpg bileder. Den kunne osse rettes til at håndtere png, men gif dur den ikke til.
Avatar billede dhunters Nybegynder
25. november 2003 - 21:30 #21
ok... ser lidt tricky ud... tror lige jeg skal kigge lidt mere på det hvis det! men ellers tak for det! leger lige lidt med det... Vi du have point nu?
Avatar billede detox Nybegynder
25. november 2003 - 21:38 #22
Det skal lige siges at funktionen kræver GDlib for at fungere. For så vidt det er jpg filer du leger med, så er den lige til at bruge. Du kan så indlæse data på samme måde som det egentlige billede:

$thumb = addslashes(fread(fopen($thumb_name, "r"), filesize($thumb_name)));
Avatar billede detox Nybegynder
25. november 2003 - 21:44 #23
Med hensyn til dit miniaturelink, så bruger jeg selv denne:

echo "<td valign='bottom'><a href='big.php?id=$row[id]&amp;kat=$kat'>
<img alt='billede fra database' src='vis.php?id=$row[id]&amp;type=thumb' /></a>
<br />".$row['tekst']."</td>\r\n";
Avatar billede dhunters Nybegynder
26. december 2003 - 14:17 #24
point
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