24. september 2005 - 23:45Der er
12 kommentarer og 1 løsning
tjek om databasefelt er tomt!
hejsa, jeg har en lille if-sætning der skal tjekke om et felt i databasen er tomt. Såfremt feltet "billede" er tomt skal jeg vise et billede som hedder intetbillede.jpg. Men hvis feltet billede ikke er tomt, så skal jeg vise indholdet feltet som link til billedet.
Jeg har prøvet sådan her:
strSQL= "SELECT billede FROM brugere WHERE "&session.contents("login")&"'=brugernavn;" Set rs = Conn.Execute(strSQL) If not rs("billede") = 0 THEN response.write "<img border=1 src="&rs("billede")&" width=200><br><br>" else response.write "<img border=1 src=intetbillede.jpg width=200><br><br>" end if
der skal selvfølgelig ikke stå "if not rs("billede") = 0, for så tjekker den om der står tallet "0" i feltet. Den skal tjekke om feltet er tomt, (eller kun indeholder mellemrum)!
hmmm meget mystisk. Ja det virker fint kalp, bortset fra at min if-sætning gør vrøvl.
Hvis feltet indeholder en helt almindelig url til et billede, så går der et eller andet galt! Jeg kommer ikke ned til efter else i if-sætningen.
Når jeg viser dokumentet i browseren så udskriver den rigtig nok et billedet intetbillede.jpg såfremt jeg har slettet alt i feltet billede. Når jeg opdaterer feltet og giver den en url, så har den da fattet at den ikke skal vise billedet intetbillede.jpg, men den viser ikke noget andet. Når jeg ser i kildekoden for siden har den html'en <img border=1 src= width=200>
prøver jeg inden if-sætningen og udskrive response.write "<img border=1 src="&rs("billede")&" width=200><br><br>" så kommer billedet som url'en henviser til fint frem. Det kan kan den bare ikke finde ud af når den står i if-sætningen.
Alternativt har jeg prøvet at skrive if not, og så bytte om på mine to response.write sætninger, med det resultat at selvom der er en url i feltet, så viser den stadig intetbillede.jpg???
strSQL= "SELECT billede FROM brugere WHERE "&session.contents("login")&"'=brugernavn;" Set rs = Conn.Execute(strSQL) If rs("billede") = "" OR rs("billede") = " " THEN response.write "<img border=1 src=intetbillede.jpg width=200><br><br>" else response.write "<img border=1 src="&rs("billede")&" width=200><br><br>" end if
Du kan for sjov skyld afprøve denne
strSQL= "SELECT billede FROM brugere WHERE "&session.contents("login")&"'=brugernavn;" Set rs = Conn.Execute(strSQL) If rs("billede") = "" OR rs("billede") = " " THEN response.write "<img border=1 src=intetbillede.jpg width=200><br><br>" end if If rs("billede") <> "" AND rs("billede") <> " " THEN response.write "<img border=1 src="&rs("billede")&" width=200><br><br>" end if
If rs("billede") = "" OR rs("billede") = " " THEN response.write "<img border=1 src=intetbillede.jpg width=200><br><br>" else response.write "hej hej hej"
så skriver den fint hej hej hej ud, hvis ikke feltet er tomt, men den kan ikke finde ud af at skrive billedet ud vha. response.write "<img border=1 src="&rs("billede")&" width=200><br><br>"
det er til at få lange dadler af, der er ingen af de 2 der virker der. Bruger jeg dit forslag 2, så kommer der ikke engang <img> koden frem på siden. så er den helt væk.
strSQL= "SELECT billede FROM brugere WHERE "&session.contents("login")&"'=brugernavn;" Set rs = Conn.Execute(strSQL) If rs("billede") = "" OR rs("billede") = " " THEN response.write "<img border=1 src=intetbillede.jpg width=200><br><br>" else response.write "<img border=1 src="'&rs("billede")&'" width=200><br><br>" end if
blot et bud.. jeg arbejder ikke rigtig med access:)
hmmm det er sgu da for mærkeligt. Det lader til at den "glemmer" hvad der står i feltet "billede" når den hopper ned til else i if-sætningen. Jeg har fået det til at virke ved at gentage sql-sætningen efter else:
strSQL= "SELECT * FROM brugere WHERE '"&spasser&"'=brugernavn;" Set rs = Conn.Execute(strSQL) If rs("billede") = "" OR rs("billede") = " " THEN response.write "<img border=1 src=intetbillede.jpg width=200><br><br>" else strSQL= "SELECT * FROM brugere WHERE '"&spasser&"'=brugernavn;" Set rs = Conn.Execute(strSQL) response.write "<img border=1 src='"&rs("billede")&"' width=200><br><br>" end if
forresten, mine ændringer i sql-sætningen har ikke betydet noget, da det den sætning jeg har arbejdet med hele tiden (ændrede det lige efter jeg stillede det oprindelige spørgsmål)
Hvis den kode vi lige har arbejdet med er på en ASP side så skal du gøre sådan her..
strSQL= "SELECT billede FROM brugere WHERE "&session.contents("login")&"'=brugernavn;" Set rs = Conn.Execute(strSQL) If rs("billede") = "" OR rs("billede") = " " THEN response.write "<img border=1 src=intetbillede.jpg width=200><br><br>" else response.write "<img border=1 src=<% rs("billede") %> width=200><br><br>" end if
eller hvis du vil gemme det i en variabel.. oprette din variabel først
fx.
dim minVariabel
minVariabel = rs("billede")
og ændre koden til
strSQL= "SELECT billede FROM brugere WHERE "&session.contents("login")&"'=brugernavn;" Set rs = Conn.Execute(strSQL) If rs("billede") = "" OR rs("billede") = " " THEN response.write "<img border=1 src=intetbillede.jpg width=200><br><br>" else response.write "<img border=1 src=<% minVariabel %> width=200><br><br>" end if
men jeg skal ikke forvirrer dig mere end højest nødvendigt:P
Glad for at vi fik løst det oprindelige spørgsmål:)
det kan være jeg leger lidt med det hvis jeg får lyst. Lige nu er jeg bare glad for at det virker, så går jeg ikke så meget op i hvordan kodningen ser ud.
Synes godt om
Ny brugerNybegynder
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.