Avatar billede onkel_satan Nybegynder
18. februar 2003 - 02:34 Der er 6 kommentarer og
1 løsning

Forum taeller ?

Hejsa.
Jeg er igang med et forum og vil paa forumIndex siden (hvor alle topics bliver vist) lave en kolonne (read), der viser hvor mange gange traaden er blevet laest.
Det som jeg er kommet frem til er noget det her, men jeg syntes det er blevet lidt rodet og vigtigst af det hele det virker ikke rigtigt.

session_start();
require("mysql.php");
$topic = $_REQUEST['topic'];
$counter = $_SESSION['counter'];
$counter = unserialize($counter);
sql_connect();
$query = "SELECT views FROM forumIndex WHERE topic = '$topic'";
$result = sql_query_anwser($query);
sql_close();
$t = count($result);
while ($t > 0) {
    $t--;
    extract($result[0]);
    $insertviewers = $views + 1; 
    echo $topic;
    echo "<br>";
    if (in_array($topic, $counter)){
    }else{
        sql_connect();
        $insertSQL = "UPDATE forumIndex SET views = '$insertviewers' WHERE topic = '$topic'";
        sql_query($insertSQL);
        $counter[] = $topic;
        sql_close();
        $counter = serialize($counter);
        session_register('counter');
    }

}


Den gemmer kun den foerste vaerdi($topic) i array'et og bliver derfor ved med at taelle op.
Nogen faarslag til hvordan det kan laves ?
Avatar billede angelod Novice
18. februar 2003 - 02:39 #1
Du sætter jo aldrig $views, derfor vil:
  $insertviewers = $views + 1;
Blive til:
  $insertviewers = 0 + 1;

Desuden så formoder jeg at:
  $result = sql_query_anwser($query);
Skulle være:
$result = sql_query_answer($query);

:o)
Avatar billede angelod Novice
18. februar 2003 - 02:42 #2
Og her overså jeg noget vigtigt, nemlig at dit spørgsmål drejede sig om noget helt andet. Sorry.
Avatar billede angelod Novice
18. februar 2003 - 02:43 #3
Overså også 'extract' delen.. Damn.. Jeg burde vist bare hoppe i seng nu. :D
Avatar billede onkel_satan Nybegynder
18. februar 2003 - 02:48 #4
$views kommer jo fra mit database udtraek "$query = "SELECT views FROM forumIndex"

"Desuden så formoder jeg at:
"  $result = sql_query_anwser($query);
"Skulle være:
"$result = sql_query_answer($query);

jeg kan ikke se nogen forskaeld ????
SQL udtraekket virker ellers fint

Problemet er at variablen/array'et "$counter" kun husker den foerste variable. Meningen er at alle topic's (overskrifter) skulle gemmes i $counter saa jeg havde styr paa hvilken topic's man havde laest.
Avatar billede onkel_satan Nybegynder
18. februar 2003 - 02:49 #5
Hehe... kender det godt :o)
Avatar billede angelod Novice
18. februar 2003 - 02:51 #6
*GG* Ja den opdagede jeg også.. Håber du finder en løsning, ellers prøver jeg at kigge på det når jeg står op igen. Indtil da, afvis lige mit svar så du ikke kommer til at godkende det ved en fejltagelse. ;o)
Avatar billede tefcke Nybegynder
18. februar 2003 - 12:53 #7
Jeg ville lige gøre opmørksom på at du sikkert kommer til at have et rimlig stort overhead når du åbner en database forbindelse og lukker den igen ved hver eneste forspørgelse.

Lav i stedet en header fil som bliver inkluderet i toppen af alle siderne, hvor du åbner en forbindelse til databasen, og tilsvarende en footer fil, hvor du lukker forbindelsen pænt efter dig.

En anden ting jeg lige tænkte på er, hvorfor du først hiver views ud af databasen, tæller den op, for at sætte den ind igen!
Hvorfor ikke bare lave en direkte UPDATE på views hvor den bliver incrementeret? (man kan godt bruge algebra i sql)
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

IT-JOB