Avatar billede krel Nybegynder
28. december 2007 - 18:57 Der er 23 kommentarer og
1 løsning

sortere data med titel

Hej.
Jeg ved godt hvordan man sortere efter de forskellige kolonner man har i sin DB, men hvor hiver man lettest en titel med i sit udtræk så hvis nu man fx. ønsker links sorteret efter firmanavn alfabetisk at der kommer til at se sådan ud:

A <-- fed
www.a.dk
www.alink.dk

B <-- fed
www.b.dk
www.blink.dk

osv. evt hvis der ikke er nogle link med C så skrives C ikke men springer videre til næste bogstav hovr der er et link

^^
og tilsvarende hvis man så ville sortere efter kategori fx:

BILER
bmw.dk
toyata.dk

CYKLER
bmx.dk
kildemoses.dk

osv
osv

mvh.
Kristian
Avatar billede krel Nybegynder
28. december 2007 - 18:58 #1
^^^
har i min db felter der hedder:
kategori
firmanavn
web(adresse)
Avatar billede jansangill Nybegynder
28. december 2007 - 20:13 #2
Jeg ville lave en dynamisk sql:

F.eks.
<%
'navn på sortering, og sqlstreng
if s=1 then
  sortering="Kategori"
  sqlStreng=" ORDER BY kategori"
else
  sqlStreng=" ORDER BY firmanavn"
  sortering="Firmanavn"
end if
%>

<p>Sorter efter <%=sortering%></p>

<a href="sammeside.asp?s=1">Kategori</a>
<a href="sammeside.asp?s=2">Firmanavn</a>

sql="SELECT * FROM db "&sqlStreng&""
SET RS=Conn.execute(sql)
if not rs.eof then
  do while not rs.eof
    'DATA som kommer ud
    rs.movenext
  loop
else
  response.write "INGEN DATA"
end if
Avatar billede jansangill Nybegynder
28. december 2007 - 20:14 #3
og det er self

if request.querystring("s")=1 then.....
Avatar billede jansangill Nybegynder
28. december 2007 - 20:15 #4
dælens glemte helt at du ville have at det skulle skrives ud med alfabetet.
Avatar billede krel Nybegynder
28. december 2007 - 20:20 #5
ved ikke helt om vi snakker forbi hinanden - eller jeg ikke forstår at læse din kode rigtig for min kode ser sådan ud (nedenfor) og vil umiddelbart sige den gør det sammer eller?

#KODE
<%
If request.querystring("sortby") <> "kategori" then
strlink1 = "<b><a href='index.asp?sortby=firma'><font color='#828141'>alfabetisk</font></a></b>"
strlink2 = "<a href='index.asp?sortby=kategori'>efter branche</a>"
else
strlink1 = "<a href='index.asp?sortby=firma'>alfabetisk</a>"
strlink2 = "<b><a href='index.asp?sortby=kategori'><font color='#828141'>efter branche</font></a></b>"
end if
%>
<table style="height:100%" border="0" width="100%" id="indehold" cellspacing="0" cellpadding="0">
<tr>
<td width="105" valign="top">
<p style="margin-left: 5px"><%=strlink1%></p>
<p style="margin-left: 5px"><%=strlink2%></p>
</td>
<td valign="top">
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("/fpdb/bjrigging.mdb")
Conn.Open DSN
If request.querystring("sortby") <> "kategori" then
SQL = "select * from links order by firma asc"
else
SQL = "select * from links order by kategori asc"
end if
Set rs = Conn.Execute(SQL)
If Not (rs.BOF Or rs.EOF) Then
Do While Not rs.EOF or rs.BOF%>
<table border="0" width="100%" id="linksne" cellspacing="0" cellpadding="0">
<tr>
<td width="33.33%" align="left" valign="top"><a target="_blank" href="http://<%=rs("web")%>"><font style="text-transform:capitalize"><%=rs("firma")%></font></a><%rs.movenext%></td>
<td width="33.33%" align="left" valign="top"><a target="_blank" href="http://<%=rs("web")%>"><font style="text-transform:capitalize"><%=rs("firma")%></font></a><%rs.movenext%></td>
<td width="33.33%" align="left" valign="top"><a target="_blank" href="http://<%=rs("web")%>"><font style="text-transform:capitalize"><%=rs("firma")%></font></a><%rs.movenext%></td>
</tr>
</table>
<%
loop
end if
rs.Close
Set rs = Nothing
%>
</td>
</tr>
</table>

