webForumDet fria alternativet

nytt i databasen

ASP

12 svar · 297 visningar · startad av Gimbo

Medlem sedan dec. 20001 626 inlägg
Frågan#1

Hejsan!

jag uppdaterar en lista på min websida kontinuerligt, denna lista är ordnad i bokstavsordning och jag undrar vad man skriver för att det till höger om namnet på listan, tillkommer ordet NY, då jag har uppdaterat denna lista, och när jag sedan skriver in ngt nytt i databsen så ska ordet NY tillkomma de nya och försvinna från de inna, förstå ni va jag menar?

Hur gör man detta??

så här ser min db kopling ut:

<%
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("..\databasen.mdb")
	%>
<%
	Set RecSet = Server.CreateObject("ADODB.Recordset")
	Visa = "SELECT * FROM musik ORDER BY Artist "
	RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic
	%>

och sedan matar jag in posterna från databasen i tabbellerna med <%=RecSet("blabla")%>

Medlem sedan dec. 200012 464 inlägg
#2

Det går att göra på lite olika sätt. Antingen kan du ha en kolumn i tabellen som innehåller det datum då du lade dit posten och när du visar data så jämför du det datumet med dagens datum och om det är mindre än t.ex. ena vecka gammalt kan du skriva ut nytt.

Vid insert:


sql = "insert into musik(artist,datum,titel) values('Roland Cedermark',now(),'Dragspelsmambo')"
connect.execute sql,,128

och sedan när du hämtar data

sql = "select * from musik order by artist"
set rs = connect.execute(sql)
while not rs.eof 
'skriv ut vanliga data
if datediff("d",rs("datum"),now() < 7 then
   response.write "Nytt"
end if
rs.movenext
wend

Ett annat sätt är att ha en kolumn i tabellen som antingen kan innehålla texten Nytt eller vara tom. När du lagrar nya poster kan du göra så här

sql = "update musik set nyhet = null"
connect.execute sql,,128

'gör insert på alla nya poster
sql = "insert into musik(artist,nyhet,titel) values('Roland Cedermark','nytt','Dragspelsmambo')"
connect.execute sql,,128

och sedan när du hämtar data

sql = "select * from musik order by artist"
set rs = connect.execute(sql)
while not rs.eof 
'skriv ut vanliga data
if not isnull(rs("nyhet")) then
   response.write "Nytt"
end if
rs.movenext
wend

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20001 626 inlägg
#3

Om vi säger att jag vill köra med metod nr2 som du rekomendera, så förstår jag inte riktigt vart jag ska ha kodsnuttarna du gav mig, för så här ser min kod ut då jag lägger till en post i databsen...

<%
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("..\databasen.mdb")
%>
<%
	Set RecSet = Server.CreateObject("ADODB.Recordset")
   	Addera = "SELECT * FROM musik"

   	RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
	RecSet.AddNew

	RecSet("artist") = Request.Form("artist")
	RecSet("titel") = Request.Form("titel")
	RecSet("sparlangd") = Request.Form("sparlangd")
	RecSet("lank") = Request.Form("lank")

	RecSet.Update
	RecSet.Close
	Connect.Close
	Set Connect = Nothing

%>

Och så här ser koden ut då jag hämtar informationen från databasen:
[kod]
<%
	Set Connect = Server.CreateObject("ADODB.Connection")
	Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("..\databasen.mdb")
	%>
<%
	Set RecSet = Server.CreateObject("ADODB.Recordset")
	Visa = "SELECT * FROM musik ORDER BY Artist "
	RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic
	%>
          <tr>
            <td width="37%" bgcolor="#8080FF"><b><font size="1" face="Verdana" color="#FFFFFF">&nbsp;Artist:</font></b></td>
            <td width="28%" bgcolor="#8080FF"><b><font size="1" face="Verdana" color="#FFFFFF">&nbsp;Titel:</font></b></td>
            <td width="14%" bgcolor="#8080FF"><font size="1" face="Verdana" color="#FFFFFF"><b>Spårlängd:</b></font></td>
            <td width="21%" bgcolor="#8080FF"><font size="1" face="Verdana" color="#FFFFFF"><b>&nbsp;Ladda
            hem:</b></font></td>
          </tr>
        </table>
        </td>
      </tr>
    </table>
    </center></div><div align="center"><center><table border="0" width="70%" cellspacing="1"
    cellpadding="0">
      <tr>
<%
	Do Until RecSet.EOF
	%>
        <td width="250"><font face="Verdana" size="1"><%=RecSet("artist")%></font> </td>
        <td width="195"><font face="Verdana" size="1"><%=RecSet("titel")%></font> </td>
        <td width="102"><font face="Verdana" size="1"><%=RecSet("sparlangd")%></font> </td>
        <td width="128" valign="middle"><font face="Verdana" size="1"><a
        href="<%=RecSet("lank")%>"><img border="0" src="../images/downloadknapp.jpg" WIDTH="65"
        HEIGHT="10"></a></font></td>
      </tr>
<%
	RecSet.MoveNext
	Loop
	RecSet.Close
	Connect.Close
	Set Connect = Nothing 
	%>

Tror du att du kan hjälpa mig med att trycka in din kod i min??

Medlem sedan dec. 200012 464 inlägg
#4

Först måste du ändra din tabell och lägga till ett nytt fält
Det behövs bara en gång och det kan du göra med följande sql-sats

alter table musik add nyhet char(4)

När du lagrar data så kan du lägga till det som är i fet stil.

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("..\databasen.mdb")
%>

<%
[b]'uppdatera alla gamla poster
connect.execute "update musik set nyhet = null",,128[/b]

Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM musik"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
RecSet.AddNew

RecSet("artist") = Request.Form("artist")
RecSet("titel") = Request.Form("titel")
RecSet("sparlangd") = Request.Form("sparlangd")
RecSet("lank") = Request.Form("lank")
[b]RecSet("nyhet") = "Nytt"[/b]

RecSet.Update
RecSet.Close
Connect.Close
Set Connect = Nothing

%>

Vid utskrift, exakt hur överskriften och width och sånt ska sé ut får du nog fila lite på (Jag har satt ? på några ställen.)

<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("..\databasen.mdb")
%>
<%
Set RecSet = Server.CreateObject("ADODB.Recordset")
Visa = "SELECT * FROM musik ORDER BY Artist "
RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic
%>
<tr>
<td width="33%" bgcolor="#8080FF"><b><font size="1" face="Verdana" color="#FFFFFF"> Artist:</font></b></td>
<td width="25%" bgcolor="#8080FF"><b><font size="1" face="Verdana" color="#FFFFFF"> Titel:</font></b></td>
<td width="11%" bgcolor="#8080FF"><font size="1" face="Verdana" color="#FFFFFF"><b>Spårlängd:</b></font></td>
<td width="18%" bgcolor="#8080FF"><font size="1" face="Verdana" color="#FFFFFF"><b> Ladda
hem:</b></font></td>
[b]
<td width="?%" bgcolor="#8080FF"><font size="1" face="Verdana" color="#FFFFFF"><b> Nyhet
</b></font></td>
[/b]
</tr>
</table>
</td>
</tr>
</table>
</center></div><div align="center"><center><table border="0" width="70%" cellspacing="1"
cellpadding="0">
<tr>
<%
Do Until RecSet.EOF
%>
<td width="250"><font face="Verdana" size="1"><%=RecSet("artist")%></font> </td>
<td width="195"><font face="Verdana" size="1"><%=RecSet("titel")%></font> </td>
<td width="102"><font face="Verdana" size="1"><%=RecSet("sparlangd")%></font> </td>
<td width="128" valign="middle"><font face="Verdana" size="1"><a
href="<%=RecSet("lank")%>"><img border="0" src="../images/downloadknapp.jpg" WIDTH="65"
HEIGHT="10"></a></font></td>
[b]
<%if isnull(recset("nyhet")) then %>
<td width="?" valign="middle"><font face="Verdana" size="1></font></td>
<%else%>
<td width="?" valign="middle"><font face="Verdana" size="1></font>Nytt</td>
<%end if%> [/b]
</tr>
<%
RecSet.MoveNext
Loop
RecSet.Close
Connect.Close
Set Connect = Nothing 
%>

red: lite smårättningar
------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 11 nov 2001]

Medlem sedan dec. 20001 626 inlägg
#5

LarsG, jag fick ett felmeddelande när jag skulle läsa från databasen men det gick alldeles utmärkt och skriva till den.

Men jag tror du har missuppfattat mig, nu var det så att i den koden du gav mig för att läsa från databasen så la du in en tabell som heter nyhet, men jag vill att ordet NY, ska finnas till höger om varje artist när man läser in den från databasen, jag hoppas du förstå vad jag menar...

Medlem sedan dec. 20001 626 inlägg
#6

det är i den här raden felet ligger i:

<%if isnull(rs("nyhet")) then %>
<td width="5%" valign="middle"><font face="Verdana" size="1></font></td>
<%else%>
<td width="5%" valign="middle"><font face="Verdana" size="1></font>Nytt</td>
<%end if%> 
</tr>
<%
RecSet.MoveNext
Loop
RecSet.Close
Connect.Close
Set Connect = Nothing 
%>
Medlem sedan dec. 200012 464 inlägg
#7

Vad får du för felmeddelande då?

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20001 626 inlägg
#8
ADODB.Recordset fel '800a0cc1' 
Objektet kunde inte hittas i mängden med det begärda namnet eller numret. 

/dabest/musik/musik.asp, rad 132
Medlem sedan dec. 200012 464 inlägg
#9

Har du ändrat tabellen och lagt till kolumen nyhet?

alter table musik add nyhet char(4)

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20001 626 inlägg
#10

a jag gjorde det där manuellt i databasen, dvs la dit en kolumn vid namnet nyhet

Medlem sedan dec. 200012 464 inlägg
#11

Ojdå, det skall nog vara recset här.

<%if isnull(recset("nyhet")) then %>

(Jag är så van vid att alltid döpa recordset till rs.)

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20001 626 inlägg
#12

Nu blev hela grejen skum, allt hamnar på en rad... jag fattar noll

Medlem sedan dec. 20001 626 inlägg
#13

det blev för komplicerat, jag körde med ditt första alternativ, det var mycket enklare, TACK SKA ru ha

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)