Avatar billede supermand69 Nybegynder
27. juli 2004 - 23:05 Der er 1 kommentar og
1 løsning

sortere efter time

Hej

Jeg er ved at udvikle et debatforum som er lavet i tråde som så skal blive sorteret efter time...

I nedenstående eksempel er der 3 overordnede indlæg: "1 testing... :D", "test igen" og "haha..." Den tråd hvor under der sidst er lavet et indlæg skal blive vist øverst :)

Jeg ved ikke helt om I er med på hvad jeg mener, men her er et link: http://clark.avansis.dk/temp/thread/


Her er min kode (mit javascript fungerer ikke helt perfekt endnu, da trådene ikke kan lukkes igen):

<script type="text/javascript">
var expand = new Array();

function thread_expand(thread)
{
    expand[thread] = true;
   
    var img = 'img'+thread;
    var div = 'div'+thread;
    var td = 'td'+thread;
   
    if(expand[thread])
    {
        document.getElementById(img).src = 'gfx/debate_thread_open.gif';
        document.getElementById(div).style.display = '';
        document.getElementById(td).style.backgroundImage = "url('gfx/debate_thread_bg.gif')";
    }
    else
    {
        document.getElementById(img).src = 'gfx/debate_thread_close.gif';
        document.getElementById(div).style.display = 'none';
        document.getElementById(td).style.backgroundImage = '';
    }
    expand[thread] = !expand[thread];
}
</script>

<link rel="stylesheet" href="req/style.css" type="text/css">

<body bgcolor="#f9f9f9">

<?
function thread($reply_id, $table)
{
    global $DB;
   
    $i = 1;
   
    $sql = "SELECT debate.id, debate.subject, debate.time, COUNT(debate2.reply_id) AS replies, user.name
        FROM $DB.$table debate, $DB.user user
        LEFT JOIN $DB.$table debate2 ON debate.id=debate2.reply_id
        WHERE debate.user_id=user.id && debate.reply_id=$reply_id
        GROUP BY debate.id
        ORDER BY debate.time DESC";
    $get = mysql_query($sql);
    $num = mysql_num_rows($get);
    while($row = mysql_fetch_array($get))
    {
?>
<table>
  <tr valign="top">
<?
    if($num == $i) echo '<td><img src="gfx/debate_thread_end.gif">';
    elseif($row['replies']) echo '<td style="background: url(\'gfx/debate_thread_bg.gif\') margin-bottom: 10px;"><img style="cursor: hand" id="img'.$row['id'].'" onclick="thread_expand('.$row['id'].');" src="gfx/debate_thread_close.gif">';
    else echo '<td style="background: url(\'gfx/debate_thread_bg.gif\') margin-bottom: 10px;"><img src="gfx/debate_thread.gif">';
?>
    </td>
    <td>
      <table>
        <tr valign="top">
          <td id="td<?=$row['id']?>"><img src="gfx/debate_msg.gif"></td>
          <td height="30"><span class="small_marked"><?=$row['subject']?></span><br><span class="small"><?=$row['time']?> | <?=$row['name']?></span></td>
        </tr>
      </table>
    </td>
  </tr>
  <tr>
    <td style="background: url('gfx/debate_thread_bg.gif');"></td>
    <td colspan="2">
      <div id="div<?=$row['id']?>" style="display: none;">
<?
    thread($row['id'], $table);
?>
      </div>
    </td>
  </tr>
</table>
<?
        $i++;
    }
}

$table = 'debate_generelt';

$sql = "SELECT debate.id, debate.subject, debate.time, COUNT(debate2.reply_id) AS replies, user.name
    FROM $DB.$table debate, $DB.user user
    LEFT JOIN $DB.$table debate2 ON debate.id=debate2.reply_id
    WHERE debate.user_id=user.id && debate.reply_id=0
    GROUP BY debate.id";
$get = mysql_query($sql);
while($row = mysql_fetch_array($get))
{
?>
<table>
  <tr valign="top">
    <td style="background: url('gfx/debate_thread_bg.gif') margin-bottom: 10px;">
<?
    if($row['replies']) echo '<img style="cursor: hand" id="img'.$row['id'].'" onclick="thread_expand('.$row['id'].');" src="gfx/debate_thread_close.gif">';
    else echo '<img src="gfx/debate_thread.gif">';
?>
    </td>
    <td>
      <table>
        <tr valign="top">
          <td id="td<?=$row['id']?>"><img src="gfx/debate_msg.gif"></td>
          <td height="30"><span class="small_marked"><?=$row['subject']?></span><br><span class="small"><?=$row['time']?> | <?=$row['name']?></span></td>
        </tr>
      </table>
    </td>
  </tr>
  <tr>
    <td style="background: url('gfx/debate_thread_bg.gif');"></td>
    <td colspan="2">
      <div id="div<?=$row['id']?>" style="display: none;">
<?
    thread($row['id'], $table);
?>
      </div>
    </td>
  </tr>
</table>
<?
}
?>

</body>
Avatar billede supermand69 Nybegynder
27. juli 2004 - 23:18 #1
Øv, desuden har jeg lige fundet en fejl! :( Den vil ikke vise alle indlæg under id 9... Aner ikke hvad der er galt?!

CREATE TABLE debate_generelt (
  id int(6) NOT NULL auto_increment,
  reply_id int(6) NOT NULL default '0',
  user_id int(5) NOT NULL default '0',
  time int(10) NOT NULL default '0',
  subject varchar(30) NOT NULL default '',
  msg text NOT NULL,
  KEY id (id,reply_id,time)
) TYPE=MyISAM;

#
# Data dump for tabellen `debate_generelt`
#

INSERT INTO debate_generelt VALUES (1, 0, 1, 1090959800, '1 testing... :D', 'tester lige *BOING*');
INSERT INTO debate_generelt VALUES (2, 1, 1, 1090958803, 'Re. 2', 'kuk kuk..');
INSERT INTO debate_generelt VALUES (3, 1, 1, 1090957803, 'Re. 3', 'hallåååh mand... :)');
INSERT INTO debate_generelt VALUES (4, 2, 1, 1090959003, 'Re. 4', 'noget');
INSERT INTO debate_generelt VALUES (5, 2, 1, 1090959603, 'Re. 5', 'hahahah....');
INSERT INTO debate_generelt VALUES (6, 4, 1, 1090949803, 'Re. 6', 'muhahaha..');
INSERT INTO debate_generelt VALUES (7, 1, 1, 1090950009, 'Re. 7', 'virker det mon?');
INSERT INTO debate_generelt VALUES (8, 0, 2, 1090945803, 'test igen', 'haha...');
INSERT INTO debate_generelt VALUES (9, 8, 1, 1090911803, 'Re. test', 'baaaah');
INSERT INTO debate_generelt VALUES (10, 0, 1, 1090959803, 'haha...', 'intet..');
INSERT INTO debate_generelt VALUES (11, 9, 2, 1090962770, 'Det seneste indlæg!!!', 'daaa');
INSERT INTO debate_generelt VALUES (12, 9, 1, 1090948770, 'noget', 'hehe');
Avatar billede supermand69 Nybegynder
28. juli 2004 - 18:05 #2
lukker
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