se evt http://www.bjrigning.dk/links/index.asp
Avatar billede jansangill Nybegynder
28. december 2007 - 20:23 #6
Ved kategori sortering kan du vel sortere efter kategori først, og derefter efter firmanavn:

Således

ORDER BY kategori,firmanavn



Du skal nok glemme det jeg skrev først da du åbenbart vil have det anderledes, glemte helt at læse:)


Ville nok være nemmest hvis man så din kode ogsp, så man ikke skulle gætte sig hele vejen frem:>
Avatar billede jansangill Nybegynder
28. december 2007 - 20:24 #7
skrev same tid der, og ja tror vi snakker forbi hinanden, indtil videre.
Avatar billede krel Nybegynder
28. december 2007 - 20:25 #8
^^^^
har lige lavet dette:
http://www.bjrigning.dk/links/index_.asp
uden noget asp, men sådan jeg gerne ville have det til at se ud ca...
Avatar billede krel Nybegynder
28. december 2007 - 20:31 #9
^^^
og så self. alle dem med firmanavn der starter med "D" ind udner "D":

D
DA
Disko
Dpa Soundco
osv..
Avatar billede jansangill Nybegynder
28. december 2007 - 20:40 #10
Okay.

Lad os starte med at få det sorteret efter branche.

Og helt glemme sortering efter alfabet og udseende, indstil videre.

Prøv dette, og se hvad der sker. Hvis sorteringen he rikke virker, skal vi til at lave lidt fiksbakseri


<%

If request.querystring("sortby") = "kategori" then
strlink1 = "<b><a href='index.asp?sortby=firma'><font color='#828141'>alfabetisk</font></a></b>"
end if
%>
<table style="height:100%" border="0" width="100%" id="indehold" cellspacing="0" cellpadding="0">
<tr>
<td width="105" valign="top">
<p style="margin-left: 5px"><%=strlink1%></p>
</td>
<td valign="top">

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("/fpdb/bjrigging.mdb")
Conn.Open DSN
If request.querystring("sortby") = "kategori" then
SQL = "select * from links order by kategori,firma asc"
else
SQL = "select * from links order by kategori asc"
end if

Set rs = Conn.Execute(SQL)
If Not (rs.BOF Or rs.EOF) Then
Do While Not rs.EOF or rs.BOF%>
<table border="0" width="100%" id="linksne" cellspacing="0" cellpadding="0">
<tr>
<td width="33.33%" align="left" valign="top"><a target="_blank" href="http://<%=rs("web")%>"><font style="text-transform:capitalize"><%=rs("firma")%></font></a></td>
</tr>
</table>
<%
rs.movenext
loop
end if
rs.Close
Set rs = Nothing
%>
</td>
</tr>
</table>
Avatar billede jansangill Nybegynder
28. december 2007 - 20:49 #11
og ja det virker self ikke.

Jeg er i vrøvle mode idag.

Vil kigge på det lidt senere. Skal smutte nu.
Avatar billede krel Nybegynder
28. december 2007 - 20:55 #12
helt i ok og tak for din indtil videre...
Avatar billede jansangill Nybegynder
29. december 2007 - 00:15 #13
Okay her er en løsning på problemet, har ændret lidt i koden her og der, og du bliver nødt til lige at ændre diverse småfejl ved feltnavne og database navne.


<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test-eksperten spørgsmål http://www.eksperten.dk/spm/812110</title>
</head>

<body>
<%
dim sortBy,strLink,strLink1,normalLink
t=1
sortBy=request.querystring("sortby")
normalLink="<a href='test.asp'>Normal</a>"
strlink="<a href='test.asp?sortby=kategori'>efter branche</a>"
strlink1="<a href='test.asp?sortby=firma'>efter firma</a>"
If sortBy  = "kategori" then strlink = "<b><a href='test.asp?sortby=kategori'>efter branche</a></b>"
If sortBy  = "firma" then strlink1 = "<b><a href='test.asp?sortby=firma'>efter firma</a></b>"
%>
<table style="height:100%" border="0" width="100%" id="indehold" cellspacing="0" cellpadding="0">
<tr>
<td width="105" valign="top">
<p style="margin-left: 5px"><%=strlink%></p>
<p style="margin-left: 5px"><%=strlink1%></p>
<p style="margin-left: 5px"><%=normalLink%></p>
</td>
<td valign="top">
<%
set Conn = server.CreateObject("ADODB.Connection")
Conn.open = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="& server.MapPath("database/db.mdb")
SQL = "select * from links"
If sortBY = "kategori" then SQL=SQL&"  ORDER BY kategori,firma ASC"
If sortBY = "firma" then SQL=SQL&"  ORDER BY firma ASC"
Set rs = Conn.Execute(SQL)

If Not (rs.BOF Or rs.EOF) Then
    Do While Not rs.EOF or rs.BOF
   
        if sortBy="kategori" then
            'kategori
            html = "<table width='95%' align='center' style='height:5px;'><tr><td><b>"&rs("kategori")&"</b></td></tr><table>"
            html1 = "<table width='95%' align='center' style='height:5px;'><tr><td width='50%'><a href='"&rs("web")&"' style='color:#000000'>"&rs("firma")&"</a></td></tr></table>"
       
            if bbb<>rs("kategori") then
                    ud = ud & html
                    ud = ud & html1
                    bbb=rs("kategori")
            else
                    ud = ud & html1
            end if
       
        elseif sortBy="firma" then
            'firma   
           
            'hvordan den skal gribes an ved jeg ikke helt. DSet kan gøres ved en del fiksbakserier osv, men det vil jeg ikke begi mig ind på da det vil tage for lang tid, istedet har jeg lavet en anden løsning, hvorved jeg tilføjer et felt mere i db, såsom "bogstav"
            'Du kan få fat i det første bogstav når du ligger lortet ind i db således:
            'temp = lcase(left(rs("navn"),1))
            'Dette giver det f'rste bogstav i firmaets navn
           
            html = "<table width='95%' align='center' style='height:5px;'><tr><td><b>"&rs("bogstav")&"</b></td></tr><table>"
            html1 = "<table width='95%' align='center' style='height:5px;'><tr><td width='50%'><a href='"&rs("web")&"' style='color:#000000'>"&rs("firma")&"</a></td></tr></table>"
       
            if bbb<>rs("bogstav") then
                    ud = ud & html
                    ud = ud & html1
                    bbb=rs("bogstav")
            else
                    ud = ud & html1
            end if
           
        else
            'normal
            html = "<table width='95%' align='center' style='height:5px;'><tr><td><b>"&rs("kategori")&"</b></td></tr><table>"
            html1 = "<table width='95%' align='center' style='height:5px;'><tr><td width='50%'><a href='"&rs("web")&"' style='color:#000000'>"&rs("firma")&"</a></td></tr></table>"
            response.write html&html1
        end if
           
rs.movenext
loop
end if
'her skriver jeg "ud" ud - dvs her bliver kategori og firma skrevet ud
response.write ud
rs.Close
Set rs = Nothing
%>
</td>
</tr>
</table>

</body>
</html>



Kan kigge her også, hvorledes det fungerer.
http://jansangill.dk/test.asp

Har ikke lagt design på, det må du gøre:)
Avatar billede krel Nybegynder
03. januar 2008 - 19:33 #14
Hey.
Har siddet og rodet lidt med det og prøvet at lave en lille smule om, noget af det er gået godt, mens noget andet er gået knapt så godt... der er 2 prøblmer lige pt.

