Avatar billede simotho Nybegynder
10. november 2008 - 12:04 Der er 29 kommentarer

Indsæt billede i databse

Hvordan indsætter man et billede i en database som man har uploadet, og hvis det kan lade sig gøre, kunne jeg godt tænke mig en uddbyning og databasens indhold :)
Avatar billede michael_stim Ekspert
10. november 2008 - 12:12 #1
Det er ikke så smart at smide billeder, filer og lign ind i databaser mm det er strengt nødvendigt.
Avatar billede michael_stim Ekspert
10. november 2008 - 12:12 #2
mm = med mindre ;o)
Avatar billede jacobo Nybegynder
10. november 2008 - 12:36 #3
Mit forslag er: gem det uploadede billedes filnavn og indsæt tekststrengen i din db.
Avatar billede simotho Nybegynder
10. november 2008 - 14:57 #4
jacobo@

Det lyder smart nok, kunne du give et eksempel som kunne illustrere det
Avatar billede jacobo Nybegynder
10. november 2008 - 15:10 #5
Hvis du kender filnavnet, er det jo meget simpelt. Du laver en formular der i mit tilfælde ser sådan her ud:
<td align="left"><input name="cif_file" type="text" size="100"
    value="<?php echo 'path1/' . $path2 .'/dit_filnavn'; ?>" >
</td>
Efter formularen er submitted, sender jeg det til db med INSERT INTO table_name osv.
Avatar billede olebole Juniormester
10. november 2008 - 15:18 #6
<ole>

jacobo >> Du har vist ikke forstået spørgsmålet. Såvidt jeg kan læse, vil spørgeren uploade et billede og lægge dets binære data i et blob-felt i databasen  =)

/mvh
</bole>
Avatar billede simotho Nybegynder
10. november 2008 - 15:18 #7
Hvorfor virker den her saa ikke

<?php
include("connect.php");

      $path = "billeder/";
      $filename = $_FILES['file']['name'];
      if(count($_POST)>0)
      {
          $file = $_FILES['file'];
        if(move_uploaded_file($file['tmp_name'], $path.$filename))
          {
              echo '<b>Billedet er blevet uploadet...</b><br />';
          }
          else
          {
              echo 'Der opstod en fejl - filen blev ikke uploadet!';
          }
      {
      $picture = "billeder/".$_FILES['file']['name'];
                     
      mysql_query("UPDATE bruger_billeder SET pic  = '$picture'") or die(mysql_error());)

      }


echo '<form name="form" enctype="multipart/form-data" method="POST" action="">'
echo '<table width="400" border="0">'
echo '<tr>'
echo '<td><b>Upload Fil:</b></td>'
echo '<td><input type="file" name="file" value=""></td>'
echo '</tr>'
echo '<tr>'
echo '<td>&nbsp;</td>'
echo '<td><input type="submit" name="submit" value="Opload billede" /></td>'
echo '</tr>'
echo '</table>'
echo '</form>';'
?>
Avatar billede simotho Nybegynder
10. november 2008 - 15:21 #8
olebole @

Vil ha den skal faa overstaaende kode til at uploade til en mappe og databasen
Avatar billede olebole Juniormester
10. november 2008 - 15:22 #9
Hvad betyder 'virker ikke'? Hvad sker der? Hvad sker der ikke? Du må få en eller flere fejlmeddelelser - hvorfor hører vi ikke om dem? Har du evt. slået fejlmeddelelser fra?

Du har i hvertfald noget parentes-ged. Der må skulle stå:
    mysql_query("UPDATE bruger_billeder SET pic  = '$picture'") or die(mysql_error());

- men du er nødt til at have fejlmeddelelser slået til, hvis du vil kode PHP  ;o)
Avatar billede michael_stim Ekspert
10. november 2008 - 15:23 #10
olebole>>Tror jacobo har forstået, men spinder videre på min kommentar.
Avatar billede olebole Juniormester
10. november 2008 - 15:23 #11
Der er også noget Tubor-ged:

          else
          {
              echo 'Der opstod en fejl - filen blev ikke uploadet!';
          }
      { // <--  Hvor kommer den fra - og hvad skal den?
      $picture = "billeder/".$_FILES['file']['name'];
                     
      mysql_query("UPDATE bruger_billeder SET pic  = '$picture'") or die(mysql_error());

      }
Avatar billede olebole Juniormester
10. november 2008 - 15:29 #12
michael_stim >> det lyder også mest hensigtsmæssigt - med mindre man er god til at holde sin DB og DB-kode virkelig fit-for-fight, samt har en kraftfuld DB/DB-server  ;o)

simotho >> Jeg tror, du laver fejl, uden du får det at vide. Skriv altid:
    error_reporting(E_ALL);

- i toppen af dokumentet, hvis din udbyder har været 'venlig' og skjuler virkeligheden ved at disable fejlmeldinger i php.ini filen  ;o)
Avatar billede michael_stim Ekspert
10. november 2008 - 15:34 #13
Og ubegrænset plads (hvilket de fleste som lejer sig ind på et webhotel ikke har)
Avatar billede simotho Nybegynder
10. november 2008 - 16:09 #14
Den skriver ingen fejl selvom jeg skrev den kode du lavede altsaa    error_reporting(E_ALL);

Den viser bare blankt!
Avatar billede olebole Juniormester
10. november 2008 - 16:18 #15
Det kan ikke passe! Koden fra kommentaren (10/11-2008 15:18:22) _skal_ udløse fejl  =)

Men derudover giver din database opdatering jo heller ikke rigtig mening. Din query vil opdatere alle tabellens rækker og sætte hver deres pic-felt til, hvad '$picture' indeholder. Du mangler nok en WHERE-del ... hvis du altså vil bruge UPDATE
Avatar billede simotho Nybegynder
10. november 2008 - 16:59 #16
Ville du gi et eksempel olebole, er forholdsvis ny paa dette omraade
Avatar billede dkfire Nybegynder
10. november 2008 - 18:28 #17
Måske det slet ikke skal være en update, men en insert i stedet for.
Avatar billede dkfire Nybegynder
10. november 2008 - 18:34 #18
Har du prøvet :
<?php
error_reporting(E_ALL);
include("connect.php");

     
      if(isset($_POST['submit']))
      {
        $path = "billeder/";
        $filename = $_FILES['file']['name']; 
        $file = $_FILES['file'];
        if(move_uploaded_file($file['tmp_name'], $path.$filename))
        {
            echo '<b>Billedet er blevet uploadet...</b><br />';
            $picture = $path.$filename;
                   
            mysql_query("UPDATE bruger_billeder SET pic  = '$picture' WHERE ?? = ??") or die(mysql_error());
        }
        else
        {
            echo 'Der opstod en fejl - filen blev ikke uploadet!';
        }
     
      }

echo '<form name="form" enctype="multipart/form-data" method="POST" action="">'
    .'<table width="400" border="0">'
.'<tr>'
.'<td><b>Upload Fil:</b></td>'
.'<td><input type="file" name="file" value=""></td>'
.'</tr>'
.'<tr>'
.'<td>&nbsp;</td>'
.'<td><input type="submit" name="submit" value="Opload billede" /></td>'
.'</tr>'
.'</table>'
.'</form>';
?>
Avatar billede simotho Nybegynder
10. november 2008 - 19:17 #19
Vil lige proeve det

hvorfor har du skrevet <            mysql_query("UPDATE bruger_billeder SET pic  = '$picture' WHERE ?? = ??") or die(mysql_error());

alts[ WHERE ?? = ??")
Avatar billede simotho Nybegynder
10. november 2008 - 19:27 #20
Den skriver ikke noget ind til databasen som jeg ville ha :s
Avatar billede dkfire Nybegynder
10. november 2008 - 20:03 #21
Jeg skriver ?? da jeg ikke ved hvilke felter du ellers har i din tabel og hvilken værdi et felt i så fald skulle have.
Du bør på en eller anden måde kunne identificere den række i din tabel som du vil opdatere.

Der ud over er der så mange generelle fejl i din kode at jeg vil foreslå dig at begynde helt forfra med en tutorial med basis php.

Hvis du kører den kode jeg har skrevet bør du som minimum få en mysql error ud på skærmen, hvis ikke, så har du noget andet kode liggende på samme side som giver fejl. Men det bør du også få vist.
Avatar billede simotho Nybegynder
10. november 2008 - 20:08 #22
Den kode du har vist virke fint, den opdatere bare ikke i databasen, det er problemet :)
Avatar billede dkfire Nybegynder
10. november 2008 - 20:12 #23
Hvad giver den af fejl i mysql ??
Avatar billede simotho Nybegynder
10. november 2008 - 20:40 #24
Den viser ikke noget i databasen
Avatar billede simotho Nybegynder
10. november 2008 - 20:45 #25
Det jeg i bund og grund søger er et upload script der efterfølgende skriver det ind i en database og så kan man udskrive det som et profilbillede på en anden side
Avatar billede dkfire Nybegynder
10. november 2008 - 21:07 #26
Nej men giver den nogen fejl på siden ??
Hvad skriver den ud på siden lige nu ??
Avatar billede dkfire Nybegynder
11. november 2008 - 09:55 #27
Hvis den ikke gemmer noget i databasen på nuværende tidspunkt og den uploader dit billede til mappen, så må det den give en eller anden mysql fejlbesked.

Evt kan du prøve at ændre:
mysql_query("UPDATE bruger_billeder SET pic  = '$picture' WHERE ?? = ??") or die(mysql_error());
til :
mysql_query("INSERT INTO bruger_billeder (pic) VALUES  ('$picture')") or die(mysql_error());
Avatar billede simotho Nybegynder
11. november 2008 - 11:47 #28
Fik det til at virke ved hjælp af en anden løsning ;)

Så mangler jeg bare og udskrive billedet :)
Avatar billede dkfire Nybegynder
11. november 2008 - 14:56 #29
Hvordan blev din løsning så ?
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