Ga naar inhoud


Aanbevolen berichten

Geplaatst:

Nu heb ik lang genoeg mijn hoofd gebroken over hoe ik dit nu weer ga aanpassen. Wie kan mij hierbij helpen.

 

Ik heb zelf een forum geschreven in ASP, mooie look en noem maar op, maar ik heb een probleempje.

Ik schrijf topics weg in een mySQL database, ze staan dan ook nog eens in categoriën. Allemaal leuk en aardig, dat werkt.

 

Nu wil ik het zo maken dat als ik in een categorie kijk dat ik de topics zie. Die zie ik ook, maar dan wil ik ze gaan sorteren, dat lukt me ook nog wel een beetje, maar dan gaat het mis.

 

Ik schrijf bijvoorbeeld nu een topic:

In categorie 1

Topicnummer 10

Topic ID 45 (auto increment)

 

Nu schrijf ik een nieuw topic:

In categorie 1 (weer)

Topicnummer 11

Topic ID 46

 

(Gaat allemaal nog goed)

 

Nu reply ik op topic ID 45:

In categorie 1 dus

Topicnummer 10 (weer)

Topic ID 47

 

Nu laat ik de lijst in categorie 1 weergeven:

 

Ik wil ook niet dat alle topics op die pagina vermeld worden dus doe ik het ongeveer zo:

 

Set rs = Conn.Execute("SELECT * FROM topics WHERE catnr='1' ORDER BY topnr Desc, id Desc")

do until rs.eof

topnr = rs("topnr")

if topnr <> vorigtopnr Then

vorigtopnr = topnr

Response.Write(topicnaam & "<BR>")

End If

rs.movenext

loop

 

Nu krijg ik een hele rare volgorde, namelijk dat het hoogste topicnummer bovenaan staat en de nieuwste staat op de 2e plaats... Hoe kan ik het nou zo maken dat hij dus maar 1 keer het topic laat zien (topicnummer x) en de nieuwste bovenaan zet?

 

Alvast bedankt.

 

Rob


Geplaatst:

Ik kan het niet voor je in een progammeer voorbeeld zetten, maar jouw probleem ontstaat volgens mij omdat je in één sorteervoorgang op 2 dingen sorteert. Nl topnr en id en daarbij heeft topnr de eerste prioriteit.

Ik denk dat je eerst moet sorteren op topicnr en de dan ontstane lijst pas moet sorteren op topic id.

Geplaatst:

Het heeft volgens mij niet met sorteren te maken. Je selectstatement klopt niet en deze zul je moeten verfijnen. Je moet er voor zorgen dat je ofwel per topicnr alleen het hoogste topicid ophaalt, ofwel dat je per topicnr alleen het hoogste topicid wegschrijft.

Op dit moment haal je alle topicid's op en schrijf je ook alles weg.

Geplaatst:

Beide bedankt voor jullie antwoorden.

 

@Ottifant,

Ik denk ook dat het hem daarin zit, maar ik snap nu even niet meer hoe verder te gaan. Ik zet in 6 uurtjes tijd een werkend forum in elkaar, maar ben hier dan alweer 2 dagen mee bezig. Ik kom er gewoonweg niet meer uit (futloos brein denk ik) <img src="/ubbthreads/images/graemlins/smile.gif" alt="" />

Zou jij hier iets voorbeeldachtigs van kunnen construeren?

 

Rob

Geplaatst:

Droomdoos,

 

dat wil ik wel even doen. Kun je mij dan wel even (per pm) de exacte tabellayout doorgeven en even aangeven welke velden met welke waarde (bv hoogste of laagste) je gepresenteerd wilt zien?

Geplaatst:

Klopt, ik krijg het maar niet werkend ondanks de vele inspanningen die ottifant geleverd heeft waarvoor nogmaals vele dank.

 

Ben er ook achter (dankzij ottifant ook) dat ik distinct moet gaan gebruiken, maar dat werkt helaas nog niet helemaal zoals ik dat wil..

 

Rob

Geplaatst:

Ik heb het volgende geprobeerd:

Set rs = Conn.Execute("SELECT DISTINCT(topnr), topnr, naam, id, user, datum, tijdtest, catnr FROM topics WHERE catnr='" & catnr & "' ORDER BY id Desc, topnr Desc")

 

Maar helaas laat hij toch nog steeds alles zien.

 

 

Ook

 

Set rs = Conn.Execute("SELECT DISTINCT topnr, naam, id, user, datum, tijdtest, catnr FROM topics WHERE catnr='" & catnr & "' ORDER BY id Desc, topnr Desc")

 

geeft alles weer en

 

Set rs = Conn.Execute("SELECT DISTINCT topnr FROM topics WHERE catnr='" & catnr & "' ORDER BY id Desc, topnr Desc")

 

Kan ik niets mee omdat ik meer info wil hebben uit de gekozen record....

 

 

Rob

Geplaatst:

Volgens mij heb je dezelfde ervaring als ik opgedaan. Distinct is weliswaar een sql statement, maar in combinatie met ASP wil het maar niet lukken. Postitief is natuurlijk dat het niet aan jou ligt.

Geplaatst:

Ik ben blij dat er tenminste nog iets positiefs is, net als de gemiddelde batterij... <img src="/ubbthreads/images/graemlins/smile.gif" alt="" />

 

Maar wat ik ervan lees op diverse sites is dat het wel werkt, maar alleen als je werkt met maar 1 row.

 

Rob

Geplaatst:

Weelicht snap ik het niet helemaal maar, als dit de tabel is:

ID Topic Categorie Tekst

8 1 10 Eerste topic in cat 10

9 1 11 Eerste toptic in cat 11

10 1 10 Tweede topic cat 10

 

En ik deze qurey loslaat

SELECT TestTabel.ID, TestTabel.Topic, TestTabel.Categorie, TestTabel.Tekst

FROM TestTabel

ORDER BY TestTabel.Categorie, TestTabel.ID, TestTabel.Topic;

 

 

Komt er bij mij netjes:

ID Topic Categorie Tekst

8 1 10 Eerste topic in cat 10

10 1 10 Tweede topic cat 10

9 1 11 Eerste toptic in cat 11

 

Uit??

 

Stuur mij anders dat meeltje ook ff dan kijk ik er naar.

 

Fred

Rebox RE8500 V2.11.34

Geplaatst:

Database layout:

id int(11) auto_increment (Echt het topic ID, hiermee werk ik in het overzicht van nieuwste threats)

topnr int(11) (Deze wordt dus als Topic nummer gebruikt)

naam varchar(254) (Dit is de omschrijving (onderwerp))

catnr int(11) (Categorienummer)

inhoud longtext (Hierin wordt de tekst gezet van de threat)

datum varchar(50) (De datum in tekst, gebruik ik niet meer, was een testje)

user varchar(100) (Usernummer staat hierin)

tijdtest int(11) (Hierin staat de datum in een timestamp (xxxx seconden na 1-1-1970 00:00:00)

 

 

Even wat teksten voor de source:

Conn.Open "Driver={MySQL ODBC 3.51 Driver}; Server=CS08; Database=csforum"

Set rs = Conn.Execute("SELECT * FROM topics WHERE catnr='" & catnr & "' ORDER BY topnr Desc, id Desc")

 

De volgorde:

Van de nieuwst geschreven threath zou de topicnaam met datum en usernummer (wordt geconvert naar een naam) bovenaangezet moeten worden.

Nu was het zo dat hij nog steeds op topicnummer sorteerde, maar het zou op datum moeten, maar hij mag dus maar 1 x geshowed worden.

 

Dat is zo'n beetje wat ik gestuurd heb.

 

Alvast bedankt Fredje...

Rob

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
  • Wie is er online   0 leden

    • Er zijn geen geregistreerde gebruikers deze pagina aan het bekijken
×
×
  • Nieuwe aanmaken...