Toon posts:

[MYSQL] Laatste nieuwsreply's.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goedenavond allemaal,

Ik ben nu het volgende scriptje aan het schrijven.
Het laten zien van de laatste zoveel nieuwsreply's.
Maar ik zit vast.
Ik heb de tabel nieuws en nieuwsreactie.
Ik heb nu de volgende coden samengesteld:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$lengtemax = 14;  
         
$query = "SELECT nieuws.titel, nieuws.id, nieuwsreactie.dates FROM nieuwsreactie
INNER JOIN nieuws ON nieuws.id = nieuwsreactie.replyid GROUP by replyid DESC
ORDER by replyid DESC LIMIT 0, 9";

$resultaat = mysql_query($query) or die ("query mislukt"); 
while ($list = mysql_fetch_object($resultaat)) { 
        
$url ="index.php?id=$list->id"; //de url naar waar hij moet verwijzen 
$lengte_min_drie_puntjes = $lengtemax - 3; 
if (strlen($list->titel) > $lengtemax) { 
$scriptvol = substr($list->titel,0,$lengte_min_drie_puntjes)."..."; 
}  
else { 
$scriptvol = $list->titel; 
}


Zoals je ziet. Ik wil de tijd uitprinten ($dates) uit de tabel nieuwsreactie. En de titel ($titel)uit de tabel nieuws.
Nu print ie het perfect maar er zit 1 foutje in.

Hij print het volgende:

19:56 Nederlandse...
02:01 Nederlandst...
03:22 Aantal patc...

Maar nu is het geval dat in de 02:01 Nederlandst... twee reply's staan. Maar de nieuwste was dus niet op 02:01 maar om 10:06. Op de een of andere manier pakt hij steeds de eerste tijd van de eerste reply.

Ik hoop dat ik duidelijk ben.

Ik heb werkelijkwaar alles geprobeerd. Het zit hem in de query denk ik zelf. Maar weet dus niet wat.

Kan iemand mij hiermee helpen wat ik precies fout doe.

  • commeric
  • Registratie: November 2002
  • Laatst online: 14-08-2025
Als ik jou was zou ik in de nieuwstabel gewoon een kolom last_reaction aanmaken en daar in de datum neerzetten van de laatst geplaatste reactie. Dus elke keer als er een reactie wordt toegevoegd dan word de waarde in de nieuws tabel geupdate. Dit zal je een hoop aan snelheid schelen aangezien je reactie tabel super groot word.

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

komt het niet gewoon doordat je sorteerd op replyid? Kun je anders iets duidelijker zowel je database ontwerp; als een aantal entries, je query en gewenste resultaat posten?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Verwijderd

Topicstarter
Ok gewenste resultaat heb ik al gegeven namelijk de laatste tijd wanneer er een post is gezet.

opzet van nieuws en nieuwsreactie

Nieuws heeft een $id en een $titel.
Nieuwsreactie heeft het volgende:
$replyid ($id van het nieuws)
$id (id van de reactie zelf)
$dates (de tijd).

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Verwijderd schreef op 26 december 2003 @ 21:02:
Ok gewenste resultaat heb ik al gegeven namelijk de laatste tijd wanneer er een post is gezet.

opzet van nieuws en nieuwsreactie

Nieuws heeft een $id en een $titel.
Nieuwsreactie heeft het volgende:
$replyid ($id van het nieuws)
$id (id van de reactie zelf)
$dates (de tijd).
in nieuwsreactie.dates zet je dus de huidige tijd (als DATETIME) :?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • sjoerdb2
  • Registratie: Juli 2001
  • Laatst online: 09-05-2025
volgens mij moet je ORDER BY dates gebruiken, sorteren op id kan alleen als je maar 1 nieuwsitem hebt.

Verwijderd

Topicstarter
Op die wijze heb ik het ook al geprobeerd. Dan doet hij het ook niet.

Verwijderd

Topicstarter
Spider.007 schreef op 26 december 2003 @ 21:04:
[...]


in nieuwsreactie.dates zet je dus de huidige tijd (als DATETIME) :?
Ik weet niet wat je bedoeld maar ik sla daarin op de tijd waarop de reply is gepost anders nix.

Verwijderd

Topicstarter
Niemand weet het dus...

  • Mark Wegener
  • Registratie: December 2001
  • Laatst online: 17-05 23:56
vraagje: waarom geef je bij iedere kollom aan bij welke tabel deze hoort behalve bij GROUP BY en ORDER BY?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:16

.oisyn

Moderator Devschuur®

Demotivational Speaker

Hoi, zou je misschien wat vaker de edit-knop (Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/got/images/icons/edit.gif) willen gebruiken? Daar is ie tenslotte voor. Het kicken van topics binnen 24 uur is namelijk niet echt gewenst, vandaar :)

Niet dat het verboden is om meerdere reacties achter elkaar te plaatsen natuurlijk, maar 3 korte oneliners achter elkaar, waarvan de laatste bovendien weinig toevoegd aan de thread zelf vind ik een beetje overdreven :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Het punt is dat je een GROUP BY op nieuwsreactie.replyid doet, maar je de nieuwsreactie.dates van een specifiek record wilt. Namelijk de meest recente bijdrage aan de nieuws.id.

Oplossing is om de grootste nieuwsreactie.replyid, ofwel MAX(nieuwsreactie.replyid) op te halen.

En nu maar hopen dat dit ook zo is als je het daadwerkelijk uittest...

Mark

Verwijderd

max(nieuwsreactie.dates) as dates

ipv nieuwsreactie.dates in je query lost je probleem op..

---
stroop
http://www.dailyplay.net/

Verwijderd

Topicstarter
Verwijderd schreef op 29 december 2003 @ 00:12:
max(nieuwsreactie.dates) as dates

ipv nieuwsreactie.dates in je query lost je probleem op..

---
stroop
http://www.dailyplay.net/
Jep die werkt. Hartstikke bedankt.

Verwijderd

Topicstarter
Mja ik dacht dat ie het goed deed. Sjek ik het doet ie het niet goed. Ik had dus eerst 2 problemen dat is steeds de verkeerde tijd aangaf, die is nu opgelost met die max(nieuwsreactie.dates) as dates.
Maar nu print hij op deze manier de laatste nieuwsid's met een comment. Dus als ik bij een oudere nieuwsid een reactie post komt hij niet bovenaan te staan. De allerhoogste replyid met een reply in de db blijft bovenaan staan. Mijn query ziet er nu zo uit

PHP:
1
2
3
4
5
<?php 
$query = "SELECT nieuws.titel, nieuws.id, max(nieuwsreactie.date) as date FROM
nieuwsreactie INNER JOIN nieuws ON nieuws.id = nieuwsreactie.replyid GROUP by
replyid DESC ORDER by replyid DESC LIMIT 0, 9"; 
?>


Is niet echt verwonderlijk natuurlijk als ik "ORDER by replyid DESC" doe maar als ik "ORDER by dates DESC" doe werkt ie al helemaal niet. Wat doe ik hier nog fout?

  • Skaah
  • Registratie: Juni 2001
  • Niet online
omdat je
code:
1
date) as date FRO
DATE gebruikt ipv dateS
edit:

Is het echt zo moeilijk om ff die MySQL error uit te lezen.. column 'dates' does not exist... |:(

[ Voor 48% gewijzigd door Skaah op 14-01-2004 16:04 ]


Verwijderd

Topicstarter
Skaah schreef op 14 januari 2004 @ 16:03:
omdat je
code:
1
date) as date FRO
DATE gebruikt ipv dateS
edit:

Is het echt zo moeilijk om ff die MySQL error uit te lezen.. column 'dates' does not exist... |:(
Nope heb die naam aangepast in db dus daarom...

Ik ga er dus vanuit dat niemand weet hoe ik dit moet oplossen?

[ Voor 11% gewijzigd door Verwijderd op 14-01-2004 22:01 ]

Pagina: 1