#1 drejer sig om det med at snuppe det første bogstav fra firma navnet... forstår ikke helt hvordan man kan tage det fra 'rs' (går ud fra det er felt i db'en) ville lægge det ind når jeg alligevel lagde de andre data ind i db'en...
her ses firmanavn feltet: <input class="box" type="text" name="firma" size="20">
som ligges i db'en sådan: '" & Request.Form("firma") & "'
- og så ville mit forslag til at putte data i 'bogstav'-feltet blive dette:
'lcase(left("&Request.Form("firma")&"),1))'

MEN det giver hele firmanavnet desværre...

#2 vil gerne undgå 'normal....
hvis sortby = "" (ingenting) ville jeg gerne enten lave det sådan at den bliver sat = "firma" eller en funktion så "firma"'s html vises. Sådan så når man første gang går ind på siden så er det sorteret efter firma/alfabetisk

derfor prøvede jeg at slette fra 'else' af og erstatte 'elseif sortby = "firma"' med else men så fik jeg en loop > do fejl...

? ? ? ? ?

Ellers virker det bare lige efter hensigten :) :) :)

Kristian
Avatar billede jansangill Nybegynder
03. januar 2008 - 19:57 #15
til nummer 1:

temp = lcase(left(request.form("firma")),1))

INSERT INTO tabel(firma) VALUES(temp)

Skulle gerne virke. Eller temp skal da returne det første bogstav fra formlen af navn.


Til #2:

Hvis du vil have det skal sorteres af firma fra starten, så skal du bare fjerne hele else delen, og så gøre dette:

else
  'firma   
 

end if 

Hvis det ikke virker må du give mig en forklaring hvor fejlen ligger, altså linie.
Avatar billede krel Nybegynder
03. januar 2008 - 20:01 #16
ok prøver jeg lige, øjeblikke
Avatar billede krel Nybegynder
03. januar 2008 - 20:05 #17
jamen det jo fantastisk!! du må lægge et svar så du kan få dine åoint ^^ en lille xtra (giver gerne flere point) kan man gøre sådan at det kommer til at så i koloner så det ikke bliver en mega lang liste med links....?
Avatar billede jansangill Nybegynder
03. januar 2008 - 20:58 #18
ja så blev jeg færdig med dokumentaren på tv2 om Laudrup:=

Du må forklare lidt yderliegere hvad du mener med kolonner? Mener du ved siden af hinanden?

Ellers kan man jo også ligge paging på, altså "google browsing". De tal der står nederst.
Avatar billede krel Nybegynder
03. januar 2008 - 21:06 #19
#1 altså kolonner ved siden af hinanden..

eks.
A / Lyd (branche)
| link 1    | link 2    | link 3    |
| link 4    | link 5    |
B / Lys (branche)
| link 1    | link 2    | link 3    |
| link 4    | link 5    | link 6    |
| link 7    |
C / Festival (branche)
| link 1    | link 2    | link 3    |
| link 4    | link 5    | link 6    |
osv osv
Avatar billede jansangill Nybegynder
03. januar 2008 - 22:33 #20
Jo det er muligt. ved at lave en tæller som tæller op

Så når tæller=3 fx, så skal den gå ned i en ny <tr>

Kan kigge på det senere, hvis du ikke kan få det til at lykkedes.
Avatar billede krel Nybegynder
03. januar 2008 - 22:59 #21
nu skriver du tæller tror gerne du må give et lille hint jeg kan prøve ud fra for lige nu fatte jeg hat.

- husk også et svar det her med kollonner er jo extra...
Avatar billede jansangill Nybegynder
04. januar 2008 - 01:19 #22
Ingen grund til ekstra.

Jeg må lige tænke lidt over den der med kolonne skift. Lidt mere tricky at skifte kolonne, når det hele er bygget op sådan. Men det må jo ka lade sig gi:)
Avatar billede jansangill Nybegynder
10. januar 2008 - 18:08 #23
Må indrømmejeg ikke har haft tid til at kigge på det med at det skal være i flere kolonner.

Det kan være jeg får tid her i weekenden.
Avatar billede krel Nybegynder
11. januar 2008 - 19:06 #24
det helt i orden får jo en mail hvis der kommer noget nyt (hvilket jeg håber :) men du skal i hvertfald have tusind tak for hjælpen indtil nu !
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