Avatar billede spidr Nybegynder
28. juli 2007 - 12:35 Der er 7 kommentarer og
1 løsning

Optimere forum kode.

Jeg bruger koden nede for til at udskrive en tråd på mit forum, den udskiver den sådan at den første post i tråden kommer først og derefer d. næste osv. (baseret på id) hvad jeg gerne vil have er således at den første post kommer først, uanset side, men de efterfølgende kommer i omvendt række følge.

Altså så den første post i tråden kommer først, og den nyeste kommer som nummer 2 :)



-------------


<div class=Overskrift><a href=LHforum.php>Forum</a><?php

$OverId = $_GET['OverId'];

$query = mysql_query("select * from LovehinaForum2 WHERE id = '$OverId'") or die(mysql_error()); while($row = mysql_fetch_array($query)){
$headera = $row[header];
$cata = $row[OverId];
$UserId = $row[UserId];
$Status = $row[Status];
$closed = $row[closed];
$stick= $row[stick];
}
$query = mysql_query("select * from LovehinaForum1 WHERE cat = '$cata'") or die(mysql_error()); while($row = mysql_fetch_array($query)){
$headerb = $row[header];
$linkb = $row[cat];
}

print " &gt; <a href=LHcatlaes.php?cat=$linkb>$headerb</a> &gt; <a href=LHlaes.php?OverId=$OverId>$headera</a>";

?></div><br>
<div class=Indhold>


<?php

$testet = mysql_query("SELECT * FROM LovehinaForumT WHERE UnderId = '$OverId' and UserId = '$ID'");
if (mysql_num_rows($testet) == 0) {
mysql_query("INSERT INTO LovehinaForumT VALUES ('','$ID','$cata','$OverId')") or die(mysql_error());
}



if (!isset($s)) {

    $s = "0";

}
$range = $Postsprpage;







$query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM LovehinaForum3 where OverId = '$OverId' order by id limit $s,$range") or die(mysql_error());
if (mysql_num_rows($query) == 0) {
    echo 'Whoops, something is wrong..<br>';
}

elseif ($Status > $rank) { echo 'Your rank ain\'t high enough!<br>'; }

