Gilbert Skrevet 11. desember 2003 Del Skrevet 11. desember 2003 Min mysql struktur: alle debatter ligger i samme db, men startinnlegg = 1 og svar er startinnlegg = 0 $siste_query="SELECT * FROM debatter WHERE startinnlegg = 1 ORDER BY dato DESC LIMIT 0,10"; $siste_result=mysql_query($siste_query); $number=mysql_numrows($siste_result); $i=0; while($i<$number){ $siste_id = mysql_result($siste_result,$i,"id"); $siste_nummer = mysql_result($siste_result,$i,"debatt"); $siste_emne = mysql_result($siste_result,$i,"overskrift"); $siste_av = mysql_result($siste_result,$i,"av"); $siste_text = mysql_result($siste_result,$i,"text"); $siste_dato = mysql_result($siste_result,$i,"dato"); $siste_signatur = mysql_result($siste_result,$i,"signatur"); $siste_forum = mysql_result($siste_result,$i,"forum"); $svar_query="SELECT * FROM debatter WHERE debatt = $siste_nummer"; $svar_result=mysql_query($svar_query); $antall_svar=mysql_numrows($svar_result); $antall_svar_rett = $antall_svar-1; $oppdatert_query="SELECT * FROM debatter WHERE debatt = $siste_nummer ORDER BY dato DESC LIMIT 1"; $oppdatert_result=mysql_query($oppdatert_query); $oppdatert = mysql_result($oppdatert_result,0,"dato"); ?> <a href="index.php?locat=debatt&id=<? echo $siste_nummer ?>" class="link_1"><? echo $siste_emne ?></a> (<? echo $antall_svar_rett ?> svar, siste <?php echo date("H:i",$oppdatert); ?>) <p> <?php $i++; } Slik har jeg gjort det; da får jeg opp de ti siste NYE innlegg, hvor mange svar de har osv. Men jeg ønsker å sortere de ti siste NYE innlegg etter dato på SVAR. Hvordan foregår det? Lenke til kommentar
Torbjørn Skrevet 11. desember 2003 Del Skrevet 11. desember 2003 hvordan vet du hvilke svar som er svar på hvilke debatter? Lenke til kommentar
???????? Skrevet 11. desember 2003 Del Skrevet 11. desember 2003 (endret) I hvilket format lagrer du datoen? pass på rekkefølgen av tallene! Eller det kan være feil i felttypen du har valgt. Men du kan uansett fikse det lettere enn å endre dette ser det ut som. Du har et felt som heter id - hvis det er auto_increment betyr vel dette at desto høyrere tallet er, desto nyere er det. Så bare bytt til ORDER BY id DESC (dersom id er i rett format da) Her er et eksempel på problemet ved å velge feil format på feltene: mysql> select * from a order by tall; +----+--------+ | id | tall | +----+--------+ | 1 | 100 | | 3 | 1000 | | 7 | 10000 | | 6 | 100000 | | 2 | 200 | | 5 | 2000 | | 8 | 200000 | | 4 | 4000 | +----+--------+ 8 rows in set (0.01 sec) Her er feltet tall i varchar - se hvordan 200 kommer etter 100 000! Good luck! Endret 11. desember 2003 av ???????? Lenke til kommentar
Gilbert Skrevet 12. desember 2003 Forfatter Del Skrevet 12. desember 2003 jo takk, tror jeg tenker alt for "avansert". dette kan nok helt sikkert gjøres enklere ja. jeg har tenkt følgende: // Finn de 10 siste startede debatter // Finn via while hvor mange svar debatten har fått // Skriv ut de 10 siste startede debatter + antall svar. må sitte og tenke litt på denne, men tror jeg skal prøve noe alla det ?????? er inne på. forresten, hva mener du er rett datoformat? har i unixtime, husker ikke for øyeblikket hva de ligger under, men tror ikke det er varchar. Lenke til kommentar
Torbjørn Skrevet 13. desember 2003 Del Skrevet 13. desember 2003 bruk datetime for datokolonner Lenke til kommentar
Ueland Skrevet 13. desember 2003 Del Skrevet 13. desember 2003 For å hjelpe til litt, er det et kjent forum du vil hente dette ut ifra?, invisionboard etc? Lenke til kommentar
???????? Skrevet 13. desember 2003 Del Skrevet 13. desember 2003 Hvis dette er data'en du trenger, er det ikke noe problem å fikse alt dette i en spørring uten at du behøver å bruke noen while funksjon, under forutsetning at du har bygd tabellen riktig. - emnet på start innlegget - teksten til start innlegget - antall svar på innlegget du må bare ha et felles felt for alle tråder og selve start innlegget. F.eks. hvis du har et felt i databasen som heter innlegg, der startinlegget har f.eks. verdien 10 - så får alle svarene på dette innlegget også verdien 10. Neste tråd og alle svarene på dette innlegget får da verdien 11. På denne måten kan du group spørringen. Uten å viste hvilke felter du har er det vansklig å sette opp spørringen for deg, men den bli noe som denne: select *, count(id) from forum group by innlegg; NB: count blir her statinnlegget + alle svar. Er det 5 svar bilr dette tallet 6. For å bare få antall svar, trekk fra 1. Funker ikke dette, post en beskrivelse av tabellen din! Lenke til kommentar
Gilbert Skrevet 13. desember 2003 Forfatter Del Skrevet 13. desember 2003 strukturen er som følger: id (autoincr.) <-- kun id på raden forum <-- hvilket forum den hører til debatt <-- hvilken debatt den hører til startinnlegg <-- 1 om det er debattens startinnlegg, 0 ellers emne tekst signatur Er trøtt nå, kom akkurat fra jobb, så husker ikke hva jeg svarte på... men vi snakkes Lenke til kommentar
Torbjørn Skrevet 14. desember 2003 Del Skrevet 14. desember 2003 du ville ikke hatt en tidskolonne ogsaa? kan antagelig sortere paa id ogsaa, men er pent aa vise dato og tid for en post ogsaa. group by er fin aa bruke her, men idet man ikke kan sortere internt i en group by kollaps, maa du ha to queries for hver traad. Lenke til kommentar
???????? Skrevet 14. desember 2003 Del Skrevet 14. desember 2003 Er det noen av disse feltene som er like for selve tråden og alle svarene til denne? f.eks. debatt? I så fall group by den! Lenke til kommentar
Gilbert Skrevet 14. desember 2003 Forfatter Del Skrevet 14. desember 2003 er selvfølgelig en datokolonne oxo. har formet seg en tanke i hodet, prøver ut den og kommer tilbake hvis jeg sitter fast igjen Lenke til kommentar
???????? Skrevet 14. desember 2003 Del Skrevet 14. desember 2003 Dersom dato'en i datofeltet f.eks. er i timestamp format så er det ikke noe problem å sortere etter disse, men ellers gjør vel id akutratt samme funksjon her? Lenke til kommentar
Torbjørn Skrevet 14. desember 2003 Del Skrevet 14. desember 2003 du kan sortere etter dato uansett hvilket datoformat det er i. id vil nok gjøre samme nytten ja, men vet ikke hva som ville skje hvis den går rundt riktig nok. selv om det sikkert ikke er noe aktuell problemstilling. Lenke til kommentar
ZoRaC Skrevet 15. desember 2003 Del Skrevet 15. desember 2003 du kan sortere etter dato uansett hvilket datoformat det er i. I mine første PHP-dager brukte jeg varchar og følgende datoformat: dd.mm.yy hh:mm i databasen. Da gikk det ikke å sortere på dato! Lenke til kommentar
Ueland Skrevet 15. desember 2003 Del Skrevet 15. desember 2003 Sorteringen blir gjort i PHP og funker fint det uansett format i mysql sålenge vi snakker Unix timestamp Lenke til kommentar
Gilbert Skrevet 15. desember 2003 Forfatter Del Skrevet 15. desember 2003 jeg får bare krype til korset, dette ble for vanskelig. ser at jeg har uttrykt meg litt uklart, så kommer med den fulle og hele problemstilling her. id forum debatt startinnlegg av overskrift text dato signatur stengt Det jeg er ute etter er ganske enkelt å vise de 10 siste oppdaterte debattene, når de ble oppdatert, og antall svar de har. Dvs at jeg må finne: Q1: de ti siste radene med unik $debatt sortert på tid Q2: ti rader med $startinnlegg = 1 og $debatt = svar på Q1 (med while?) Q3: antall rader med $debatt = svar på Q1 (for å telle antall svar) Q4: dato på sist oppdatert rad for hver av de ti debattene Jeg kunne våget meg på å komme med mitt helt totalt ville eksempel, men våger ikke det. Lenke til kommentar
???????? Skrevet 15. desember 2003 Del Skrevet 15. desember 2003 du kan sortere etter dato uansett hvilket datoformat det er i. dato formatet kan jo være lagret som YY/DD/MM eller f.eks. Jan 29 2003 det gjør jo jobben litt verre! Lenke til kommentar
Torbjørn Skrevet 15. desember 2003 Del Skrevet 15. desember 2003 prøv. en dato er en dato, om du vil hente den ut som epoch tid eller som en full dato er opp til deg. internt har ikke mysql noe problem med å sortere en eldre dato før en nyere dato. Lenke til kommentar
Gilbert Skrevet 15. desember 2003 Forfatter Del Skrevet 15. desember 2003 ...men min dato består da altså av en del sekunder. fikk tipset av torbjørn, har ikke angret et sekund på det. Lenke til kommentar
Torbjørn Skrevet 15. desember 2003 Del Skrevet 15. desember 2003 fjartan, din query bør bli slik: "select count(*) as antall_svar, min(id) as traad_starter_id, max(dato) as nyeste_dato, max(id) as nyeste_post_id from debatter where forum='$forum' group by debatt order by nyeste_dato desc limit 10" Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå