topic omhoog bij een reactie.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Olivier -

olivier -

22/02/2012 18:52:08
Quote Anchor link
Beste ,

ik ben bezig met een forum en dit is bijna af.
echter wil ik nog dat als iemand reageert in een topic dat dit topic omhoog gaat.
iemand die mij kan helpen?
ik heb hier onder de code indien nodig.

mvg ,

Olivier

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
    include '../global.php';
      $layout->top();    
         echo menu();    
        echo '<div class="center">';            
         if(isset($_SESSION['id']) && is_numeric($_SESSION['id']) && $_SESSION['ip'])
        {

        if(isset($_GET['id']))
            {
        
            $online->normaal();
            $topic_data = mysql::query("SELECT * FROM forum_topic WHERE catagorie='".mysql::safe_get($_GET['id'])."' ORDER BY id DESC");
            $catagorie_data = mysql::query("SELECT * FROM forum_catagorie WHERE id='".mysql::safe_get($_GET['id'])."'");            
            if(mysql_num_rows($catagorie_data) >'0')
                {

                $cata = mysql_fetch_object($catagorie_data);    
                
            echo '<div id="sub"><a href="index.php">Forum</a> >> <a href="forum.php?id='.$cata->id.'"><b>'.$cata->titel.'</b></a></div>';
            echo '<div id="forum_info">';
            echo '<div style="padding:2px;width:560px;text-align:left;float:left;">';
            echo 'forum';
            echo '</div>';
            echo '<div style="width:220px;text-align:left;float:left;">';
            echo 'aantal reacties';
            echo '</div>';
            echo '<div style="width:180px;text-align:left;float:left;">';
            echo 'laatste reactie';
            echo '</div>';
            echo '</div>';    
            $i = 1;            
            while($topic = mysql_fetch_object($topic_data))
            {

            $topic_count = mysql::query("SELECT * FROM forum_reacties WHERE topic='".$topic->id."' ORDER BY id DESC");
            $count_topics = mysql_num_rows($topic_count);
            $laatste_reactie = mysql_fetch_object($topic_count);
            if(!empty($laatste_reactie->bericht))
                {

                $laatstereactie = $forum->text_chop($laatste_reactie->bericht,10);
                $door = 'door <a href="/profile.php?naam='.htmlentities($laatste_reactie->naam).'">'.htmlentities($forum->text_chop($laatste_reactie->naam,10));
                }
else {
                $laatstereactie = 'door';
                $door = 'niemand';
                }

                if($forum->gelezen($topic->id) == TRUE)
                    {

                        $gelezen = '<img src="/forum/images/open.png" class="gelezen">';
                    }
else {
                        $gelezen = '<img src="/forum/images/dicht.png" class="gelezen">';
                    }

                
            if($i % 2 == 0)
                {

                echo '<div id="sub_1">'.$gelezen.'<a class="url" href="topic.php?id='.htmlentities($topic->id).'">'.htmlentities($topic->titel).'</a></div>
                <div id="info_sub">'
.$count_topics.'</div><div id="info_sub">'.htmlentities($laatstereactie).' '.$door.'</a></div>';
            }

            else
                {
                echo '<div id="sub_2">'.$gelezen.'<a class="url" href="topic.php?id='.htmlentities($topic->id).'">'.htmlentities($topic->titel).'</a></div>
                <div id="info_sub2">'
.$count_topics.'</div><div id="info_sub2">'.htmlentities($laatstereactie).' '.$door.'</a></div>';
                }
    
                $i++;
            }

            echo '<div id="footer_forum"></div></div>';
                }

                    else {
                        echo 'deze catagorie bestaat niet.';
                }                        
            }

                else
                {
                echo 'Er is geen waarde opgehaald.';
    }
        }

      echo '</div>';
      $layout->bottom();        
?>
 
PHP hulp

PHP hulp

28/03/2024 21:03:23
 

22/02/2012 19:03:32
Quote Anchor link
Je zou wanneer er iemand reageert een update_datetime in de tabel aanmaken en die dan laten sorteren op de update_datetime,insert_datetime of iets dergelijks.
 
Olivier -

olivier -

22/02/2012 19:52:39
Quote Anchor link
dus bij de forum_reacties tabel een column toevoegen genaamd : last_reactie en dan daar op ordenen
en dan als een topic word aangemaakt de last_reactie op de aanmaak tijd zetten?
 

22/02/2012 19:56:12
Quote Anchor link
Ja, dat zou je kunnen doen. Eventueel een default (op last_reaction) in de tabel zetten. Dan moet je bij de insert dat niet meer doen. En op create_date kun je ook een default zetten.
 
Eddy E

Eddy E

22/02/2012 19:57:32
Quote Anchor link
last_reactie hoeft niet als je goed normaliseert.

Je kan namelijk aan het bericht zelf ook zien van wanneer de laatste reactie was.
Wellicht is het voor de snelheid (en gemak) wel makkelijk als je een last_reaction (of laatste_reactie) toevoegt, maar het zijn wel dubbele gegevens. Dus kan je in de war komen met inconsistente gegevens én je database raakt sneller vol.

Als je alles goed normaliseert (opbouwt) en je een nette query schrijft moet het ook zonder die kolom kunnen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT DISTINCT p.topic_id, p.author_id, p.post_time, t.topic_name
FROM posts AS p
LEFT JOIN topics AS t
ON p.topic_id = t.topic_id
ORDER BY p.post_time DESC
GROUP BY p.topic_id

(voorbeeld, niet getest)
Gewijzigd op 22/02/2012 19:59:31 door Eddy E
 

22/02/2012 20:05:33
Quote Anchor link
Zo had ik het nog niet gezien Eddy, maar het is wel een mooiere oplossing dan de mijne. Bedankt voor de tip :-).
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.