else {
    echo '<table width="100%" id="list"><tr><td></td><td></td></tr>';
    while($row = mysql_fetch_array($query)) {

$tjektid = $row[UserId];
$hent2 = mysql_query("SELECT * FROM LoveHinaUSERS WHERE id = '$row[UserId]'") or die(mysql_error());
$vis2 = mysql_fetch_array($hent2);
if ($vis2[img] == 0) {
$theimg = "nopicture";
}
else {
$theimg = $vis2[id];
}

$MTSidstloggetind = $vis2[Sidstloggetind];

$time = time();
$tidsidenlogn = floor((((($time - $MTSidstloggetind)/60)/60)/24)+1);
$tidsidenhour = floor((($time - $MTSidstloggetind)/60)/60);
$tidsidenmin = floor(($time - $MTSidstloggetind)/60);

if ($tidsidenmin < 10) {$tidsidenlogn = 'NOW';}
elseif ($tidsidenhour < 1) {$tidsidenlogn = $tidsidenmin . ' min(s) ago';}
elseif ($tidsidenlogn < 2) {$tidsidenlogn = $tidsidenhour . ' hour(s) ago';}
else {$tidsidenlogn = $tidsidenlogn . ' days ago';}



if ($vis2[status] == "") {
$printstatus = "";
}
else {
$printstatus = "<b>Status: $vis2[status]</b>";
}

$besked = $row[text];


    $besked = str_replace("
","newBRline", $besked);

    $besked = str_replace("  "," &nbsp;", nl2br(htmlentities(addslashes($besked))));

    $besked = str_replace("<","&lt;", $besked);
    $besked = str_replace(">","&gt;", $besked);

      $besked = str_replace("newBRline","
<br>", $besked);


    $besked = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",                    "<a href=\"\\0\" target=_blank>\\0</a>", $besked);


$isituser = mysql_query("SELECT * FROM LoveHinaUSERS WHERE RANK > '0'") or die(mysql_error());
while($rom = mysql_fetch_array($isituser)) {

    $besked = str_replace("$rom[Nickname]","<a href=profiles.php?for=$rom[id]>$rom[Nickname]</a>", $besked);

}

    $besked = str_replace("\\","", $besked);
    $besked = str_replace("'","'", $besked);
    $besked = str_replace("'","'", $besked);
    $besked = str_replace("","<i>", $besked);
    $besked = str_replace("
","</i>", $besked);
    $besked = str_replace("","<b>", $besked);
    $besked = str_replace("
","</b>", $besked);
    $besked = str_replace("","<u>", $besked);
    $besked = str_replace("
","</u>", $besked);
    $besked = str_replace("
","<div class=Overskrift>", $besked);
    $besked = str_replace("
","</div>", $besked);
    $besked = str_replace("[hr]","<hr>", $besked);
    $besked = str_replace("[quote]","<fieldset>", $besked);
    $besked = str_replace("[/quote]","</fieldset>", $besked);


    $besked = str_replace(":P","<img src='grafik/215.gif' border=0>", $besked);
    $besked = str_replace(":skummel:","<img src='grafik/222.gif' border=0>", $besked);
    $besked = str_replace(":angel:","<img src='grafik/smiley_angel.gif' border=0>", $besked);

    $besked = str_replace(":)","<img src='grafik/icon_smile.gif' border=0>", $besked);
    $besked = str_replace(":(","<img src='grafik/icon_sad.gif' border=0>", $besked);
    $besked = str_replace(";)","<img src='grafik/icon_wink.gif' border=0>", $besked);
    $besked = str_replace(":O","<img src='grafik/icon_eek.gif' border=0>", $besked);
    $besked = str_replace(":D","<img src='grafik/icon_mrgreen.gif' border=0>", $besked);
    $besked = str_replace("8)","<img src='grafik/icon_cool.gif' border=0>", $besked);
    $besked = str_replace(":S","<img src='grafik/icon_confused.gif' border=0>", $besked);
    $besked = str_replace(":,(","<img src='grafik/icon_cry.gif' border=0>", $besked);
    $besked = str_replace(":!:","<img src='grafik/icon_exclaim.gif' border=0>", $besked);
    $besked = str_replace(":arrow:","<img src='grafik/icon_arrow.gif' border=0>", $besked);
    $besked = str_replace(":evil:","<img src='grafik/icon_evil.gif' border=0>", $besked);
    $besked = str_replace(":twisted:","<img src='grafik/icon_twisted.gif' border=0>", $besked);
    $besked = str_replace(":roll:","<img src='grafik/icon_rolleyes.gif' border=0>", $besked);
    $besked = str_replace(":spam:","<img src='grafik/462.gif' border=0>", $besked);
    $besked = str_replace(":$","<img src='grafik/985.gif' border=0>", $besked);
    $besked = str_replace(":love2:","<img src='grafik/6865.gif' border=0>", $besked);
    $besked = str_replace(":boy:","<img src='grafik/979.gif' border=0>", $besked);
    $besked = str_replace(":girl:","<img src='grafik/980.gif' border=0>", $besked);
    $besked = str_replace(":fuck:","<img src='grafik/whogives.gif' border=0>", $besked);
    $besked = str_replace(":thx:","<img src='grafik/thx.gif' border=0>", $besked);
    $besked = str_replace(":suck:","<img src='grafik/sucks.gif' border=0>", $besked);
    $besked = str_replace(":topic:","<img src='grafik/offtopic.gif' border=0>", $besked);
    $besked = str_replace(":life:","<img src='grafik/life.gif' border=0>", $besked);
    $besked = str_replace(":bad:","<img src='grafik/bad_idea.gif' border=0>", $besked);
    $besked = str_replace(":google:","<img src='grafik/google.gif' border=0>", $besked);
    $besked = str_replace(":think:","<img src='grafik/17541.gif' border=0>", $besked);
    $besked = str_replace(":joint1:","<img src='grafik/7579.gif' border=0>", $besked);
    $besked = str_replace(":joint2:","<img src='grafik/7578.gif' border=0>", $besked);
    $besked = str_replace(":joint3:","<img src='grafik/7567.gif' border=0>", $besked);
    $besked = str_replace(":wizard:","<img src='grafik/7555.gif' border=0>", $besked);
    $besked = str_replace(":cheer:","<img src='grafik/7500.gif' border=0>", $besked);
    $besked = str_replace(":ops:","<img src='grafik/7133.gif' border=0>", $besked);
    $besked = str_replace(":weird:","<img src='grafik/7095.gif' border=0>", $besked);
    $besked = str_replace(":bug:","<img src='grafik/7086.gif' border=0>", $besked);
    $besked = str_replace(":secret:","<img src='grafik/7003.gif' border=0>", $besked);
    $besked = str_replace(":comment:","<img src='grafik/6837.gif' border=0>", $besked);
    $besked = str_replace(":closed:","<img src='grafik/454.gif' border=0>", $besked);

    $besked = stripslashes($besked);


if ($vis2[Rank] == 4) {$besked = '<span class=green>' . $besked . '</span>';}
elseif ($vis2[Rank] == 3) {$besked = '<span class=red>' . $besked . '</span>';}
elseif ($vis2[Rank] == 2) {$besked = '<span class=itemmagic>' . $besked . '</span>';}
elseif ($vis2[Rank] == 1) {$besked = '<span class=fed>' . $besked . '</span>';}

$mthentlvl = $vis2[lvl] + 1;
        echo '<tr>';
        echo "<td width='20%' valign=top><a href='profiles.php?for=$row[UserId]'><img src=css/pics/ppl/$theimg.jpg width=110 border=0><br><b><div class=stor align=center>$vis2[Nickname]</div></b></a></td>";
        echo "<td width=80% valign=top>$besked<br><br><br></td></tr>";
        echo '<tr><td width="20%" valign=top><br><div class=small>Posts: '.$vis2[posts].'<br>Level: '.$mthentlvl.'<br>Online '.$tidsidenlogn.'</div><div class=itemepic>'.$printstatus.'</div></td><td width="80%"><div align=right><i>Written: '.$row[date].'</i> ';
if ($rank > "1") { echo '<a href=LHforumret.php?id='.$row[id].'&OverId='.$OverId.'><img src=ret.gif border=0></a><a href=LHforumslet.php?id='.$row[id].'&OverId='.$OverId.'><img src=grafik/delete.gif border=0></a>'; }
elseif ($ID == $tjektid) { echo '<a href=LHforumret.php?id='.$row[id].'&OverId='.$OverId.'><img src=ret.gif border=0></a>'; }


        echo '</div><hr><div class=small><i>'.$vis2[signature].'</i></div> </td></tr><tr><td COLSPAN=2><hr><br></td></tr>';
    }
    echo '</table>';
}

if ($Status <= $rank) {

$g_total = mysql_query("select count(id) as total from LovehinaForum3 where OverId = '$OverId'") or die(mysql_error());

$total = mysql_result($g_total,0);


print "<br>$Postsprpage Comments each page:<br>Page:";

##

#Find ud af om derskal være et Forrige link

##

if ($s >= $range) { //Tjekker om værdien af $s er større eller lig $pr_side

    $previous_s = $s-$range; //Regner ud hvor mysql skal starte hvis forrige side kaldes

    echo "<a href='?OverId=$OverId&s=$previous_s'>Last</a> "; //Udskriver linket

}



##

#Find ud af hvis/hvor mange sider der er rows til

##

$page = 1; //Definerer hvor sidetal skal starte

for($start=0; $total > $start; $start=$start+$range){

    if ($start != $s) {

        echo "<a href='?OverId=$OverId&s=$start'>$page</a> ";

    } else {

        echo "$page ";

    }

    $page++;

}



##

#Find ud af om der skal være et næste link

##

if ($total > $s+$range) { //Tjekker om der er flere sider

    $next_s = $s+$range; //Regner ud hvor mysql skal starte hvis næste side kaldes

    echo "<a href='?OverId=$OverId&s=$next_s'>Next</a>"; //Udskriver linket "næste"

}



if(strpos(" ".$booklinks,$OverId.",") > 0){
echo "<br> <br><div class=ups><a href='http://www.lovehina.dk/newbookmark.php?topic=$OverId'>Click here to remove this bookmark.</a></div><br>";
}else{
echo "<br> <br><div class=ups><a href='http://www.lovehina.dk/newbookmark.php?topic=$OverId'>Click here to bookmark this topic.</a></div><br>";
}


if ($closed == 1 && $rank < "2") {

print "<br><br><div class=ups>This threat has been locked</div>";
}

else {


if ($closed == 1 && $rank > "1") {
print "<br><br><div class=ups>This threat has been locked, <a href=handle.php?wdo=0&doid=$OverId&adoo=1>UNLOCK</a></div>";
}
elseif ($rank > "1") {
print "<br><br><div class=itemmagic>This threat has NOT been locked, <a href=handle.php?wdo=1&doid=$OverId&adoo=1>LOCK</a></div>";
}





if ($stick == 1 && $rank > "1") {
print "<br><div class=ups>This threat is sticky, <a href=handle.php?wdo=0&doid=$OverId&adoo=2>UNSTICK</a></div>";
}
elseif ($rank > "1") {
print "<br><div class=itemset>This threat is NOT sticky, <a href=handle.php?wdo=1&doid=$OverId&adoo=2>STICK</a></div>";
}




?>
Avatar billede jakobdo Ekspert
29. juli 2007 - 11:29 #1
Jeg tror du bliver nød til at lave det over 2 kald.

Hvad med:

//Henter nyeste ud...
SELECT * FROM tabel WHERE thread = tal ORDER BY id ASC LIMIT 1

//Hent og sorter resten.
SELECT * FROM tabel WHERE thread = tal AND id > id_paa_første_tråd ORDER BY id DESC
Avatar billede spidr Nybegynder
30. juli 2007 - 08:04 #2
Ja, det var jeg også selv bange for, så skal jeg jo skrive alt det der skal ske med posten 2 gange ikke?
Avatar billede jakobdo Ekspert
30. juli 2007 - 19:17 #3
Det forstår jeg ikke?
Du kunne jo lave en funktion som klarede output, så skal du bruge den 2 gange, og ikke skrive koden 2 gange.
Avatar billede spidr Nybegynder
30. juli 2007 - 20:45 #4
ehm, alt det i while($row = mysql_fetch_array($query)) {
skal jeg vel skrive igen, det bearbejder jo nogle $row..?

Ellers må du forklare det?
Avatar billede jakobdo Ekspert
30. juli 2007 - 21:00 #5
Ja, men du kunne jo lave en funktion som gør det.

Så du laver en funktion ala:

function printForumRow($input_row)
{
//print indhold af row...
}

//SQL nummer 1
$result = mysql_query("SELECT * FROM forum where....");
$row = mysql_fetch_assoc($result);
printForumRow($row);

//SQL nummer 2
$result = mysql_query("SELECT * FROM forum where....");
$row = mysql_fetch_assoc($result);
printForumRow($row);

Forstår du?
Avatar billede spidr Nybegynder
31. juli 2007 - 10:57 #6
Glimrende ide ja, ved jeg ikke lige hvorfor jeg ikke tænkte på, det gør jeg da bare :)
Avatar billede jakobdo Ekspert
31. juli 2007 - 18:04 #7
Og du får et svar...
Avatar billede jakobdo Ekspert
01. august 2007 - 18:47 #8
Takker for point.
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