webForumDet fria alternativet

Randomera namn..

ASP

10 svar · 448 visningar · startad av [AMD]Zmaster

Medlem sedan mars 20021 716 inlägg
Frågan#1

Tjena, behöver lite hjälp.
Jag har 2 olika .txt filer.
En som heter namn.txt, där det står olika förnamn, ett för varje rad.
En annan som heter efternamn.txt där det står olika efternamn, ett för varje rad.
Nu vill jag via en aspsida hämta värdena, dvs namnen och para ihop dem på alla sätt, utan att samma helnamn komer igen, dvs att det typ kan se ut så här:

namn.txt:

Stellan
Steven
Sixten

efternamn.txt:

Lindqvist
Broberg
Karlsson
Moberg

Då listar aspsidan följande namn:

Stellan Lindqvist
Stellan Broberg
Stellan Karlsson
Stellan Moberg
Steven Lindqvist
Steven Broberg
Steven Karlsson
Steven Moberg
Sixten Lindqvist
Sixten Broberg
Sixten Karlsson
Sixten Moberg

Det handlar om rätt många namn totalt om man räknar antalet möjliga, närmare 39932 om man räknar på dem för och efternamn jag har, det lär ta en stund alltså, men men.

Nån som kan detta?

Medlem sedan mars 20021 716 inlägg
#2

Är detta svårt?

Medlem sedan juni 20008 205 inlägg
#3

Inte alls. Jag orkar inte skriva riktig kod, men här är lite pseudokod:

förnamn är en array med alla förnamnen.
efternamn är en array med alla efternamnen.
för varje namn i förnamn:
    för varje namn i efternamn:
        skriv ut det aktuella förnamnet och det aktuella efternamnet.

Se så. Spring iväg och implementera nu! ;)

Medlem sedan mars 20021 716 inlägg
#4

Tack tack, problemet är bara att jag knappt kan asp :P
Någon som kanske kan hjälpa mig där också? :)

Medlem sedan juni 20022 599 inlägg
#5

Om jag får bestämma så gör du om dina filer till XML:

namn.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xmlrot>
<namn>Stellan</namn>
<namn>Steven</namn>
<namn>Sixten</namn> 
</xmlrot>

efternamn.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xmlrot>
<efternamn>Lindqvist</efternamn>
<efternamn>Broberg</efternamn>
<efternamn>Karlsson</efternamn> 
<efternamn>Moberg</efternamn> 
</xmlrot>

.. och kör sen så här:

<%
Set FirstNames = Server.CreateObject("MSXML2.DOMDocument")
FirstNames.async = False
FirstNames.Load Server.MapPath("namn.xml")
Set LastNames = Server.CreateObject("MSXML2.DOMDocument")
LastNames.async = False
LastNames.Load Server.MapPath("efternamn.xml")
Set lstFirstNames = FirstNames.getElementsByTagName("namn")
Set lstLastNames = LastNames.getElementsByTagName("efternamn")
For i = 0 To lstFirstNames.length - 1
    For j = 0 To lstLastNames.length - 1
        response.write lstFirstNames.Item(i).firstChild.nodeValue & " " & lstLastNames.Item(j).firstChild.nodeValue 

& "<br>"
    Next
Next
%>
Medlem sedan juni 20022 599 inlägg
#6

Variant utan XML:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=" & Server.MapPath(".") & ";Extensions=asc,csv,tab,txt;"
set rs = conn.execute("SELECT * from namn.txt, efternamn.txt order by 1")
While Not rs.EOF
	Response.Write  rs(0) & " " & rs(1) & "<br>"
	rs.MoveNext 
Wend
%>

OBS: Du måste lägga en blankrad överst i namn.txt och efternamn.txt.

Medlem sedan jan. 20032 285 inlägg
#7

Variant i FSO.

<%
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTS = objFSO.OpenTextFile("namn.txt")
i = 0
Do Until objTS.AtEndOfStream
  arrNamn(i) = objTS.ReadLine
Loop
objTS.Close
Set objTS = Nothing

Set objTS = objFSO.OpenTextFile("efternamn.txt")
i = 0
Do Until objFSO.AtEndOfStream
  arrEfter(i) = objTS.ReadLine
Loop
objTS.Close
Set objTS = Nothing
Set objFSO = Nothing

For j = 0 To UBound(arrNamn)
  For k = 0 To UBound(arrEfter)
    Response.Write(arrNamn(j) & " " & arrEfter(k) & "<br>")
  Next
Next
%>

Otestad kod, så säg till om det inte funkar. :)

Medlem sedan nov. 20017 144 inlägg
#8

Men skulle namnen inte ligga slumpmässigt?

Medlem sedan mars 20021 716 inlägg
#9

niko skrev:

Variant utan XML:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=" & Server.MapPath(".") & ";Extensions=asc,csv,tab,txt;"
set rs = conn.execute("SELECT * from namn.txt, efternamn.txt order by 1")
While Not rs.EOF
	Response.Write  rs(0) & " " & rs(1) & "<br>"
	rs.MoveNext 
Wend
%>

OBS: Du måste lägga en blankrad överst i namn.txt och efternamn.txt.

Körde på det, perfekt, funkar precis som jag ville :)
Tack! Tack alla andra också som gjorde sina versioner! :)

Medlem sedan nov. 20017 144 inlägg
#10

order by 1,2

Om du även vill sortera efternamnet i bokstavsordning.

Medlem sedan juli 200012 978 inlägg
#11

Om du vill ha namn efter frekvens (förekomst) har jag lite material.
Har PM át dig om detta. Hör bara av dig.

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)