Avatar billede clausberg Nybegynder
04. juni 2006 - 11:33 Der er 35 kommentarer og
1 løsning

Vis billede

Jeg har en database hvori jeg har uploaded billeder med dertilhørende tekst og titel. Databasen ser således ud:

id int(11) nulværdi: nej autoincrement primæary
image longblob binary nulværdi: nej
text varchar (30) nulværdi: nej
title varchar (30) nulværdi: nej
Billederne er gemt binært

Problemet er, at jeg ikke kan se billederne! Jeg vil gerne have et php script, der er i stand til at vise billederne i databasen.
Men hvad skal jeg skrive????
Avatar billede iss Novice
04. juni 2006 - 11:39 #1
dbconnect();
$result = @mysql_query("SELECT image FROM tabel WHERE id = '".$_GET['id']."'");
$array = @mysql_fetch_array($result);
$data = imagecreatefromstring(@mysql_result($result, 0, "image"));
header('Content-type: image/jpeg');
imagejpeg($data);

Dette er mit tilrettet script...
Avatar billede iss Novice
04. juni 2006 - 11:40 #2
$array = @mysql_fetch_array($result); skal ikke være der i dit tilfælde...
Avatar billede michael_stim Ekspert
04. juni 2006 - 11:42 #3
Hvis du absolut insisterer på at gemme i MySQL. Personligt ville jeg nok nöjes med at gemme billedenavnet og uploade billedet til serveren.
http://www.phpbuilder.com/columns/florian19991014.php3
Avatar billede clausberg Nybegynder
04. juni 2006 - 13:07 #4
ISS>>>> Der sker desværre ikke noget, når jeg kører det. Skærmen forbliver blank?

Michael_stilm>>> Ved godt at det ikke er så smart at gemme billeder direkte i mysql, men hvordan nøjes jeg blot med at gemme billednavnet i databasen, således, at når jeg skal se billederne, så bliver billederne hentet fra en mappe?
Avatar billede michael_stim Ekspert
04. juni 2006 - 13:13 #5
$_FILES['navnPåFelt']['name'];//Indsätter du i databasen
<img src="sti/til/din/fil/".$navnfradatabasen....>
Avatar billede iss Novice
04. juni 2006 - 13:13 #6
Sæt // foran header og fjern alle @, prøv igen, læs dine fejl så...

Og det er fint nok at have billeder i SQL, har det selv således at man har original billedet i fuld kvalitet i database, laver cache af billedet i forskellige størrelser (sådan at det kan hentes næste gang uden at skulle laves om.
Avatar billede michael_stim Ekspert
04. juni 2006 - 13:18 #7
Hvis performance og databaseplads ikke betyder noget, er det helt OK ;o) De fleste webhoteller har begränsning på pladsen og har man et galleri el liggende bliver pladsen hurtigt opbrugt. Og hvorfor belaste databasen med billeder når de kan ligge på serveren?
Avatar billede clausberg Nybegynder
04. juni 2006 - 13:28 #8
Jeg tror faktisk jeg vil arbejde hen mod at få billederne til at ligge på server og med en henvisning fra mysql. Performance kommer nemlig på sigt til at betyde en del!! :-)

Vil det sige, at databasen skal oprettes således:
id int(11) nulværdi: nej autoincrement primary
image text
text varchar (30) nulværdi: nej
title varchar (30) nulværdi: nej

Jeg forstår dog ikke hvad du mener med:
$_FILES['navnPåFelt']['name'];//Indsätter du i databasen
Avatar billede michael_stim Ekspert
04. juni 2006 - 13:33 #9
Du behöver ikke at sätte feltet image til text. En varchar burde väre nok. Det er jo kun navnet på billedet der skal i databasen. Pröv at sög på upload i PHP-kategorien, så er der hundredevis scripts som du kan copy/paste.
$_FILES['navnPåFelt']['name'];//Indsätter du i databasen: Der henviser jeg til det "gennemse"-felt hvor du uploader fra.
Avatar billede clausberg Nybegynder
04. juni 2006 - 14:24 #10
Jeg har fundet dette script der vist nok skal loade billeder op i en bestemt mappe. Men det virker ikke - kan du se hvad der er galt? Jeg har gemt det som test.php

<html>
<head>
    <title>Fil upload med PHP</title>
</head>
<body>
<?php
//Upload eksempel
$path = "test/upload";//Sti til mappen filen skal uploades i!
$filename = "test.php";//Filens navn
$httproot = "http://www.xxxxxxxx.dk/test/";//http:// roden til mappen som filen skal uploades til.
if(count($_POST)>0)//Der bliver postet til scriptet
{
    $file = $_FILES['file'];
    if(move_uploaded_file($file['tmp_name'], $path."/".$filename))
    {
        echo 'Filen er nu uploadet. Se den <a href="'.$httproot.$filename.'">her</a>';
    }
    else
    {
        echo 'Der opstod en fejl - filen blev ikke uploadet.<br>
        <a href="">Prøv igen</a>';
    }
}
else
{
$form = '<form enctype="multipart/form-data" action="" method="post">
<input type="file" name="file" value=""><br>
<input type="submit" name="submit" value="Upload">
</form>';
echo $form;
}
echo "</body>
</html>";
?>
Avatar billede michael_stim Ekspert
04. juni 2006 - 14:30 #11
Ikke det bedste script du fandt ;o)
Her er der et der er lidt bedre, med beskrivelse. Ikke optimalt men mere så du kommer lidt ind i det.

http://www.webcafe.dk/artikler/php/upload/upload_script.phps
Avatar billede michael_stim Ekspert
04. juni 2006 - 14:31 #12
Avatar billede clausberg Nybegynder
04. juni 2006 - 16:24 #13
Jeg kender godt dette script, men kan ikke få det til at virke, da der åbentbart ikke kan skrives til biblioteket "upload_bibliotek"
Avatar billede michael_stim Ekspert
04. juni 2006 - 16:26 #14
Det er en mappe du skal chmod'de
Hvis du bruger et FTP-program kan man mange gange höjreklikke på mappen og välge rettigheder.
Avatar billede clausberg Nybegynder
04. juni 2006 - 16:31 #15
jeg bruger kun explorer som ftp... jeg har prøvet at ændre på mappen således, at alle kan rette i den osv... jeg går ud fra at jeg skal oprette den mappe der hedder upload_bibliotek og i øvrigt ikke ændre på scriptet?
Avatar billede clausberg Nybegynder
04. juni 2006 - 16:34 #16
Jeg får følgende fejl:
Kunne ikke åbne biblioteket: ./upload
Avatar billede michael_stim Ekspert
04. juni 2006 - 16:36 #17
Og du har en mappe der hedder upload med skriverettigheder og ligger hvor den skal ligge?
Avatar billede michael_stim Ekspert
04. juni 2006 - 16:38 #18
Du skal måske ändre störrelsen også. 30 Kb er jo ikke så meget hvis det er billeder du skal uploade
Avatar billede clausberg Nybegynder
04. juni 2006 - 16:40 #19
ha ha ha... jeg havde døbt mappen upload_bibliotek... jeg har nu ændret den til blot "upload".

Det er faktisk sådan noget jeg leder efter. Blot har jeg jo brug for at brugeren til hvert billede skal kunne uplode en tekst og en titel der hører til hvert billede, og at disse informationer skal uploades til en database... alt dette skal helst ske på een gang... altså brugeren blot skal trykke submit een gang, og så bliver det hele uploaded
Avatar billede michael_stim Ekspert
04. juni 2006 - 16:48 #20
Men så adder du bare de tekstfelter til formularet du skal bruge, og bruger det script du havde til at indsätte i tabellen.
Avatar billede clausberg Nybegynder
04. juni 2006 - 17:02 #21
Jeg har forsøgt at skrive felterne: "titel" og "tekst" ind i scriptet, men når jeg uploader sker der ingen ting?????

<form action="' . $action . '" method="post" enctype="multipart/form-data">
  <table border="1" cellpadding="5" cellspacing="0">
  <tr>
    <td>Titel<input type="text" name="title[]"></td>
    <td>Tekst<br><textarea name="text[]" cols="30" rows="10"></textarea></td>
    <input type="file" name="image[]">
  </tr>
  <tr>
    <td align="right" bgcolor="#999999"><b>Fil til upload:</b></td>
    <td bgcolor="#cccccc"><input type="file" name="upfil" /></td>
  </tr>
  <tr>
    <td colspan="2" align="middle" bgcolor="#dddddd"><input type="submit" value="upload" /></td>
  </tr>
</table>
</form>
Avatar billede clausberg Nybegynder
04. juni 2006 - 17:05 #22
Øjeblik...  nu er det vist mig der roder rundt... jeg skal jo også connecte til mysql, da titel, tekst, og en sti til billedet skal uploades til en database
Avatar billede michael_stim Ekspert
04. juni 2006 - 17:06 #23
<form action='" . echo $_SERVER['PHP_SELF']; . "' method="post" enctype="multipart/form-data">
  <table border="1" cellpadding="5" cellspacing="0">
  <tr>
    <td>Titel<input type="text" name="title"></td>
    <td>Tekst<br><textarea name="text" cols="30" rows="10"></textarea></td>
  </tr>
  <tr>
    <td align="right" bgcolor="#999999"><b>Fil til upload:</b></td>
    <td bgcolor="#cccccc"><input type="file" name="upfil" /></td>
  </tr>
  <tr>
    <td colspan="2" align="middle" bgcolor="#dddddd"><input type="submit" value="upload" /></td>
  </tr>
</table>
</form>
Avatar billede clausberg Nybegynder
04. juni 2006 - 17:17 #24
skærmen er nu blank...


Dette script har jeg tidligere brugt til at uploade billeder+tekst+titel til en database... men billedet bliver altså smidt ind i en database, og det skal det jo ikke. Spørgsmålet er, om det nu er muligt at kombinere dette script: (der skal selvfølgelig slettes nogle linier - jeg er ikke helt klar over hvilke!!!)

<?
if(isset($_POST['uploadPics']))
{
    mysql_connect("localhost", "xxx", "xxx");
    mysql_select_db("xxx");

    for($i = 0; $i < count($_FILES['image']['name']); $i++)
    {
       
        $file  = fopen($_FILES['image']['tmp_name'][$i], "rb");
        $image = addslashes(fread($file, filesize($_FILES['image']['tmp_name'][$i])));
        $text  = mysql_real_escape_string($_POST["text"][$i]);
        $title = mysql_real_escape_string($_POST["title"][$i]);
       
        if($_FILES['image']['size'][$i] > 0)
            mysql_query("insert into billeder values('null','$image','$text','$title')") or die(mysql_error());
    }
    echo "Tekst og billede er uploaded!";
   
    mysql_close();
}
?>

<form action="<?=$_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="">
<b>Titel 1</b><input type="text" name="title[]">
<p>
<b>Tekst 1</b><br><textarea name="text[]" cols="30" rows="10"></textarea>
<p>
    <input type="file" name="image[]">
    <p>&nbsp;  </p>

<b>Titel 2</b><input type="text" name="title[]">
<p>
<b>Tekst 2</b><br><textarea name="text[]" cols="30" rows="10"></textarea>
<p>
    <input type="file" name="image[]">
    <p>&nbsp;  </p>

<b>Titel 3</b><input type="text" name="title[]">
<p>
<b>Tekst 3</b><br><textarea name="text[]" cols="30" rows="10"></textarea>
<p>
    <input type="file" name="image[]">
    <p>&nbsp;  </p>

<input type="submit" name="uploadPics" value="Upload Billeder">
</form>


med dette script:
http://www.webcafe.dk/artikler/php/upload/upload_script.phps
Avatar billede clausberg Nybegynder
04. juni 2006 - 17:25 #25
Jeg kan ikke umiddelbart få det til at virke :-(
Avatar billede michael_stim Ekspert
04. juni 2006 - 17:39 #26
<?
if(isset($_POST['uploadPics']))
{
  mysql_connect("localhost", "xxx", "xxx");
  mysql_select_db("xxx");
     
  $file  = $_FILES['upload']['name'];
  $text  = mysql_real_escape_string($_POST["text"][$i]);
  $title = mysql_real_escape_string($_POST["title"][$i]);
  mysql_query("insert into billeder values('$file','$text','$title')") or die(mysql_error());
  mysql_close();

  //her kan du smide dit uploadscript
}
?>
OBS: glem ikke <html>,<body> osv
<form action="<?=$_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="">
<b>Titel</b><input type="text" name="title">
<p>
<b>Tekst</b><br><textarea name="text" cols="30" rows="10"></textarea>
<b>Billede</b><input type="file" name="upload">


<input type="submit" name="uploadPics" value="Upload Billeder">
</form>
Avatar billede michael_stim Ekspert
04. juni 2006 - 17:48 #27
<?
if(isset($_POST['uploadPics'])){
    $konfiguration["upload_bibliotek"] = "./upload";
      $konfiguration["max_stoerrelse"] = "30";
      list($major, $minor, $rev) = explode(".", phpversion());
      if($major < 4) {
        die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
      }

      if($minor < 1) {
        $_FILES = $HTTP_POST_FILES;
        $_POST = $HTTP_POST_VARS;
        $_SERVER = $HTTP_SERVER_VARS;
      }
      if($_FILES["upfil"]["size"] > 0) {
        $fra = $_FILES["upfil"]["tmp_name"];
        $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];
        $fil_stoerrelse = filesize($fra)/1024;
        if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
            die("Desv&aelig;rre - filen er for stor. Jeg accepterer kun " .
            $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
            ceil($fil_stoerrelse) . "kb");
        }
        if(function_exists("move_uploaded_file")) {
            move_uploaded_file($fra, $til);
        } else {
            copy($fra, $til);
        }
      }
      mysql_connect("localhost", "xxx", "xxx");
      mysql_select_db("xxx");
    $file  = $_FILES['upload']['name'];
      $text  = mysql_real_escape_string($_POST["text"][$i]);
      $title = mysql_real_escape_string($_POST["title"][$i]);
      mysql_query("insert into billeder values('$file','$text','$title')") or die(mysql_error());
      mysql_close();
}
?>
OBS: glem ikke <html>,<body> osv
<form action="<?=$_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="">
<b>Titel</b><input type="text" name="title">
<p>
<b>Tekst</b><br><textarea name="text" cols="30" rows="10"></textarea>
<b>Billede</b><input type="file" name="upload">
<input type="submit" name="uploadPics" value="Upload Billeder">
</form>

Obs er ikke testet, men glem ikke html-tagsene
Avatar billede clausberg Nybegynder
06. juni 2006 - 10:25 #28
Jeg tester det lige i aften... har ikke set det før nu, da Eksperten jo har været nede.
Avatar billede clausberg Nybegynder
07. juni 2006 - 21:40 #29
Jeg får følgende fejlmelding:

Column count doesn't match value count at row 1

Jeg har oprettet en table med følgende info:

id autoinc. primary
file varchar 50
text varchar 30
title varchar 30
Avatar billede clausberg Nybegynder
07. juni 2006 - 22:10 #30
Den ovenstående fejlmelding får jeg ved at køre dit sidst nævnte script fra 04/06-2006 17:48:44

Jeg har også forsøgt mig med scriptet du foreslår den 04/06-2006 17:39:08, men jeg har nok umiddelbart svært ved at kombinere de to scripts... altså det script der skal lægge text, title og en henvisning til billedet ind i en database og det script der uploader et billede til en mappe.
Avatar billede clausberg Nybegynder
19. juni 2006 - 21:05 #31
Du skal ihvertfald have point, så smid et svar :-)
Avatar billede michael_stim Ekspert
21. juni 2006 - 14:18 #32
Sorry, havde lige glemt dig.
Fungerer det? Ellers må du lige sige hvilken fejl du får
Avatar billede clausberg Nybegynder
21. juni 2006 - 21:34 #33
Jeg har ikke fået det til at virke

Jeg kan godt finde ud af at lave en "form" hvor man kan tilføje tekst, titel og beskrivelse, men jeg kan ikke finde ud af at gemme det i en database samtidigt med at billedet blot smides ned i et bibliotek.

Any clue??????
Avatar billede michael_stim Ekspert
21. juni 2006 - 21:53 #34
<?
if(isset($_POST['uploadPics'])){
    $konfiguration["upload_bibliotek"] = "./upload";
      $konfiguration["max_stoerrelse"] = "30";
      list($major, $minor, $rev) = explode(".", phpversion());
      if($major < 4) {
        die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
      }

      if($minor < 1) {
        $_FILES = $HTTP_POST_FILES;
        $_POST = $HTTP_POST_VARS;
        $_SERVER = $HTTP_SERVER_VARS;
      }
      if($_FILES["upload"]["size"] > 0) {
        $fra = $_FILES["upload"]["tmp_name"];
        $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];
        $fil_stoerrelse = filesize($fra)/1024;
        if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
            die("Desv&aelig;rre - filen er for stor. Jeg accepterer kun " .
            $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
            ceil($fil_stoerrelse) . "kb");
        }
        if(function_exists("move_uploaded_file")) {
            move_uploaded_file($fra, $til);
        } else {
            copy($fra, $til);
        }
      }
      mysql_connect("localhost", "xxx", "xxx");
      mysql_select_db("xxx");
      $file  = $_FILES['upload']['name'];
      $text  = mysql_real_escape_string($_POST["text"]);
      $title = mysql_real_escape_string($_POST["title"]);
      mysql_query("insert into billeder (`file`, `text`, `title`) values('$file','$text','$title')") or die(mysql_error());
      mysql_close();
}
?>
OBS: glem ikke <html>,<body> osv
<form action="<?=$_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data" name="">
<b>Titel</b><input type="text" name="title">
<p>
<b>Tekst</b><br><textarea name="text" cols="30" rows="10"></textarea>
<b>Billede</b><input type="file" name="upload">
<input type="submit" name="uploadPics" value="Upload Billeder">
</form>
Avatar billede michael_stim Ekspert
21. juni 2006 - 21:56 #35
Måske skulle du lave text-feltet i tabellen om til text istedet for varchar. Eller lave dit textarea om til et tekstfelt.
Avatar billede clausberg Nybegynder
21. juni 2006 - 22:03 #36
Jeg prøver lige og vender tilbage - tak for svaret i forhold til biblioteket. Jeg kæmper videre med den ide! :-)
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