Er den tom?

Tags:    asp

<< < 12 > >>
Hej allesammen. Jeg har et problem.

Jeg har et forum. Når der er en person som har skrevet en besked i forummet er det meningen at hans billed skal vises ved siden af. Hvis han ikke har oplyst et billed skal billeder/mangler.jpg vises istedet..

Her er koden er det udsnit af koden som problemet ligger i

Fold kodeboks ind/udKode 


Problemet er at linien if rs6.eof or rs6.bof ikke virker. Den tjekker ikke om der er et indhold i feltet "Billed". Lige meget om der er et indhold eller ej så hvis den <%=rs6("Billed")%>. Det er jo ikke meningen. Det er meningen at <%=rs6("Billed")%> kun skal vises hvis der er et billed. Ellers skal billeder/mangler.jpg vises. Nogen der ved hvad jeg gør galt?



12 svar postet i denne tråd vises herunder
5 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Problemet er at du har misforstået noget grundlæggende :D

Eof bruges til at se om der ikke er flere resultater tilbage i resultat sættet (rs), det være sig fordi det er tomt eller fordi du har læst igennem alle resultaterne.
bof er jeg ikke så sikker på, men det er vist noget med om resultat sættet befinder sig inden første resultat.

Uanset hvad, så finder du jo et resultat hvis brugeren findes, så du kan ikke bruge eof og bof til så meget i forbindelse med om denne bruger har et billede eller ej.

Det du vil se på er værdien rs6("Billed") som enten indeholder adressen på billedet, eller din default værdi fra databasen eller hvor du nu fylder den i.

Så du skal finde ud af hvad værdien er hvis der intet billede er (er feltet null, en tom streng eller?), og teste for den værdi.

Så vil det virke som du forventer.



Jeg vil tro at du kan gøre det sådan her:

Fold kodeboks ind/udKode 


Jeg er ikke sikker, men det burde virke..



kan du ikke bare sætte startværdien for det felt i databasen til at være "billeder/mangler.jpg"? :P



Du skal hen af den sti som simon har foreslået. lad mig give et eksempel. Du kan uden tvivl sagtens flette en masse værdier fra din database ud så de kan ses for folket. Flet alle dem du skal bruge på tradionel vis. feks.

<%=rs6("brugernavn")%>
<%=rs6("profiltekst")%>
OSV
du kommer så til det omtalte billede der skriver du så

<%
If rs6("Billed") = "" Then %>
<img border="1" src="billeder/mangler.jpg" width="70" height="90">
<% end if %>

<%
If rs6("Billed") <> "" Then %>
<img border="1" src="<%=rs6("Billed")%>" width="70" height="90">
<% end if %>

sværre er det ik , tror simpelthen at du har "tænkt" det meget værre end det er, har selv været der

Mvh Netkravler Aka Michael

desuden så jeg i din kode at du har skrevet

<%set rs6 = conn.Execute("select Billed From Privat where Pid = " & rs5("Brugerid") & " ")
if rs6.eof or rs6.bof then
%>
er det med fuld overlæg at du har både rs5 og rs6 i din kode eller er det en stavebøf



Indlæg senest redigeret d. 21.05.2006 01:18 af Bruger #10008
Som Jonatan nu har pointeret massere gange, er problemet at du tjekker om feltet indeholder en tom streng "", men da du har sat feltet til at tillade null-værdier (hvilket ikke er det samme som en tom streng), vil din sammenligningen mellem feltet og "" være nytteløs. Det du derimod skal gøre er at tjekke om feltet er null. Dog kan det måske forekomme at både en tom streng og null indikerer at der ikke er noget billede, så derfor er det nok smartest at tjekke for begge ting (kommer lidt an på hvordan resten af dit system fungerer):

Fold kodeboks ind/udKode 


Den nemmeste løsning, er dog at tjekke længden af strengen:
Fold kodeboks ind/udKode 


Håber det hjalp på problemerne :)



Indlæg senest redigeret d. 21.05.2006 11:31 af Bruger #2416
Om det virker at sammenligne rs6("Billed") med "", kommer an på den værdi feltet har når der ikke er angivet et billede.

Som nævnt i min kommentar foroven (men ok, du postede vist din ret tæt på :D)



Jeg bruger tit det der med at sammenligne med "" for det tjekker jo bare om tablen indeholder noget, og man må jo gå ud fra at den ikke indeholder noget når Morten havde tænkt sig at bruge .EOF så det birde altså virke..



If rs6("Billed") <> "" Then virker ikke... Nu er det bare billeder/mangler.jpg der bliver vist hver gang..

Og når man ser på tabellen i acces databasen så er startværdien ingen ting.... Så ved ikke hvad der er galt...

og det mærkelige er at jeg har udskrevet rs6("Billed") og det opføre sig præcis som det skal. Ved de profiler hvor jeg har lagt et billed ind bliver billedstien udskrevet og ved dem der ikke er har noget billed kommer der ingen ting.. Så undre mig virkelig meget at det ikke virker.

Og lige en ting. Har selv prøvet If rs6("Billed") = "" Then som jo egentlig bare burde give den modsatte virkning af If rs6("Billed") <> "" Then men da det ikke virkede prøvede jeg istedet om man kunne med rs6.eof. Men det kunne man så heller ikke.

Jeg er virkelig lost med hensyn til hvad jeg skal gøre her.



Indlæg senest redigeret d. 20.05.2006 16:31 af Bruger #6475
Morten - læs dog hvad jeg skrev.

1) Find ud af hvad der står i databasen i feltet "Billed" når der IKKE er et billede på en bruger (står der null eller hvad står der?)

2) test for denne værdi.

Hvis det ikke hjælper at teste for værdien "", ja så er det nok ikke denne værdi som databasen indeholder når der intet billede er.

Vel?




og det mærkelige er at jeg har udskrevet rs6("Billed") og det opføre sig præcis som det skal. Ved de profiler hvor jeg har lagt et billed ind bliver billedstien udskrevet og ved dem der ikke er har noget billed kommer der ingen ting.. Så undre mig virkelig meget at det ikke virker.


Er det ikke det jeg har gjort her???

Altså jeg har skrevet "<%=rs6("Billed")%>" (de to " er med i koden) og når en bruger med et billed bliver vist bliver resultatet så "billeder/admin.jpg" og når det er en bruger som ingen billed har så bliver der bare vist to "" uden mellemrum eller noget.

Ergo vil jeg sige at det burde virke. Og når jeg går ind i acces databasen og læser så er der tomt ud for "Standardværdi" og ud for "TilladNulLængde" står der Ja.

Så er det ikke det jeg har gjort eller er der noget jeg mistforstår fuldstændigt?



<< < 12 > >>
t