Laatste forumposts laten zien op index

Status
Niet open voor verdere reacties.

dj-martini

Gebruiker
Lid geworden
7 okt 2006
Berichten
119
De titel zegt het denk ik al...

Hoe kan je zoals helpmij dat heeft op www.helpmij.nl ;links die laatste forumposts laten zien. Ik zie het op meer sites, en ik zou het ook graag willen.

Iemand een idee?

alvast bedankt
 
kun je niet de html code van de homepage opvragen? gewoon ergens rechterklik, bron weergeven.
 
Dat werkt met een PHP/MySQL systeem, niet op javascript:
bij het opslaan van je berichten voeg een een timestamp toe, met de tijd van het toevoegen.
dan vraag je bvb de laatste 10 timestamps op
Code:
concept (mySQL):
SELECT * FROM posts ORDER BY timestamp DESC LIMIT 10
nu heb je de laatste 10 posts, als je de laatste 10 topics wilt zal je bij het opvragen van posts een DISTINCT op topic moeten uitvoeren
Code:
concept(mySQL):
SELECT DISTINCT topic_id FROM posts ORDER BY timestamp DESC LIMIT 10

--Johan
 
@ johantrax:

zou je dit iets makkelijker uit kunnen leggen? dan ga ik er ook eens mee expirimenteren.

alvast bedankt.
 
Dillondarko,

Eerst en vooral wil ik er op wijzen dat dit topic niets met javascript te maken heeft.

Veel fora (bij mijn weten >95%) werken met een php/mySQL systeem. PHP is een script(/programmeer)taal die op een server wordt uitgevoerd. MySQL is een database, die werkt volgens de sql-commandos (SQL = structured Query Language; een taal om gegevens aan een database op te vragen).
De verbinding met zo'n database wordt dan vanuit php gemaakt. In php stel je een sql-statement (de database-opdracht) op die je naar die database stuurt. Het resultaat ervan vang je in php op, en verwerk je tot geldige HTML-code. Het is uiteindelijk enkel die html die de gebruiker te zien krijgt.

Een database werkt (meestal) met tabellen, waartussen je relaties kan vastleggen.
Zo kan de tabel die alle posts bijhoud er zo gaan uitzien:
Code:
post_nr | nickname | inhoud | topic_id | tijd
met
Code:
* post_nr : een uniek nummer dat de database automatisch invult. Dit vergemakkelijkt het zoeken in de tabel, aangezien elke rij nu via zijn nummer kan gevonden worden
* nickname : de naam van de poster
* inhoud : de reactie die de gebruiker heeft ingetypt
* topic_id : het nummer van het topic waarin deze post thuishoort, dit nummer is een verwijzing naar een rij in de topicstabel (waar topic_id een uniek nummer is, zoals post_nr is voor deze tabel)
* tijd : het moment van toevoegen van de post aan de database
Zoals je kan zien heeft deze database 5 velden, maar er worden er slechts 2 van door de gebruiker ingevuld (zijn naam en zijn reactie).

Om nu een post aan deze tabel toe te voegen, heb je:
1. een formulier
2. php-code die de opdracht uitvoert
nodig

Het formulier
bestaat uit slechts 3 velden: de naam, het bericht, verzend-knop
de actie van het formulier wordt een php-pagina (dit is vaak zelfs dezelfde pagina als die die het formulier bevat)
tevens zetten we de methode van het formulier op POST, dit is van belang, om de ingegeven waarden op de verwerkingspagina te kunnen opvragen

de verwerking
op deze pagina zullen we de waardes van het formulier opvragen. dit kan je in php doen op volgende manier
PHP:
$mijnVariabele = $_POST['formulierveld_dat_verstuurd_werd'];
Vervolgens wordt met die opgehaalde waardes een SQL-insert-commando gemaakt. Dit commando beschrijft in welke kolommen van welke tabel, welke waardes moeten geplaatst worden.
Code:
INSERT INTO tabelnaam (kolomnaam1, kolomnaam2,...) VALUES ('waarde_voor_kolom1', 'waarde_voor_kolom2',...);
bij ons wordt dit commando in php gemaakt, waardoor we die variabele en functies van php kunnen gebruiken als waardes om toe te voegen.
Voor de tijd van het bericht gebruiken we de php-functie time(), die een UNIX-timestamp van het huidige moment genereert. Het volledige commando slaan we op in een variabele genaamd sqlQuery (ik negeer topic_id voor dit voorbeeld)
PHP:
$sqlQuery = "INSERT INTO posts (nickname, inhoud, tijd) VALUES ('" . $_POST['naam'] . "', '" . $_POST['bericht'] . ")";
De punt wordt in php gebruikt om 2 strings tot 1 string samen te voegen.

ophalen van data
opnieuw stellen we in php een sql-commando op. Dit keer een SELECT-commando. Dit laat toe om gegevens van een database op te vragen. De basisopbouw is als volgt:
Code:
SELECT kolomwaarde1, kolomwaarde2 FROM tabelnaam
Om van alle posts de nickname en het bericht op te halen, krijgen we volgend sqlstatement:
Code:
SELECT nickname, inhoud FROM posts
Om er nu voor te zorgen dat de laatste post als eerste in die lijst komt te staan, moeten we eerst en vooral de tijdskolom mee opvragen, en dan breiden we het commando uit zodat op de tijdskolom gesorteert wordt (ORDER BY kolomnaam) in aflopende volgorde (DESC: van descending, lett:afdalend) Dan staat de timestamp met de grootste getalwaarde bovenaan in het resultaat.
Het aangepaste statement:
Code:
SELECT nickname, inhoud, tijd FROM posts ORDER BY tijd DESC
Al wat nu nog rest is zeggen dat je niet alle posts wil opvragen, maar enkel de laatste 10. En die laatste 10 zijn nu de eerste 10 in ons gesorteerd resultaat geworden. Het beperken van een resultaat gebeurt met het keyword LIMIT, gevolgd door het aantal.

Het volledige sql-commando wordt dan:
Code:
SELECT nickname, inhoud, tijd FROM posts ORDER BY tijd DESC LIMIT 10

Na het uitvoeren van dit commando via php, kan je het resultaat in een array steken. Die array kan je dan met php overlopen en de gewenste html-code zo laten genereren.

--Johan
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan