Avatar billede jaudk Nybegynder
28. juli 2008 - 12:46 Der er 13 kommentarer

Få schaefners gamle php forum til at sortere anderledes?

Hej, hvordan kan jeg få schaefners forum til at sortere emnerne således at det emne der sidst er besvaret ligger øverst i stedet for at det er det sidst oprettede emne der altid ligger øverst? hvis i mangler kode siger i bare til :)
Avatar billede jakobdo Ekspert
29. juli 2008 - 23:16 #1
Vis noget kode...
Gerne den sql som lister emner i dag og evt. også tabel-struktur over emner.
Avatar billede jaudk Nybegynder
30. juli 2008 - 11:23 #2
Her?

<?php
include('config.php');
$query = mysql_query("SELECT id,header,name,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM forum WHERE parent=0 ORDER BY id DESC LIMIT $offset,$range") or die(mysql_error());
if (mysql_num_rows($query) == 0) {
    echo 'Der er ingen tråde i forummet!<br>';
} else {
    echo '<table width="100%" id="list"><tr>';
    echo '<th width="40%">Overskrift</th><th width="30%">Forfatter</th><th width="30%">Dato</th><th>Indlæg</th>';
    echo '</tr>';
    while($row = mysql_fetch_assoc($query)) {
        echo '<tr>';
        echo "<td width='40%'><a href='laes.php?id=$row[id]'>$row[header]</a></td>";
        echo '<td width="30%">'.$row['name'].'</td>';
        echo '<td width="30%">'.$row['date'].'</td>';
        echo '<td>'.mysql_result(mysql_query("SELECT COUNT(*) FROM forum WHERE parent=$row[id]"),0).'</td>';
        echo '</tr>';
    }
    echo '</table>';
}
echo '<br>';

$antal = mysql_result(mysql_query("SELECT COUNT(*) FROM forum WHERE parent=0"),0);
if ($offset >= $range) {
    $forrige = $offset-$range;
    echo "<a href='?offset=$forrige'>Forrige</a> | ";
} else {
    echo 'Forrige | ';
}
if ($antal > $offset+$range) {
    $naeste = $offset+$range;
    echo "<a href='?offset=$naeste'>Næste</a> ";
} else {
    echo 'Næste ';
}
?>
Avatar billede jakobdo Ekspert
30. juli 2008 - 11:43 #3
Har du kun tabellen FORUM ?
Avatar billede jaudk Nybegynder
30. juli 2008 - 12:25 #4
ja sql filen ser således ud:

CREATE TABLE forum (
  id int(11) NOT NULL auto_increment,
  header varchar(100) NOT NULL default '',
  name varchar(60) NOT NULL default '',
  email varchar(60) NOT NULL default '',
  date datetime NOT NULL default '0000-00-00 00:00:00',
  message text NOT NULL,
  parent int(11) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;
Avatar billede jakobdo Ekspert
30. juli 2008 - 14:10 #5
Prøv at ret:
ORDER BY id DESC
til:
ORDER BY date DESC
Avatar billede jaudk Nybegynder
30. juli 2008 - 14:38 #6
Det hjalp ikke, før lå indlæggende sådan.. (altså med ORDER BY id DESC):


29/7-08 10:52:34
28/7-08 14:50:27
15/7-08 13:25:06
9/7-08 22:35:52   
16/6-08 20:23:21
16/6-08 19:00:26
15/6-08 23:25:55
27/5-08 23:44:59
26/5-08 22:10:48
25/5-08 19:21:29
21/5-08 12:26:32
19/5-08 19:10:30
11/5-08 21:24:56
28/4-08 11:14:17
24/4-08 11:37:06
6/4-08 18:45:17   
11/3-08 19:52:39
5/2-08 12:19:47   
3/2-08 14:57:13   
22/1-08 08:55:54   

Da det blev rettet til ORDER BY date DESC så det således ud:
og selvom jeg skrev i det emne fra d. 3/2-08 fx så blev det ikke rykket øverst.

9/7-08 22:35:52
6/4-08 18:45:17
5/2-08 12:19:47   
3/2-08 14:57:13   
29/7-08 10:52:34
28/7-08 14:50:27
28/4-08 11:14:17
27/5-08 23:44:59
26/5-08 22:10:48
25/5-08 19:21:29
24/4-08 11:37:06
22/1-08 08:55:54
21/5-08 12:26:32
19/5-08 19:10:30
16/6-08 20:23:21
16/6-08 19:00:26
15/7-08 13:25:06
15/6-08 23:25:55
11/5-08 21:24:56
11/3-08 19:52:39
Avatar billede jakobdo Ekspert
30. juli 2008 - 14:40 #7
Problemet er det kræver en lidt mere avanceret sql... :o)

$query = mysql_query("SELECT id,header,name,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM forum WHERE parent=0 ORDER BY id DESC LIMIT $offset,$range")

Du får kun dem med parent = 0
Når du laver en indlæg længere nede, så trigger det ikke din sql.
Avatar billede dkfire Nybegynder
30. juli 2008 - 14:50 #8
For mig ser det ud til at dit date felt ikke er helt rigtig sat op. det ser ud til at den sortere date feltet som en varchar og ikke som en dato.
Avatar billede jakobdo Ekspert
30. juli 2008 - 15:20 #9
Problemet er at man jo skal have fat i noget ala:

hvor parent = parent = parent = 0.
For at få nyeste indlæg i en tråd, som øverst er koblet sammen med en parent tråd.
Avatar billede jaudk Nybegynder
31. juli 2008 - 10:37 #10
Har i et forslag til hvordan sql sætningen så skal se ud?
Avatar billede jakobdo Ekspert
31. juli 2008 - 14:28 #11
Kan en tråd være parent til en tråd, som kan være parent til en tråd osv... ?
Avatar billede jaudk Nybegynder
31. juli 2008 - 15:02 #12
og parent er? - ved ikke hvad parent er.
Avatar billede jakobdo Ekspert
01. august 2008 - 18:04 #13
Parent = 0 = hovedtråd.
Parent = 1 = svar på tråd, som har id = 1
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester