Avatar billede gabi Novice
17. august 2007 - 02:31 Der er 11 kommentarer og
1 løsning

Indsætning af billede/foto fra database

Jeg har en database: medlemmer.mdb

I denne database har jeg oprettet et felt: Billede Datatype: OLE-objekt
Jeg har en asp-fil: spillerliste.asp hvor jeg godt kunne tænke mig, at man kunne se det billede, der ligger i databasen.

Jeg har fundet denne kodestump på eksperten:
Response.Write("<img src='" & rs("Billede") & "'>") &"</p>"

Men hvis jeg sætter det ind får jeg følgende fejl:

Microsoft VBScript runtime error '800a000d'
Type mismatch
/asp/spillerliste.asp, line 37
Nu ved jeg ikke om problemet ligger i databasen (Access 2003) eller i asp-koden
Nogen der kan hjælpe mig?


<%

'Databaseforbindelse
set conn = server.createobject("ADODB.connection")
conn.Open "DBQ=" & server.mappath("../db/medlemmer.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}"

SQL = "select * from Medlemmer"
set RS = conn.execute( SQL )

' Genneml&oslash;b Recordset (rs) med en l&oslash;kke
Do

  ' Udskriv v&aelig;rdien af kolonnen Fornavn
  Response.Write "<p><strong>Nummer:</strong>" &" "  & rs("Nummer") &"</p>"
  Response.Write "<p><strong>Navn:</strong>" &" "  & rs("Navn") &"</p>"
  Response.Write "<p><strong>Karakter:</strong>" &" "  & rs("Karakter") &"</p>"
  Response.Write "<p><strong>Anden karakter:</strong>" &" "  & rs("Altkarakter") &"</p>"
  Response.Write "<p><strong>In-game:</strong>" &" "  & rs("Ingame") &"</p>"
  Response.Write("<img src='" & rs("Billede") & "'>") &"</p>" = linie 37
  Response.Write "<p><a href='liste.asp' class='link'>Slet fra spillerlisten</a></p>"&"</p>"
 
  Response.Write  "<hr>"
 
  ' G&aring; til n&aelig;ste Record i rs
  rs.MoveNext

' Forts&aelig;t indtil rs er genneml&oslash;bet (EOF = End Of File)
Loop While Not rs.EOF

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
Avatar billede weis Nybegynder
17. august 2007 - 08:54 #1
hvis du vil have "profil billeder" så vil jeg forslå dig, at du i din database gemmer stien til et billed, som ligger på serveren istedet for at oprettet det som OLE objekt, så vil din ("<img src='" & rs("Billede") & "'>") også virker.

Fejlen "Type mismatch" komme af, at du vil indsætte OLE objektet, som en tekst-string og det er det jo ikke :)
Avatar billede fennec Nybegynder
17. august 2007 - 08:56 #2
Ser ud som om du har gemt den binære udgave af filen i databasen. Hvis det er rigtig skal den også udskrives binært igen.

Normalt gemme man billeder på serveren, også bare filnavnet i databasen. Når man gemmer hele billeder i DB'en bliver den hurtig meget stor, hvilket går ud over performance. Specielt i Access som er filbaseret.

Er det noget du kan ændre, eller er der allerede medlemmer oprettet?
Avatar billede gabi Novice
17. august 2007 - 11:02 #3
Jeg tænkte det nok. Har også siddet og prøvet på at finde ud af at linke til billedet i databasen. Men så skal jeg vist flytte mit spørgsmål til en anden gruppe her i Eksperten.

Ja, jeg kan sagtens ændre det. Databasen er helt ny (kun 5 medlemmer endnu) og jeg har selv lagt nogle billeder ind. Jeg er først ved at opbygge/udevide mulighederne.

Det er fordi et medlem har ønsket mulighed for at uploade et billede til databasen, og jeg er meget "grøn" på området, så jeg skal tage lidt ad gangen og så få det til at fungere først. Så det er godt at det ikke strømmer ind med oprettelser i databasen.

