DroomDoos Geplaatst: 23 februari 2005 Geplaatst: 23 februari 2005 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
Pionewbie Geplaatst: 23 februari 2005 Geplaatst: 23 februari 2005 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.
ottifant Geplaatst: 24 februari 2005 Geplaatst: 24 februari 2005 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.
DroomDoos Geplaatst: 24 februari 2005 Auteur Geplaatst: 24 februari 2005 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
ottifant Geplaatst: 24 februari 2005 Geplaatst: 24 februari 2005 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?
DroomDoos Geplaatst: 24 februari 2005 Auteur Geplaatst: 24 februari 2005 Helemaal top, ik ga even een PMetje in elkaar knutselen. Thnx
FredjeV Geplaatst: 24 februari 2005 Geplaatst: 24 februari 2005 Volgorde verkeerd om : ORDER BY ID, TOPNR ?? Rebox RE8500 V2.11.34
ottifant Geplaatst: 24 februari 2005 Geplaatst: 24 februari 2005 Jij mag nog een keer raden. Volgorde lijkt mij ook verkeerd om, maar dan komt er nog wel wat bij kijken.
DroomDoos Geplaatst: 24 februari 2005 Auteur Geplaatst: 24 februari 2005 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
ottifant Geplaatst: 24 februari 2005 Geplaatst: 24 februari 2005 Als je ons, of mij, deelgenoot maakt van het feit wat er niet werkt, kunnen we misschien helpen.
DroomDoos Geplaatst: 24 februari 2005 Auteur Geplaatst: 24 februari 2005 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
ottifant Geplaatst: 24 februari 2005 Geplaatst: 24 februari 2005 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.
DroomDoos Geplaatst: 24 februari 2005 Auteur Geplaatst: 24 februari 2005 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
FredjeV Geplaatst: 25 februari 2005 Geplaatst: 25 februari 2005 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
DroomDoos Geplaatst: 25 februari 2005 Auteur Geplaatst: 25 februari 2005 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
Aanbevolen berichten
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 accountInloggen
Heb je reeds een account? Log hier in.
Nu inloggen