Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Slumpa ut flera produkter från en access databas

Postades av 2006-04-19 16:36:04 - Johan Moberg, i forum asp - allmänt, Tråden har 19 Kommentarer och lästs av 1548 personer

Hej!

Jag håller på att försöka bygga en liten produktkatalog på skoj och har stött på ett litet problem. På produktkatalogens startsida har jag tänkt mig att ha en ruta som heter Tips från katalogen eller liknande, där 4st olika produkter skall slumpas ut från en Access databas varje gång man går in på sidan eller uppdaterar den.

Jag har sökt runt på olika forum mm för att försöka hitta något som kan hjälpa mig, men inte lyckats hitta något. Jag vore väldigt tacksam om någon kunde ge mig tips på artiklar, script eller visa hur man kan bygga en sådan funktion.

Tack på förhand!

Koden för själva presentationen ser ut enligt följande:

<div class="product-tip-row">
<div class="prod-left">
<h4>Produktens namn 1</h4>
<img src="/images/products/bild_min.jpg" width="95" height="95" alt="" />
<p class="price">Från<br /><strong>25,00</strong><br />kr/st</p>
<p class="lnk">Läs mer</p>
</div>
<div class="prod-right">
<h4>Produktens namn 2</h4>
<img src="/images/products/bild_min.jpg" width="95" height="95" alt="" />
<p class="price">Från<br /><strong>25,00</strong><br />kr/st</p>
<p class="lnk">Läs mer</p>
</div>
<div class="clear"></div>
</div>

<div class="hr-2"><hr /></div>

<div class="product-tip-row">
<div class="prod-left">
<h4>Produktens namn 3</h4>
<img src="/images/products/bild_min.jpg" width="95" height="95" alt="" />
<p class="price">Från<br /><strong>25,00</strong><br />kr/st</p>
<p class="lnk">Läs mer</p>
</div>
<div class="prod-right">
<h4>Produktens namn 4</h4>
<img src="/images/products/bild_min.jpg" width="95" height="95" alt="" />
<p class="price">Från<br /><strong>25,00</strong><br />kr/st</p>
<p class="lnk">Läs mer</p>
</div>
<div class="clear"></div>
</div>


Svara

Sv: Slumpa ut flera produkter från en access databas

Postades av 2006-04-19 17:40:37 - Johan Djupmarker

För att slumpa fram 4 poster skriver du SQL-frågan såhär:

SELECT TOP 4 ... ORDER BY RND(FÄLT_MED_UNIKT_VÄRDE_FÖR_VARJE_PRODUKT)

/Johan


Svara

Sv:Slumpa ut flera produkter från en access databas

Postades av 2006-04-20 10:05:53 - Johan Moberg

Hej Johan,

Om jag gör så här så slumpas 4st produkter ut, men det är samma 4 produkter hela tiden. Jag skulle vilja att det är olika varje gång sidan uppdateras. Det vore också bra om inte samma produkt visas på mer än ett ställe dvs. samma produkt skall inte visas två gånger samtidigt.

<code>
<%
'Öppnar databasen
Call dbOpen(Connect)

'Slumpar fram produkter
strSQL = "Select Top 4 * From t_products Where active=True Order by RND(prodID)"
Set objRs = Connect.Execute(strSQL)
If objRs.EOF Then Response.Write ""& vbCrLf
If Not objRs.EOF Then
Do While Not objRs.EOF
Response.Write "<h4>"& objRs("prodName") &"</h4>"& vbCrLf
objRs.MoveNext
Loop
End If
objRs.Close : Set objRs = Nothing
Call dbClose(Connect)
%>
</code>


Svara

Sv: Slumpa ut flera produkter från en access databas

Postades av 2006-04-20 11:39:45 - Johan Djupmarker

Om samma produkt visas mer än en gång måste det bero på att den finns mer än en gång i databasen!?

Låter märkligt att du alltid får samma, så blir det inte när jag testar... Vilken provider använder du? (visa din connectionstring) Testa att köra med OLEDB om du inte gör det.

Ett litet tips, du kan ta bort följande if-sats, den gör ingen nytta, while-loopen körs aldrig om du har kommit till EOF:

If Not objRs.EOF Then

/Johan


Svara

Sv:Slumpa ut flera produkter från en access databas

Postades av 2006-04-20 17:25:12 - Johan Moberg

Jag använder OLEDB, så här ser connectionstringen ut:

<code>
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("db.mdb")
</code>

Låt oss säga att jag har 10st produkter i databasen som heter produkt1, produkt2, produkt3 osv. Det som händer är att 4st produkter visas (exempelvis: produkt5, produkt2, produkt8, produkt6) men dessa produkter ligger hela tiden kvar på samma plats. När jag uppdaterar så byts de alltså inte ut.

Däremot så byts de ut om jag lägger till nya produkter i databasen, men sen blir de samma sak att de stannar kvar.

och tack för tipset... :)


Svara

Sv: Slumpa ut flera produkter från en access databas

Postades av 2006-04-20 19:28:43 - Andreas Hillqvist

Skriv:

ORDER BY RND(Timer() - IDFält) 

På så sätt blir varje anrop unikt.


Svara

Sv:Slumpa ut flera produkter från en access databas

Postades av 2006-04-20 20:47:54 - Johan Djupmarker

Det bör ju fungera, konstigt att det behövs bara, får den ingen seed automatiskt? När jag testkörde i Access-GUI:t fungerade det bra.

/Johan


Svara

Sv: Slumpa ut flera produkter från en access databas

Postades av 2006-04-20 21:22:14 - Andreas Hillqvist

Om man skickar in en konstan kommer den alltid att retunera samma värde.


Svara

Sv:Slumpa ut flera produkter från en access databas

Postades av 2006-04-21 08:10:23 - Johan Djupmarker

Jo, uppenbarligen är det ju så. Men testa att skapa en fråga i Access med följande innehåll:

SELECT Rnd(1);

Kör du den flera gånger får man (iaf jag) olika resultat varje gång, alltså måste RND fungera olika beroende på varifrån man använder den?

/Johan


Svara

Sv: Slumpa ut flera produkter från en access databas

Postades av 2006-04-21 08:39:33 - Johan Moberg

Hej och tack för att ni försöker hjälpa mig, men det blir ingen skillnad om jag skriver:

<code>
Order by RND(Timer() - prodID)
</code>

Det blir fortfarande samma 4 produkter som visas...
Har ni något annat förslag?


Svara

Sv:Slumpa ut flera produkter från en access databas

Postades av 2006-04-24 21:22:25 - Benni Svensson

Jag har en här, som jag kör med och fungerar kanonbra.
Den är lite lång men...
<code>
'bygg upp din SQL genom att selecta allt
'gör ditt recordsett
Dim arrData ' All data
Dim minArr ' minsta id
Dim maxArr ' störrsta id

arrData = RS.GetRows
RS.close
Set RS = Nothing

minArr = int(Lbound(arrData, 2))
maxArr = int(Ubound(arrData, 2))

Randomize
Dim Urval(10)'här bestämmer du hur många du vill ha
' Antal hittills utvalda
Antal_valda = 0
' Håll på tills vi valt 10 stycken
While Antal_valda < 10
' Välj ett tal
Slumptal = Int(Rnd * maxArr) + 1
' Finns talet redan?
Finns_redan = false
For i = 1 to Antal_valda
If Slumptal = Urval(i) Then
' Talet fanns redan
Finns_redan = true
Exit For
End If
Next

' Om talet inte fanns, lägg det i Urval'
If Not Finns_redan Then
Antal_valda = Antal_valda + 1
Urval(Antal_valda) = Slumptal
End If
Wend
'Du får tag på ditt recordsett med
For i = 0 TO 10
response.write response.write Urval(i)
NEXT

</code>
Jag hoppas att du kan förstå denna koden...


Svara

Sv: Slumpa ut flera produkter från en access databas

Postades av 2006-04-25 15:51:58 - Bo Jägenstedt

Den här modellen funkar.... för mig i alla fall...

Randomize
SQL = "SELECT TOP 4 * FROM Products ORDER BY Rnd(-CatalogID-" & Replace(Rnd(),",",".") & ") ASC"


Svara

Sv:Slumpa ut flera produkter från en access databas

Postades av 2006-04-27 09:38:52 - Andreas Hillqvist

KAn det vara så att din sida är cachad och inte för faller?


Svara

Sv: Slumpa ut flera produkter från en access databas

Postades av 2006-04-28 10:36:27 - Johan Moberg

Nu har jag fått det att fungera genom att göra så här:

<code>
<%
'Öppnar databasen
Call dbOpen(Connect)

'Slumpar fram produkter
Randomize
strSQL = "Select Top 4 * From t_products Where active=True Order by RND(-prodID-" & Replace(Rnd(),",",".") & ") ASC"
Set objRs = Connect.Execute(strSQL)
If objRs.EOF Then Response.Write ""& vbCrLf
If Not objRs.EOF Then
Do While Not objRs.EOF

Response.Write "<div class=""product-tip-row"">"& vbCrLf
Response.Write "<div class=""prod-left"">"& vbCrLf
Response.Write "<h4>"& objRs("prodName") &"</h4>"& vbCrLf
Response.Write "<img src=""/images/test.jpg"" width=""95"" height=""95"" alt="""& objRs("prodName") &""" />"& vbCrLf
Response.Write "<p class=""price"">Från<br /><strong>"& FormatNumber(objRs("price4")) &"</strong><br />kr/st</p>"& vbCrLf
Response.Write "<p class=""lnk"">Läs mer</p>"& vbCrLf
Response.Write "</div>"& vbCrLf
Response.Write "<div class=""clear""></div>"& vbCrLf
Response.Write "</div>"& vbCrLf
Response.Write "<div class=""hr-2""><hr /></div>"& vbCrLf

objRs.MoveNext
Loop
End If
objRs.Close : Set objRs = Nothing
Call dbClose(Connect)
%>
</code>

Det enda problemet nu är att alla produkter kommer efter varandra och jag skulle vilja ha 2 st bredvid varandra och ny rad och sen 2 st bredvid varandra igen.

Så här:

<div class="product-tip-row">
<div class="prod-left">
<h4>Produktens namn 1</h4>
<img src="/images/products/bild_min.jpg" width="95" height="95" alt="" />
<p class="price">Från<br /><strong>25,00</strong><br />kr/st</p>
<p class="lnk">Läs mer</p>
</div>
<div class="prod-right">
<h4>Produktens namn 2</h4>
<img src="/images/products/bild_min.jpg" width="95" height="95" alt="" />
<p class="price">Från<br /><strong>25,00</strong><br />kr/st</p>
<p class="lnk">Läs mer</p>
</div>
<div class="clear"></div>
</div>

<div class="hr-2"><hr /></div>

<div class="product-tip-row">
<div class="prod-left">
<h4>Produktens namn 3</h4>
<img src="/images/products/bild_min.jpg" width="95" height="95" alt="" />
<p class="price">Från<br /><strong>25,00</strong><br />kr/st</p>
<p class="lnk">Läs mer</p>
</div>
<div class="prod-right">
<h4>Produktens namn 4</h4>
<img src="/images/products/bild_min.jpg" width="95" height="95" alt="" />
<p class="price">Från<br /><strong>25,00</strong><br />kr/st</p>
<p class="lnk">Läs mer</p>
</div>
<div class="clear"></div>
</div>

Har ni något förslag hur man kan göra för att få så?
Tack för all hjälp så här långt :)


Svara

Sv:Slumpa ut flera produkter från en access databas

Postades av 2006-04-28 11:37:51 - Jonas Boman

Du får då köra float:left resp right i divvarnas style
DIV-Föräldern (divven som produktdivvarnaligger i ) måste också ha ett float-värde för att det skall fungera (har jag för mig)

Sen får du köra select case mod historia för att veta om produkten skall vara till höger eller vänster.

jag vet att det är ganska lätt att göra detta när man använder tabeller, och det borde vara samma svårighetsgrad även om det är divvar.


Svara

Sv: Slumpa ut flera produkter från en access databas

Postades av 2006-05-02 17:14:30 - Johan Moberg

Hej,

Problemet är inte med själva presentationen dvs. html/css, de fungerar bra. Jag vet bara inte hur jag ska göra för att få asp koden att skriva ut den så det blir rätt.

Jag vill att asp koden ska skriva ut de som jag visar ovan, men som det ser ut nu så skriver asp koden ut de så här:

<code>
<div class="product-tip-row">
<div class="prod-left">
<h4>Produktens namn 1</h4>
<img src="/images/products/bild_min.jpg" width="95" height="95" alt="" />
<p class="price">Från<br /><strong>25,00</strong><br />kr/st</p>
<p class="lnk">Läs mer</p>
</div>
<div class="clear"></div>
</div>

<div class="hr-2"><hr /></div>
</code>

Och sen repeteras detta så många gånger som man har angett att de ska. Som ni ser så blir ju denna presentation fel. Hoppas ni förstår hur jag menar.


Svara

Sv:Slumpa ut flera produkter från en access databas

Postades av 2006-05-02 20:38:36 - Jonas Boman

<citat>Problemet är inte med själva presentationen dvs. html/css, de fungerar bra. Jag vet bara inte hur jag ska göra för att få asp koden att skriva ut den så det blir rätt. </citat>

Det är just presentationen som är problemet då det är asp-koden som skall generera den, heller hur?!

Du får ta med någon räknare som känner av hur många bilder som skrivits ut per rad;
om räknaren är 2 (den har skrivit ut 2 divvar med 2 bilder i) då måste du avsluta ytterligare någon div (antar jag) samt påbörja div för nästa rad samt nollställa räknaren.


Svara

Sv: Slumpa ut flera produkter från en access databas

Postades av 2006-05-24 13:48:26 - Johan Moberg

Jag löste de genom att göra så här:

<code>
'Öppnar databasen
Call dbOpen(Connect)

'Slumpar fram produkter
Randomize
strSQL = "Select Top 4 * From t_products Where active=True Order by RND(-prodID-" & Replace(Rnd(),",",".") & ") ASC"
Set objRs = Connect.Execute(strSQL)

iLoop = 0

If Not objRs.EOF Then
Do Until objRs.EOF

iLoop = iLoop + 1
If iLoop Mod 2 = 0 Then
Response.Write "<div class=""prod-right"">"& vbCrLf
Response.Write "<h4>"& objRs("prodName") &"</h4>"& vbCrLf
Response.Write "<img src=""../public/images/products/29020_min.jpg"" width=""95"" height=""95"" alt="""& objRs("prodName") &""" />"& vbCrLf
Response.Write "<p class=""price"">Från<br /><strong>"& FormatNumber(objRs("price4")) &"</strong><br />kr/st</p>"& vbCrLf
Response.Write "<p class=""lnk"">Läs mer information</p>"& vbCrLf
Response.Write "</div>"& vbCrLf
Response.Write "<div class=""clear""></div>"& vbCrLf
Response.Write "</div>"& vbCrLf
Response.Write "<div class=""hr-2""><hr /></div>"& vbCrLf
Else
Response.Write "<div class=""product-tip-row"">"& vbCrLf
Response.Write "<div class=""prod-left"">"& vbCrLf
Response.Write "<h4>"& objRs("prodName") &"</h4>"& vbCrLf
Response.Write "<img src=""../public/images/products/29020_min.jpg"" width=""95"" height=""95"" alt="""& objRs("prodName") &""" />"& vbCrLf
Response.Write "<p class=""price"">Från<br /><strong>"& FormatNumber(objRs("price4")) &"</strong><br />kr/st</p>"& vbCrLf
Response.Write "<p class=""lnk"">Läs mer information</p>"& vbCrLf
Response.Write "</div>"& vbCrLf
End If

objRs.MoveNext
Loop

Else
Response.Write ""& vbCrLf
End If

objRs.Close : Set objRs = Nothing
Call dbClose(Connect)
</code>

Kanske inte de bästa sättet att göra de på, men det fungerar. Det enda felet är att det kommer en extra <div class="hr-2"><hr /></div> efter sista diven. Någon som har ett förslag på hur man skulle kunna få bort den?

Tack för all hjälp...


Svara

Sv:Slumpa ut flera produkter från en access databas

Postades av 2006-05-24 14:08:16 - Jonas Boman

Bra lösning!

Tror att detta skall fungera
<code>
'lägg in efter set objRs=Conn.execute ...
antalrader = objRs.Recordcount

'och lägg in
If antalrader <> iLoop Then Response.Write "<div class=""hr-2""><hr /></div>"& vbCrLf
'istället för Response.Write "<div class=""hr-2""><hr /></div>"& vbCrLf

</code>


Svara

Sv: Slumpa ut flera produkter från en access databas

Postades av 2006-05-29 15:42:50 - Johan Moberg

Det fungerade inte, då antalrader blev -1.

Jag löste de dock genom att lägga till de du sa och ändra följande kod:

<code>
strSQL = "Select Top 4 * From t_products Where active=True Order by RND(-prodID-" & Replace(Rnd(),",",".") & ") ASC"
Set objRs = Connect.Execute(strSQL)
</code>

Till

<code>
Set objRs = Server.CreateObject("ADODB.Recordset")
strSQL = "Select Top 4 * From t_products Where active=True Order by RND(-prodID-" & Replace(Rnd(),",",".") & ") ASC"
objRs.Open strSQL, Connect, 3, 3
</code>

Tack för all hjälp!


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 170
27 953
271 705
654
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies