Gå til innhold

10 siste innlegg i forum


Anbefalte innlegg

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? :blush:

Lenke til kommentar
Videoannonse
Annonse

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 av ????????
Lenke til kommentar

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

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

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

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. :ermm:

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...