Hallo allemaal,
Ik programmeer zelf vooral in PHP icm mysql; en weet daarmee wel hoe ik een script kan schrijven voor mijn pagina, maar nu moet het in .aspx, en ik heb e.e.a. opgebouwd met visual basic .net als taal.
Mijn vraag is eigenlijk hoe je in ASP..net & VB een whilelus in een while lus kan verwerken (dus twee while lussen met gegevens uit een database). E.e.a. verduidelijk ik in het onderstaande...
Situatie:
Ik heb 2 tabellen in mijn database staan: 1 voor de categorieën en 1 voor de titel van allerlei artikelen. In de weergave, moet het zo zijn dat je een overzichtspagina hebt, waarbij het script
- eerst de categorie met id=1 in beeld brengt (bijvoorbeeld vetgedrukt omdat het een categorie is)
- vervolgens alle titels van artikelen in beeld brengt die in die categorie horen.
- vervolgens de titel van categorie 2 in beeld brengt met ook daarbij weer de bijbehorende titels van die categorie, enzovoort enzovoort.
Ik wilde in de artikelen tabel dan een kolom maken met een categorienummer die correspondeert met het 'id' (kolom) van de tabel met de artikelen zodat je daar bijvoorbeeld een JOIN van kan maken, of anderzins kan gebruiken in een sql-query (dat is dus de relatie tussen de twee tabellen).
in php zou ik zoiets maken:
de php code is niet getest, maar ik hoop dat daarmee duidelijker wordt, wat ik in gedachten heb. Volgens mij zou deze phpcode, doen wat ik wil (mits de db gevuld is e.d.).
Ik ben verder nog vrij nieuw in ASP.net; heb het boek basiscursus ASP.net doorgewerkt, maar kom daarmee niet echt uit dit probleem. Punt is dat in .net de code strikt gescheiden is van de weergave. Dat is in mijn phpscriptje, niet zo, daar heb ik al een echo gedaan, en vrolijk selecteer ik daarna nog e.e.a., en geef ik dat dmv een echo weer.
Ik kom er priima uit om alle categorieen in asp.net weer te geven, of om alle artikelen weer te geven (en op te maken etcetera), maar om die twee te mixen, is voor mij een probleem.
Hoe kan ik dat doen?
Ik zit nu met het volgende stukje script:
Dit stuk script brengt dus alleen de categorieën in beeld, maar niet de titels. Ik zou ook niet weten hoe ik dit ertussen kan krijgen. Welke methoden moet ik gebruiken?
Heeft iemand een goede verwijzing / goede tip?
Het zit em denk ik in het stukje
dtrResearchreport = cmdSelectarticles.ExecuteReader()
Je stopt alles in die datareader, en dan kan ik de artikelen niet meer toevoegen.
Iemand tips?
Ik programmeer zelf vooral in PHP icm mysql; en weet daarmee wel hoe ik een script kan schrijven voor mijn pagina, maar nu moet het in .aspx, en ik heb e.e.a. opgebouwd met visual basic .net als taal.
Mijn vraag is eigenlijk hoe je in ASP..net & VB een whilelus in een while lus kan verwerken (dus twee while lussen met gegevens uit een database). E.e.a. verduidelijk ik in het onderstaande...
Situatie:
Ik heb 2 tabellen in mijn database staan: 1 voor de categorieën en 1 voor de titel van allerlei artikelen. In de weergave, moet het zo zijn dat je een overzichtspagina hebt, waarbij het script
- eerst de categorie met id=1 in beeld brengt (bijvoorbeeld vetgedrukt omdat het een categorie is)
- vervolgens alle titels van artikelen in beeld brengt die in die categorie horen.
- vervolgens de titel van categorie 2 in beeld brengt met ook daarbij weer de bijbehorende titels van die categorie, enzovoort enzovoort.
Ik wilde in de artikelen tabel dan een kolom maken met een categorienummer die correspondeert met het 'id' (kolom) van de tabel met de artikelen zodat je daar bijvoorbeeld een JOIN van kan maken, of anderzins kan gebruiken in een sql-query (dat is dus de relatie tussen de twee tabellen).
in php zou ik zoiets maken:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| //verbinding etc, laat ff buiten beschouwing $sql="SELECT id, naam FROM categorieen order by id ASC"; $result = mysql_query($sql) or die (mysql_error()); if(mysql_num_rows($result)==0) { die('Er zijn geen categorieen gedefinieerd') } while (record=mysql_fetch_assoc($result)) {/*id van een categorie is bekend hier per id eerst de titel weergeven van de categorie, en dan alle artikelen */ echo '<h1>'.$record['naam'].'</h1>'; $query="SELECT id, titel FROM artikelen WHERE id=".$record['id']; $resultaten=mysql_query($query) or die(mysql_error()); while($aRecord=mysql_fetch_assoc($resultaten)) {//weergave titels uit deze categorie echo '<p>'.$aRecord['titel'].'</p'; } } |
de php code is niet getest, maar ik hoop dat daarmee duidelijker wordt, wat ik in gedachten heb. Volgens mij zou deze phpcode, doen wat ik wil (mits de db gevuld is e.d.).
Ik ben verder nog vrij nieuw in ASP.net; heb het boek basiscursus ASP.net doorgewerkt, maar kom daarmee niet echt uit dit probleem. Punt is dat in .net de code strikt gescheiden is van de weergave. Dat is in mijn phpscriptje, niet zo, daar heb ik al een echo gedaan, en vrolijk selecteer ik daarna nog e.e.a., en geef ik dat dmv een echo weer.
Ik kom er priima uit om alle categorieen in asp.net weer te geven, of om alle artikelen weer te geven (en op te maken etcetera), maar om die twee te mixen, is voor mij een probleem.
Hoe kan ik dat doen?
Ik zit nu met het volgende stukje script:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| <%@ Page Language="VB" debug="true" ContentType="text/html" ResponseEncoding="iso-8859-1" %> <%@ import Namespace="System.Data.OleDb" %> <script runat="server"> 'verbinding met de database rr (rr) Dim Conrr AS OleDbConnection Dim ConnectionString As String = "connectiestring weg gelaten hier, maar die klopt wel... ik kan dingen doen met de database..." Dim cmdSelectarticles As OleDbCommand 'datareader die de gegevens gaat bevatten Dim dtrResearchreport AS OleDbDataReader Sub Page_Load() Dim SQLString AS string ="SELECT id, category FROM category order by id ASC" 'verbinding leggen en openen Conrr = New OleDbConnection (ConnectionString) Conrr.Open() 'SQL statement uitvoeren op de verbinding Conrr CmdSelectarticles=New OleDbCommand(SQLString, Conrr) 'datareader aanmaken dtrResearchreport = cmdSelectarticles.ExecuteReader() bdtitles.DataSource=dtrResearchReport bdtitles.Databind() dtrResearchreport.Close() Conrr.Close() End Sub </script> <html> <head> <link rel="stylesheet" href="styles.css" type="text/css"> </head> <body bgcolor="#000080" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFF00" leftmargin="100" rightmargin="100"> <asp:Repeater id="bdtitles" runat="server" > <ItemTemplate> - <a href="viewarticle.aspx?id=<%# Container.DataItem ("category") %>"><%# Container.DataItem ("category") %></a> <br> </ItemTemplate> </asp:Repeater> </script> </script> </body> </html> |
Dit stuk script brengt dus alleen de categorieën in beeld, maar niet de titels. Ik zou ook niet weten hoe ik dit ertussen kan krijgen. Welke methoden moet ik gebruiken?
Heeft iemand een goede verwijzing / goede tip?
Het zit em denk ik in het stukje
dtrResearchreport = cmdSelectarticles.ExecuteReader()
Je stopt alles in die datareader, en dan kan ik de artikelen niet meer toevoegen.
Iemand tips?
[ Voor 20% gewijzigd door Verwijderd op 06-03-2005 22:57 ]