Har jeg ret i at jeg skal flytte spørgsmålet for at få hjælp til at gemme stien til billedet i databasen?
Avatar billede fennec Nybegynder
17. august 2007 - 11:09 #4
Det er ikke strengt nødvendigt at flytte ?'et.

Går ud fra du allerede har et upload script, som gemmer billeder i databasen. Det script skla vi have ændret til at gemme i en folder i stedet.

Kan du vise os den kode? Det behøver kun være selve ASP delen. Altså der hvor du kalder dit upload komponent og gemme i databasen.
Avatar billede gabi Novice
17. august 2007 - 11:18 #5
Jeg har ikke noget script til at uploade billede med endnu, da jeg lige først ville finde ud af hvordan jeg overhovedet får det til at vises når man blot vil se selve listen med tilhørende oplysninger + billede. Men lad os tage det fra en ende.

Men hvor skal jeg nu begynde.

Jeg har en formular til brug for tilmelding til listen over medlemmer:

Den ser sådan ud:

<form action="modtag.asp" method="post" name="spiller" id="spiller">
  <p class="h1o">
  Indtast dine oplysninger her  </p>
  <table width="500" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td class="h2o">Off-game</td>
      <td width="258" class="h2o">In-game</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td><label>Navn:</label>        *&nbsp;<br>
      <input name="navn" type="text" id="navn" size = "30"></td>
      <td><label>Navn:</label>        *&nbsp;<br>
<input name="ingame" type="text" id="ingame" size = "30"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td><label>Adresse:</label>
&nbsp;<br>
<input name="adresse" type="text" id="adresse" size = "30"></td>
      <td><label>Karakter:</label>        *&nbsp; <br>
<select name="karakter" id="karakter">
  <option value="">V&aelig;lg her...</option>
  <option>Dv&aelig;rg</option>
  <option>Goblin</option>
  <option>Skovelver</option>
  <option>Andet</option>
</select>
</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>
        <label>Postnr.:</label>
        <br>
        <input name="postnr" type="text" id="postnr"  size = "30">
      </td>
      <td><label>Anden karakter:</label>      <br>
          <input name="altkarakter" type="text" id="altkarakter" size = "30">
      </td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td>By:<br>
      <input name="by" type="text" id="by" size = "30"></td>
      <td rowspan="7" valign="top"><p class="link">Bem&aelig;rk!</p>
      <p> Alle felter markeret med * skal udfyldes. </p>
      <p>Hvis din karakter ikke er p&aring; listen skal du v&aelig;lge &quot;Andet&quot; og skrive din karakter i n&aelig;ste felt &quot;Anden karakter:&quot; </p></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td width="242"><label>Telefonnummer:</label>
&nbsp;<br>
      <input name="telefon" type="text" id="telefon" size = "30"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td><label>E-mail:</label>
&nbsp; <br>
<input name="mail" type="text" id="mail" size = "30"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td><label>Alder:</label>        *&nbsp;<br>
<select name="alder" id="select" >
  <option value="Ikke oplyst">V&aelig;lg her...</option>
  <option>1950</option>
  <option>1951</option>
  <option>1952</option>
  <option>1953</option>
  <option>1954</option>
  <option>1955</option>
  <option>1956</option>
  <option>1957</option>
  <option>1958</option>
  <option>1959</option>
  <option>1960</option>
  <option>1961</option>
  <option>1962</option>
  <option>1963</option>
  <option>1964</option>
  <option>1965</option>
  <option>1966</option>
  <option>1967</option>
  <option>1968</option>
  <option>1969</option>
  <option>1970</option>
  <option>1971</option>
  <option>1972</option>
  <option>1973</option>
  <option>1974</option>
  <option>1975</option>
  <option>1976</option>
  <option>1977</option>
  <option>1978</option>
  <option>1979</option>
  <option>1980</option>
  <option>1981</option>
  <option>1982</option>
  <option>1983</option>
  <option>1984</option>
  <option>1985</option>
  <option>1986</option>
  <option>1987</option>
  <option>1988</option>
  <option>1989</option>
  <option>1990</option>
  <option>1991</option>
  <option>1992</option>
  <option>1993</option>
  <option>1994</option>
  <option>1995</option>
  <option>1996</option>
  <option>1997</option>
  <option>1998</option>
  <option>1999</option>
  <option>2000</option>
</select></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td valign="bottom">&nbsp;</td>
    </tr>
    <tr align="center">
      <td colspan="2" class="h2o">Find selv p&aring; noget her!</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td valign="bottom">&nbsp;</td>
    </tr>
    <tr>
      <td valign="bottom"><label>Brugernavn: * <br>
        <input name="brugernavn" type="text" id="brugernavn" size = "30">
      </label>&nbsp;</td>
      <td valign="bottom"><label>Password: * </label>
        &nbsp;<br>
      <input name="pass" type="password" id="pass"></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td valign="bottom">&nbsp;</td>
    </tr>
    <tr align="center">
      <td colspan="2" valign="bottom"><input name="submit" type="submit" value="Gem"> <input type="reset" name="Reset" value="Ryd felter"></td>
    </tr>
  </table>
</form>

Vil du også have koden fra modtag.asp ?
Avatar billede fennec Nybegynder
17. august 2007 - 11:27 #6
Ok, du har ingen upload overhoved...

Så skal vi først vide om du har adgang til et upload komponent (ASPUpload, AspSmartUpload). Hvis det ikke er din egen server, har din udbyder sikkert en liste af komponenter beskrevet på deres hjemmeside.
Avatar billede gabi Novice
17. august 2007 - 11:51 #7
orv nu begynder det at lyde kompliceret. Men hvis ikke du har noget imod at hjælpe sådan en nybegynder som mig, så kan jeg fortælle at jeg har webhotel hos web10.dk, så det kigger jeg lige efter.
Avatar billede gabi Novice
17. august 2007 - 11:55 #8
Dette fandt jeg ved at søge i support på AspSmartUpload, er det noget der kan bruges?

Nedenstående komponenter er installeret på alle windowsserverne.

Components:
AspUpload3.0.0.3
AspSmartUpload 3.x
AspImage 2.x
W3 Jmail4.4
MyODBC-3.51.12
ODBC.NET

SP:
Jet Sp8
MDAC 2.8

Kode eksempler kan ses på http://taxx.talkactive.net/poc, er du f.eks. på serveren ta15 kan du se eksempler på http://ta15.talkactive.net/poc
Avatar billede fennec Nybegynder
17. august 2007 - 12:06 #9
Start med at tage et kik i manualen til ASPupload. De har rigtige gode kode eks.
Specielt denne side som kombinere fil og form felter. Der er det nemt at smide en database indsættelse ind i:
http://www.aspupload.com/manual_simple.html

Her har de et fuldt eks med den opbygning du har nu. Altså filerne gemmes binært i databasen, men også hvor de bare gemme filnavnet:
http://www.aspupload.com/manual_db.html
Avatar billede gabi Novice
17. august 2007 - 12:11 #10
det kigger jeg på når jeg har tid - bliver nok først i weekenden, men ved så ikke om vi skal afslutte spørgsmålet her og du får dine første point og så genoptage spørgsmålet, når jeg har kigget på det. Eller om vi bare skal stille dette spgsm. på standby og så fortsætte, når jeg har mere tid (er faktisk på arbejde) og du bør også have nogle flere point til sådan en kompliceret sag.
Avatar billede fennec Nybegynder
17. august 2007 - 12:41 #11
Er også selv på arbejde :o)

Men vi kan da godt afslutte dette ?. Jeg er nemlig alligevel ikke online igen før på mandag. Har fri nu :o)
Avatar billede gabi Novice
17. august 2007 - 12:48 #12
fint nok - så må vi se om jeg fanger dig igen - måske!
Kan du så have en rigtig god weekend.
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
Kurser inden for grundlæggende programmering

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