Avatar billede buxxy Praktikant
21. november 2009 - 13:05 Der er 3 kommentarer og
1 løsning

Vise alle undtagen 3 sidste

Hej Eksperter.

Jeg har en kode der viser de sidste besøgende på proflierne på vores hjemmeside. Eksempel ses her - under feltet "Mine sidste besøgende - (under udvikling..)":

http://www.phpfusion-tips.dk/profile.php?lookup=1

- jeg har så brugt lidt JavaScript til at få en åbne/lukke-funktion (udvide/sammenklap, eller hvad det nu kaldes, således jeg kan nøjes med at vise f.eks. de 3 sidste besøgende synligt. Når man så trykker på "Flere besøgende..." vil jeg gerne undlade de 3 der jo allerede vises i forvejen.

Jeg ved hvordan man klarer det, hvis man bruger f.eks.:

ORDER BY blabla DESC LIMIT 3,12

Men jeg kan ikke rigtig se mig ud af denne her.. ?

Hjælp påskønnes.

Her kommer koden, der viser sidste besøgende på profilen:
------------------------------------
<?php
//---CONFIG UPPER LEVEL---///
$zw_lastvis_showcount = 2; /// Number of visitors to show !!!!(max 14)!!!!
$daysshown = 5; /// Number of Days, the users are shown
///---CONFIG UPPER LEVEL---///

///---CONFIG LOWER LEVEL---///
$zw_lastvis_showcount2 = 12; /// Number of visitors to show !!!!(max 14)!!!!
$daysshown2 = 14; /// Number of Days, the users are shown
///---CONFIG LOWER LEVEL---///

if ($profile_method == "display") {
    $change = false;
    $zw_lastvis_array = explode(".",$user_data['zw_lastvisitors']);
    if(is_array($zw_lastvis_array) && count($zw_lastvis_array)) {
        foreach($zw_lastvis_array as $zwskey => $zwsvals) {
            $zwsvals_array = explode("|",$zwsvals);
            if ((!isset($zwsvals_array[1]) || $zwsvals_array[1]<(time()-$daysshown*3600*24)) || (iMEMBER && $userdata['user_id'] == $zwsvals_array[0])) { unset($zw_lastvis_array[$zwskey]); $change = true; }
        }
    }
    if (iMEMBER && $userdata['user_id']!=$user_data['user_id']) {
        array_unshift($zw_lastvis_array, $userdata['user_id']."|".time());
        $change = true;
    }
    array_splice($zw_lastvis_array,$zw_lastvis_showcount);
    if ($change) { $zw_lastivsquery = dbquery("UPDATE ".DB_USERS." SET zw_lastvisitors='".implode(".",$zw_lastvis_array)."' WHERE user_id='".$user_data['user_id']."'"); }
    $zw_lastvis_show = "";
    $zw_lastvis_none = "Ingen besøgende de sidste 5 dage\n";
    if (is_array($zw_lastvis_array) && count($zw_lastvis_array)) {
        foreach($zw_lastvis_array as $zw_lastvis_data) {
            $zw_lvinfo = explode("|",$zw_lastvis_data);
            $zw_lastvis_uname = false;
            $zw_lastvis_ava = false;

            $zw_lastvis_ava = dbresult(dbquery("SELECT user_avatar FROM ".DB_USERS." WHERE user_id='".$zw_lvinfo[0]."'"),0);

            if(isnum($zw_lvinfo[0]) && $zw_lvinfo[0] && $zw_lastvis_uname = dbresult(dbquery("SELECT user_name FROM ".DB_USERS." WHERE user_id='".$zw_lvinfo[0]."'"),0)) {
if ($zw_lastvis_ava['user_avatar']) {
                $zw_lastvis_show.=($zw_lastvis_show!="" ? " " : "")."<td align='center' class='tbl1'>\n<table border='1' cellpadding='5' cellspacing='0'>\n<tr>\n<td align='center'><a href='".BASEDIR."profile.php?lookup=".$zw_lvinfo[0]."' title='".$zw_lastvis_uname."'>".$zw_lastvis_uname."<br /><img src='".IMAGES."avatars/".$zw_lastvis_ava."' alt='".$zw_lastvis_uname."' border='0' width='90' /></a></td>\n</td>\n</tr>\n</table>\n";
} else {
                $zw_lastvis_show.=($zw_lastvis_show!="" ? " " : "")."<td align='center' class='tbl1'>\n<table border='1' cellpadding='5' cellspacing='0'>\n<tr>\n<td align='center'><a href='".BASEDIR."profile.php?lookup=".$zw_lvinfo[0]."' title='".$zw_lastvis_uname."'>".$zw_lastvis_uname."<br /><img src='".IMAGES."avatars/noav.gif' alt='".$zw_lastvis_uname."' border='0' width='90' /></a></td>\n</td>\n</tr>\n</table>\n";
}
            }
        }
    }

    echo "</tr>\n</table>\n";
    echo "<div style='margin:5px'></div>\n";
    echo "<table cellpadding='0' cellspacing='1' width='580' class='tbl-border center'>\n<tr>\n";
    echo "<td class='tbl2' colspan='7'><strong>".$locale['uf_zw_lastvis_03']."</strong></td>\n";
    echo "</tr>\n<tr>\n";

    if ($zw_lastvis_show=="") {
    echo "<td align='right' class='tbl'>".$zw_lastvis_none."</td>\n";
    echo "</tr>\n";
    }

    if ($zw_lastvis_show==!"") {
    echo "".$zw_lastvis_show."\n";
    echo "</tr>\n<tr>\n";
    echo "<td align='right' width='100%' colspan='7' class='tbl'><a href=\"java script:void(0)\" onclick=\"toggle_smt();\"><span id='show_more_threads_text'><b>Flere besøgende...</b></span></a></td>\n";
    echo "</tr>\n";   
    }



// ------------------------------- SPLIT UPPER/LOWER SECTION ------------------------------- //




    $change = false;
    $zw_lastvis_array = explode(".",$user_data['zw_lastvisitors']);
    if(is_array($zw_lastvis_array) && count($zw_lastvis_array)) {
        foreach($zw_lastvis_array as $zwskey => $zwsvals) {
            $zwsvals_array = explode("|",$zwsvals);
            if ((!isset($zwsvals_array[1]) || $zwsvals_array[1]<(time()-$daysshown2*3600*24)) || (iMEMBER && $userdata['user_id'] == $zwsvals_array[0])) { unset($zw_lastvis_array[$zwskey]); $change = true; }
        }
    }
    if (iMEMBER && $userdata['user_id']!=$user_data['user_id']) {
        array_unshift($zw_lastvis_array, $userdata['user_id']."|".time());
        $change = true;
    }
    array_splice($zw_lastvis_array,$zw_lastvis_showcount2);
    if ($change) { $zw_lastivsquery = dbquery("UPDATE ".DB_USERS." SET zw_lastvisitors='".implode(".",$zw_lastvis_array)."' WHERE user_id='".$user_data['user_id']."'"); }
    $zw_lastvis_show = "";
    $zw_lastvis_none = "Ingen besøgende de sidste 5 dage\n";
    if (is_array($zw_lastvis_array) && count($zw_lastvis_array)) {
        foreach($zw_lastvis_array as $zw_lastvis_data) {
            $zw_lvinfo = explode("|",$zw_lastvis_data);
            $zw_lastvis_uname = false;
            $zw_lastvis_ava = false;

            $zw_lastvis_ava = dbresult(dbquery("SELECT user_avatar FROM ".DB_USERS." WHERE user_id='".$zw_lvinfo[0]."'"),0);

            if(isnum($zw_lvinfo[0]) && $zw_lvinfo[0] && $zw_lastvis_uname = dbresult(dbquery("SELECT user_name FROM ".DB_USERS." WHERE user_id='".$zw_lvinfo[0]."'"),0)) {
if ($zw_lastvis_ava['user_avatar']) {
                $zw_lastvis_show.=($zw_lastvis_show!="" ? " " : "")."<td align='center' class='tbl1'>\n<table border='1' cellpadding='5' cellspacing='0'>\n<tr>\n<td align='center'><a href='".BASEDIR."profile.php?lookup=".$zw_lvinfo[0]."' title='".$zw_lastvis_uname."'>".$zw_lastvis_uname."<br /><img src='".IMAGES."avatars/".$zw_lastvis_ava."' alt='".$zw_lastvis_uname."' border='0' width='90' /></a></td>\n</td>\n</tr>\n</table>\n";
} else {
                $zw_lastvis_show.=($zw_lastvis_show!="" ? " " : "")."<td align='center' class='tbl1'>\n<table border='1' cellpadding='5' cellspacing='0'>\n<tr>\n<td align='center'><a href='".BASEDIR."profile.php?lookup=".$zw_lvinfo[0]."' title='".$zw_lastvis_uname."'>".$zw_lastvis_uname."<br /><img src='".IMAGES."avatars/noav.gif' alt='".$zw_lastvis_uname."' border='0' width='90' /></a>\n</td>\n</td>\n</tr>\n</table>\n";
}
            }
        }
    }

    echo "</tr>\n</table>\n";
       
   
    echo "<div id='show_more_threads' style='display: none;'>\n";
   
    echo "<table cellpadding='0' cellspacing='1' width='580' class='tbl-border center'>\n<tr>\n";
    if ($zw_lastvis_show=="") {
    echo "<td align='right' class='tbl'>".$zw_lastvis_none."</td>\n";
    echo "</tr>\n";
    }

    if ($zw_lastvis_show==!"") {
    echo "".$zw_lastvis_show."\n";
    echo "</tr>\n";
    }   
    echo "</table>\n";
   
    echo "<script type='text/javascript'>
<!--
function toggle_smt() {
var smt = document.getElementById('show_more_threads');
var smttxt = document.getElementById('show_more_threads_text');
if (smt.style.display == 'none') {
smt.style.display = 'block';
smttxt.innerHTML = 'Færre besøgende...';
} else {
smt.style.display = 'none';
smttxt.innerHTML = 'Flere besøgende...';
}
}
//-->
</script>\n
</div>\n";
   
    echo "<table cellpadding='0' cellspacing='0'>\n<tr>\n";
    echo "<td></td>\n";
  echo "</tr>\n";
}

?>

Fortsat god weekend!

Mvh.
Buxxy.
22. november 2009 - 22:30 #1
Det fik du ikke mange svar paa, og det forstaar jeg godt efter selv at have kikket paa det.  Jeg har foesoegt at forstaa, globalt, html koden til siden (der sidder maerkelige ting i der i hvert fald ikke vil passere et W3C check,) og saa har jeg forsoegt at forstaa din meget komplekse php kode.

Jeg er ikke kommet saa langt at jeg kan bevise noget.  Men jeg er temmelig sikker paa at problemet ikke har noget at goere med database search (altsaa ikke noget at goere med "LIMIT 3,12".)  Du synes i databasen at have information og avatar for dine users men IKKE information om hvornaar de har besoegt siden.  Besoegsinformationen synes at staa i en "zw_lastvisitors".  Naar du skal til at vise de sidste besoegende fyldler du saa den information i en array "$zw_lastvis_array", og for cellerne i arrayen henter du saa information fra databasen en for en.

Jeg vil derfor gaette paa at loesningen ligger i ikke at bruge konstruktionen

foreach($zw_lastvis_array as $zw_lastvis_data)
        {
          $zw_lvinfo = explode("|",$zw_lastvis_data);
          .................

men naar du viser de foerste 3 noget i retningen af

for($i = 0; $i < 3; $i++)
{
  $zw_lvinfo = explode("|",$zw_lastvis_array[$i]);
  .................

og naar du vil vise mere besoegende

for($i = 3; $i < 12; $1++ ......................

Jeg haaber at denne observation er korrekt og at den kan hjaelpe dig paa vej til en tilfredsstillende loesning.

Puha....
24. november 2009 - 22:33 #2
Buxxy, saa du mit indlaeg?  Har det vaeret til nogen nytte eller har jeg bare forvirret dit mere?  Giv mig en reaktion.
Avatar billede buxxy Praktikant
24. november 2009 - 23:22 #3
Hej Christian.

Joow, det var lidt forvirrende. Jeg har holdt pause HELT fra kodning/udvikling/support mm. i over 3 mdr. nu. Derfor er jeg ikke helt "up-to-date" mere.

Men jeg har afprøvet det du siger - og så forsvinder hele "boksen/feltet" der hedder "Mine sidste besøgende".

Jeg tror bare jeg dropper det. Min kode er jo heller ikke særlig velskrevet - og der ser ligeledes heller ikke ud til at være interesse for at hjælpe mig. Lige med undtagelse af dig, Christian.

Tak fordi du gad at tage dig tid til at kigge på det.

Smid et svar - så får du point.
25. november 2009 - 06:48 #4
Her er mit svar.
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