Avatar billede doncarnage Nybegynder
27. februar 2009 - 23:47 Der er 9 kommentarer og
1 løsning

Tælle antal kommentarer pr. nyhed (flere stks)

Godaften.. Situationen er den at jeg har en side, der udskriver alle nyheder pr. titel i en oversigt som følgende. Men jeg vil dertil gerne have at den udskriver hvor mange kommentarer der er skrevet til hver enkelt nyhed. De skal plottes ind som illustreret her:

http://img150.imageshack.us/img150/5328/muaert.jpg

Men hvordan får jeg den til at gøre det?

I min kommentar tabel har de fået en række ved navn "parent", der fortæller hvilken nyheds-id kommentaren er tilknyttet.. Min kode ser ud som her:

OleDbConnection MyConnection = new OleDbConnection();

MyConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|mindatabase.mdb";

string strSQL = ("SELECT count(*) FROM kommentarer WHERE parent='3'");

OleDbCommand objCommand = new OleDbCommand(strSQL, MyConnection);
OleDbDataReader objDataReader = null;

        try
        {
            MyConnection.Open();

            objDataReader = objCommand.ExecuteReader();

            while (objDataReader.Read() == true)
            {
                lblTal.Text += Convert.ToString(objDataReader[0]) + "<br /><br />";
            }

            objDataReader.Close();
        }

        catch (Exception exept)
        {
            Response.Write(exept);
        }

        MyConnection.Close();

Ovenstående kode udskriver det antal kommentarer der er tilknyttet nyhed med id 3.. Men hvordan får jeg den til at udskrive for hver enkelt nyhed hvor mange kommentarer de har? Det er i øvrigt C#, hvis der skulle være tvivl om det ;)
Avatar billede aaberg Nybegynder
28. februar 2009 - 00:52 #1
Noget lignende dette bør kunne gøre det (ikke testet)

SELECT nyheder.*, (SELECT count(*) FROM kommentarer WHERE kommentarer.parent=nyheder.id) as antall_kommentarer
from nyheder
Avatar billede doncarnage Nybegynder
28. februar 2009 - 01:14 #2
Kan ikke lige se hvordan du vil have mig til at implementere det :S Kan i hvert fald stadig ikke få det til at virke efter hensigten..
Avatar billede moulde Nybegynder
28. februar 2009 - 20:13 #3
Hvordan bliver teksten skrevet ud?
Til en label?
Avatar billede doncarnage Nybegynder
01. marts 2009 - 05:42 #4
Jeps, den bliver udskrevet i en label :)

lblTal.Text += Convert.ToString(objDataReader[0]) + "<br /><br />";
Avatar billede moulde Nybegynder
01. marts 2009 - 16:44 #5
Okay, men det er vel så kun antallet af kommentarer til tråden?
Hvordan skriver du selve trådens navn osv ud?
Som på billedet?
Avatar billede doncarnage Nybegynder
01. marts 2009 - 16:47 #6
Jepsen, ligesom på billedet.. Mine nyheder + dato skriver jeg bare ud i to seperate labels som jeg så har smidt ind i en tabel.. På den her måde:

lblNyhedliste.Text += Convert.ToString(objDataReader["Overskrift"]) + "<br /><br />";

lblDato.Text += Convert.ToString(objDataReader["Dato"]) + "<br /><br />";
Avatar billede moulde Nybegynder
01. marts 2009 - 17:14 #7
Det er lidt af en hømåde at gøre det på, men desværre har jeg ikke nogen bedre måde, det er ikke meget jeg har pillet ved datareader osv.
Jeg bruger kun linq.

Jeg kan selvfølgelig ikke helt forklare hvad jeg mener med hømåde, men forestil dig at du vil lave en tabel med 5 kolonner i HTML.

Normalt laver man bare en tabel, med det antal kolonner i man skal bruge.
Men her har du nærmest lavet 5 tabeller med hver 1 kolonne i.
Og der er egentligt ikke rigtigt noget der holder de 5 tabeller sammen, så værdierne altid står efter hinanden.

Så løsningen må være at samle dem sammen, så når du skriver information ud til brugeren, så skriver du det for hver tråd/emne der er.
Dvs Trådens navn, Antal kommentarer og Dato.. Og så videre til næste tråd, det samme igen.

Og det er når du skriver det ud til brugeren, ikke når du henter fra databasen.

Jeg håber du kan forstå hvad jeg mener :)
Avatar billede doncarnage Nybegynder
01. marts 2009 - 21:21 #8
Yearh okay.. Kan godt følge din tankegang med at have det samlet.. Jeg har bare lavet det på den her måde i php, så jeg tænkte at det kunne laves på samme måde i c# :D

Jeg er vidst ude i noget griedview så, men kan dog stadig ikke helt se hvordan jeg ska få den til at tælle ud fra en anden database inde i den :/ men okay.. Jeg vil prøve at rodde lidt videre med det.. Du kan lige smide et svar
Avatar billede moulde Nybegynder
01. marts 2009 - 21:42 #9
Kaching.

Det kan i hvertfald gøres utrolig let med linq.
Hvis du ikke har kigget på det før, så synes jeg næsten du skulle tage at gøre det.

Og det skulle vist være meget let at få til at virke med andre databaser end lige mssql.
Avatar billede doncarnage Nybegynder
01. marts 2009 - 22:37 #10
Yearh okay.. Jeg har desværre ikke stiftet bekendtskab med linq endnu, da jeg er forholdsvis ny i sproget.. Men vil da lige kigge på det når jeg får tid ;)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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