Avatar billede klaaes Nybegynder
29. august 2005 - 19:11 Der er 46 kommentarer

Nye beskeder øverst i forum

Hej,

Jeg har et forum: http://www.123y.dk/falkobilleder/forum/index.php , som jeg synes er alletiders. Men nu vil jeg gerne have et forum, hvor ulæste beskeder vises først.
Det må skam gerne være et helt andet script I har fundet ude på nettet, bare det er et trådforum i stil med det nævnte.

Jeg er mere eller mindre PHP-dummie og har brug for hjælp, og det vil jeg gerne betale points for, så ikke noget med: "Det er pære let, du skal bare lave noget a la...."! - Det har jeg dårlig erfaring med.

Tak
Avatar billede jakobdo Ekspert
29. august 2005 - 22:15 #1
Hvor meget er du interesseret i at lave selv?
Eller ønsker du en færdig løsning, som du kan smide på din forside, og så vupti, så virker det bare?
Avatar billede klaaes Nybegynder
29. august 2005 - 23:09 #2
Jeg vil helst have hvis der var et færdigt script, som jeg selv kan implementere på min side.
Avatar billede jakobdo Ekspert
30. august 2005 - 08:16 #3
Så skal vi jo vide lidt om hvordan din database er sammensat.
Evt hvordan din forum-tabel er bygget.
Og hvad mener du med ulæste beskeder i toppen?
En tråd hvor der ikke er skrevet indlæg til endnu?
Eller snakker vi en tråd som den enkelte bruger ikke har læst endnu? (og du måske bruger noget login/brugersystem?)
Avatar billede klaaes Nybegynder
30. august 2005 - 08:32 #4
Her er forum-koden:

<?php
include('config.php');
$query = mysql_query("SELECT id,header,name,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder WHERE parent=0 ORDER BY id DESC LIMIT $offset,$range") or die(mysql_error());
if (mysql_num_rows($query) == 0) {
    echo 'Der er ingen tråde i forummet!<br>';
} else {
    echo '<table width="50%" id="list"><tr>';
    echo '<th width="40%">Overskrift</th><th width="30%">Forfatter</th><th width="30%">Dato</th><th>Indlæg</th>';
    echo '</tr>';
    while($row = mysql_fetch_assoc($query)) {
        echo '<tr>';
        echo "<td width='40%'><a href='laes.php?id=$row[id]'>$row[header]</a></td>";
        echo '<td width="30%">'.$row['name'].'</td>';
        echo '<td width="30%">'.$row['date'].'</td>';
        echo '<td>'.mysql_result(mysql_query("SELECT COUNT(*) FROM sladder WHERE parent=$row[id]"),0).''
        if ($now()-$row['date'] < 10000)) {
        echo '<font color="red">NY!</font></td>';
        } else {
        echo '</td>';
        echo '</tr>';
    }
    echo '</table>';
}
echo '<br>';

$antal = mysql_result(mysql_query("SELECT COUNT(*) FROM sladder WHERE parent=0"),0);
if ($offset >= $range) {
    $forrige = $offset-$range;
    echo "<a href='?offset=$forrige'>Forrige</a> | ";
} else {
    echo 'Forrige | ';
}
if ($antal > $offset+$range) {
    $naeste = $offset+$range;
    echo "<a href='?offset=$naeste'>Næste</a> ";
} else {
    echo 'Næste ';
}
?>

Det skal være dem den enkelte bruger ikke har læst endnu, men der er ikke noget brugerlogin. Det er ligesom i nogle forums hvor der kommer et mærke ud for de ulæste tråde.
Avatar billede jakobdo Ekspert
30. august 2005 - 08:38 #5
Hvis ikke du vil have et brugersystem, så skal det jo laves i en cookie.
Du kunne evt lave noget i stil med:
Når en bruger besøger din side, så gemmer du en cookie med tidspunktet lige nu.
Når brugeren så kommer næste gang, så tjekker du cookie, og viser alle tråde nyere end tidspunktet fra cookien øverst. Eller markere dem med et lille ikon.
Avatar billede jakobdo Ekspert
30. august 2005 - 08:39 #6
Hvis du ændrer: ORDER BY id til: ORDER BY date så vil du altid have den nyeste i toppen.
Avatar billede klaaes Nybegynder
30. august 2005 - 09:02 #7
jeg har altid den nyeste tråd i toppen.. problemet er at jeg gerne vil have tråde med nye indlæg i toppen.

Folk klager over at det er uoverskueligt, for de skal huske hvor mange indlæg der var i de forskellige tråde sidste gang, for at finde de nye.
Avatar billede jakobdo Ekspert
30. august 2005 - 09:08 #8
Så skal vi lave det med en cookie.
Kan du vise mig hvordan dit forum er bygget op?
Avatar billede klaaes Nybegynder
30. august 2005 - 09:29 #9
Koden til index.php kan du se ovenfor.

laes.php:

<? include("../left.inc") ?>
  </font></p> </div>
<div id="Content"><font face="Verdana, Arial, Helvetica, sans-serif"><?php
include('config.php');
$id = $_GET['id'];
$query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder WHERE id=$id AND parent=0");
$row = mysql_fetch_assoc($query);

echo '<h1>'.$row['header'].'</h1>';
echo empty($row['email']) ? $row['name'] : "<a href='mailto:$row[email]'>$row[name]</a>";
echo "&nbsp;($row[date])<br><br>";
echo nl2br($row['message']).'<hr>';

$query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder WHERE parent=$id ORDER BY id ASC");
while ($row = mysql_fetch_assoc($query)) {
    echo empty($row['email']) ? $row['name'] : "<a href='mailto:$row[email]'>$row[name]</a>";
    echo "&nbsp;($row[date])<br><br>";
    echo nl2br($row['message']).'<hr>';
}
?>

<h2>Kommenter tråd</h2>

<form method="post" action="post.php">
<input type="hidden" name="parent" value="<?php echo $id; ?>"><input type="hidden" name="prfm" value="comment">
Navn: <input type="text" name="name" value="<?php echo $_COOKIE['name']; ?>" style="width: 120px">
Email: <input type="text" name="email" value="<?php echo $_COOKIE['email']; ?>" style="width: 120px"><br>
<textarea name="message" rows="7" cols="0" style="width: 328px"></textarea><br>
<input type="submit" value="Send">
  </form>
</font>
<hr>
      <a href="index.php">Se alle tråde</a> | <a href="opret.php">Opret ny tråd</a>
      | <a href="soeg.php">Søg efter tråd</a> </td>
  </tr>


opret.php:

<td width="740" height="460"><font face="Verdana, Arial, Helvetica, sans-serif">
    <h1>Opret nyt sladder</h1>

<form method="post" action="post.php">
<input type="hidden" name="prfm" value="new">
Navn: <input type="text" name="name" value="<?php echo $_COOKIE['name']; ?>" style="width: 120px">
Email: <input type="text" name="email" value="<?php echo $_COOKIE['email']; ?>" style="width: 120px"><br>
Overskrift: <input type="text" name="header" style="width: 262px">
      <strong><font color="#660000">Husk at skrive en fyldig, beskrivende overskrift!</font></strong><br>
<textarea name="message" rows="7" cols="0" style="width: 328px"></textarea><br>
<input type="submit" value="Send">
      <br>
</form>
</font>
<hr>
      <a href="index.php">Se alle tråde</a> | <a href="soeg.php">Søg efter tråd</a>
    </td>
  </tr>


post.php:

<?php
include('config.php');
$name = strip_tags($_POST['name']);
$message = htmlspecialchars($_POST['message']);
$email = strip_tags($_POST['email']);

if ($_POST['prfm'] == 'new') {
    $header = strip_tags($_POST['header']);
    if (!empty($header) && !empty($name) && !empty($message)) {
        mysql_query("INSERT INTO sladder VALUES ('','$header','$name','$email',now(),'$message','')") or die(mysql_error());
        $id = mysql_insert_id();
        header("Location: laes.php?id=$id");
    } else {
        echo '<font color="red">Alle felter er ikke udfyldt!</font>';
    }
}
if ($_POST['prfm'] == 'comment') {
    $parent = $_POST['parent'];
    if (!empty($name) && !empty($message)) {
        mysql_query("INSERT INTO sladder VALUES ('','','$name','$email',now(),'$message','$parent')") or die(mysql_error());
        header("Location: laes.php?id=$parent");
    } else {
        echo '<font color="red">Alle felter er ikke udfyldt!</font>';
    }
}
?>


soeg.php:

<td width="740" height="460"><font face="Verdana, Arial, Helvetica, sans-serif"><h1>Søg efter tråd</h1>

Her kan søges efter tråde i sladder-forummet. Der søges i overskrift og tekst
    i de oprettede tråde; dog ikke i de tilhørende kommentarer. Hvis du ikke indtaster
    et søgeord vil alle resultater blive vist!<br>
    <br>

    <form action="/falkobilleder/forum/soeg.php">
      <table><tr>
<td>Søgeord:<br><input type="text" name="q">&nbsp;</td>
<td>Sorter efter:<br><select name="sort"><option value="header">Overskrift</option><option value="name">Forfatter</option><option value="id">Dato</option></select>&nbsp;</td>
<td>Sortering:<br><select name="order"><option value="desc">Faldende [z-a]</option><option value="asc">Stigende [a-z]</option></select></td>
</tr></table>
<input type="submit" value="Udfør">
</form>

<?php
if (isset($_GET['q'])) {
    echo '<hr>';
    echo '<h2>Resultater af din søgning på: "'.$_GET['q'].'"</h2>';
    include('config.php');
    $q =  $_GET['q'];
    $sort = $_GET['sort'];
    $order = $_GET['order'];
    $query = mysql_query("SELECT id,parent,header,name,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder WHERE (header LIKE '%$q%' OR message LIKE '%$q%') ORDER BY $sort $order LIMIT $offset,$range") or die(mysql_error());
    if (mysql_num_rows($query) == 0){
        echo 'Ingen resultater af din søgning!<br>';
    } else {
        echo '<table id="list"><tr>';
        echo '<th width="40%">Overskrift</th><th width="30%">Forfatter</th><th width="30%">Dato</th><th nowrap>Indlæg</th>';
        echo '</tr>';
        while($row = mysql_fetch_assoc($query)) {
            echo '<tr>';
            echo "<td width='40%'>";
            if ($row[parent] == 0){
            echo "<a href='laes.php?id=$row[id]'>$row[header]</a></b></td>";
            } else {
            $squery = mysql_query("SELECT id FROM sladder WHERE id=$row[parent]");
            echo "<a href='laes.php?id=$row[parent]'>".mysql_result(mysql_query("SELECT header FROM sladder WHERE id=$row[parent]"),0)."</a></b></td>";
            }
            echo '<td width="30%">'.$row['name'].'</td>';
            echo '<td width="30%">'.$row['date'].'</td>';
            if ($row[parent] == 0){
            echo '<td nowrap>'.mysql_result(mysql_query("SELECT COUNT(*) FROM sladder WHERE parent=$row[id]"),0).'</td>';
            } else {
            echo '<td nowrap>'.mysql_result(mysql_query("SELECT COUNT(*) FROM sladder WHERE parent=$row[parent]"),0).'</td>';
            }
            echo '</tr>';
        }
        echo '</table>';
    }
    echo '<br>';

    $antal = mysql_result(mysql_query("SELECT COUNT(*) FROM sladder WHERE parent=0 AND (header LIKE '%$q%' OR message LIKE '%$q%')"),0);
    if ($offset >= $range) {
        $forrige = $offset-$range;
        echo "<a href='?q=$q&sort=$sort&order=$order&offset=$forrige'>Forrige</a> | ";
    } else {
        echo 'Forrige | ';
    }
    if ($antal > $offset+$range) {
        $naeste = $offset+$range;
        echo "<a href='?q=$q&sort=$sort&order=$order&offset=$naeste'>Næste</a>";
    } else {
        echo 'Næste';
    }
}
?>
</font>
<hr>
      <a href="index.php">Se alle tråde</a> | <a href="opret.php">Opret ny tråd</a>
      &nbsp;</td>
  </tr>


config.php:

<?php
/* indstillinger : database */
$mysql['host'] = 'MITHOST'; // Host til database
$mysql['username'] = 'MITBRUGERNAVN'; // Brugernavn til database
$mysql['password'] = 'MITKODEORD'; // Kodeord til database
$mysql['database'] = 'MINDATABASE'; // Database

/* indstillinger : side */
$range = 20; // Antal resultater pr. side

/* redigering ikke nødvendig herunder */
$offset = isset($_GET['offset']) ? $_GET['offset'] : 0;

mysql_connect($mysql['host'],$mysql['username'],$mysql['password']);
mysql_select_db($mysql['database']);
?>
Avatar billede jakobdo Ekspert
30. august 2005 - 09:46 #10
Test denne løsning:

<?php
$lastVisit = $_COOKIE["TimeCookie"];

//Sætter cookie næsten et år...
setcookie("TimeCookie", time(), time()+60*60*24*30*12, "/", ".ditdomain.dk");

include('config.php');
$query = mysql_query("SELECT id,header,name,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder WHERE parent=0 ORDER BY id DESC LIMIT $offset,$range") or die(mysql_error());
if (mysql_num_rows($query) == 0)
{
    echo 'Der er ingen tråde i forummet!<br>';
}
else
{
    echo '<table width="50%" id="list"><tr>';
    echo '<th width="40%">Overskrift</th><th width="30%">Forfatter</th><th width="30%">Dato</th><th>Indlæg</th>';
    echo '</tr>';
   
    while($row = mysql_fetch_assoc($query))
    {
        echo '<tr>';
        echo "<td width='40%'><a href='laes.php?id=$row[id]'>$row[header]</a></td>";
        echo '<td width="30%">'.$row['name'].'</td>';
        echo '<td width="30%">'.$row['date'].'</td>';
        echo '<td>'.mysql_result(mysql_query("SELECT COUNT(*) FROM sladder WHERE parent=$row[id]"),0).'';
        $query = mysql_query("SELECT UNIX_TIMESTAMP(date) AS unix FROM sladder WHERE parent=$row[id] OR id=$row[id] ORDER BY date LIMIT 1");
        $row2 = mysql_fetch_assoc($query);
       
        if ($row2['unix'] > $lastVisit))
        {
            echo '<font color="red">NY!</font></td>';
        }
        else
        {
            echo '</td>';
            echo '</tr>';
    }
   
    echo '</table>';
    }
    echo '<br>';

    $antal = mysql_result(mysql_query("SELECT COUNT(*) FROM sladder WHERE parent=0"),0);

    if ($offset >= $range)
    {
        $forrige = $offset-$range;
        echo "<a href='?offset=$forrige'>Forrige</a> | ";
    }
    else
    {
        echo 'Forrige | ';
    }
   
    if ($antal > $offset+$range)
    {
        $naeste = $offset+$range;
        echo "<a href='?offset=$naeste'>Næste</a> ";
    }
    else
    {
        echo 'Næste ';
    }
?>
Avatar billede klaaes Nybegynder
30. august 2005 - 10:14 #11
Jeg kan desværre ikke teste det lige nu, da jeg ikke er ved min ftp-server, men jeg kan se at jeg dummede mig lidt. Som du måske har lagt mærke til var jeg ved at lave det med at den skriver "NY!" ud for de nye beskeder. Det er jo det jeg vil droppe, til fordel for det system der lægger de tråde med nyeste indlæg i toppen.
Avatar billede jakobdo Ekspert
30. august 2005 - 10:44 #12
De nyeste er jo altid øverst?
Eller snakker vi dem med nyeste svar/indlæg øverst?
Avatar billede klaaes Nybegynder
30. august 2005 - 11:04 #13
Ja. Det er de tråde der har nye indlæg der skal øverst.
Avatar billede jakobdo Ekspert
30. august 2005 - 11:49 #14
Det med at sortere så nyeste altid er øverst, det bliver noget ged.
Man kan ikke lave det i en pæn query.
Hvilken version bruger du af MYSQL?
Man kan muligvis lave noget rigtigt slamkode, som så trækker data ud og bygger det hele op i et array.
Måske man kunne lave det med subqueries.
Mon ikke Arne_V kunne klare den opgave?
Prøv evt at stil spørgsmålet i mysql-sektionen!
Avatar billede klaaes Nybegynder
30. august 2005 - 15:21 #15
No no no no no no.. nu bliver det bare alt for avanceret. Vi må lige klappe hesten engang. - Det jeg forestillede mig, var lidt ligesom en SMS-indbakke, hvor ulæste beskeder altid er øverst, og tydeligt markeret som ulæste. Men skide være med det, så..

Så prøv istedet at lave så den skriver "NY!" med rød skrift ud for en tråd med et nyt indlæg i. Det vigtige er at folk lynhurtigt kan se, hvor der er noget nyt!
Avatar billede jakobdo Ekspert
30. august 2005 - 15:26 #16
Så skal du test det kode jeg har lavet fra: 30/08-2005 09:46:21
Avatar billede klaaes Nybegynder
30. august 2005 - 16:19 #17
Så ser koden sådan ud:

<html>
<head>
<title>Falkobilleder.dk</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../style.css" />
</head>

<table width="100%" border="0" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr>
    <td width="701" height="100" valign="top" bgcolor="#006699"><div align="left"><a href="../index.php"><img src="../banner.jpg" width="700" height="100" border="0"></a></div></td><? include("../top.inc") ?>
</table>
<div id="Menu">

       
  <? include("../left.inc") ?>
  </font></p> </div>

<div id="Content">
  <p><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><strong>Falkobilleders
    Sladderside</strong></font></p>
  <p><font face="Verdana, Arial, Helvetica, sans-serif">
    <?php
$lastVisit = $_COOKIE["TimeCookie"];

//Sætter cookie næsten et år...
setcookie("TimeCookie", time(), time()+60*60*24*30*12, "/", ".ditdomain.dk");

include('config.php');
$query = mysql_query("SELECT id,header,name,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder WHERE parent=0 ORDER BY id DESC LIMIT $offset,$range") or die(mysql_error());
if (mysql_num_rows($query) == 0)
{
    echo 'Der er ingen tråde i forummet!<br>';
}
else
{
    echo '<table width="50%" id="list"><tr>';
    echo '<th width="40%">Overskrift</th><th width="30%">Forfatter</th><th width="30%">Dato</th><th>Indlæg</th>';
    echo '</tr>';
   
    while($row = mysql_fetch_assoc($query))
    {
        echo '<tr>';
        echo "<td width='40%'><a href='laes.php?id=$row[id]'>$row[header]</a></td>";
        echo '<td width="30%">'.$row['name'].'</td>';
        echo '<td width="30%">'.$row['date'].'</td>';
        echo '<td>'.mysql_result(mysql_query("SELECT COUNT(*) FROM sladder WHERE parent=$row[id]"),0).'';
        $query = mysql_query("SELECT UNIX_TIMESTAMP(date) AS unix FROM sladder WHERE parent=$row[id] OR id=$row[id] ORDER BY date LIMIT 1");
        $row2 = mysql_fetch_assoc($query);
       
        if ($row2['unix'] > $lastVisit)
        {
            echo '<font color="red">NY!</font></td>';
        }
        else
        {
            echo '</td>';
            echo '</tr>';
    }
   
    echo '</table>';
    }
    echo '<br>';

    $antal = mysql_result(mysql_query("SELECT COUNT(*) FROM sladder WHERE parent=0"),0);

    if ($offset >= $range)
    {
        $forrige = $offset-$range;
        echo "<a href='?offset=$forrige'>Forrige</a> | ";
    }
    else
    {
        echo 'Forrige | ';
    }
   
    if ($antal > $offset+$range)
    {
        $naeste = $offset+$range;
        echo "<a href='?offset=$naeste'>Næste</a> ";
    }
    else
    {
        echo 'Næste ';
    }
?>
    </font> </p>
  <hr>
  <p><font face="Verdana, Arial, Helvetica, sans-serif"><a href="opret.php">Opret
    tråd</a> | <a href="soeg.php">Søg efter tråd</a> </font> </td> </p>
  <p><font color="#999999" size="2" face="Verdana, Arial, Helvetica, sans-serif">Generelt
    slettes ingen indl&aelig;g, men i helt specielle tilf&aelig;lde(gentagende,
    hadefulde indl&aelig;g mod enkeltpersoner, racisme osv.) kan det alligevel
    komme p&aring; tale. Falkobilleder.dk kan ikke holdes ansvarlig, hvis der
    opst&aring;r utilfredshed med indholdet af enkelte indl&aelig;g. Indl&aelig;g
    som indeholder reklamer for andre hjemmesider eller reklame generelt vil blive
    slettet uden varsel.</font></p>
</div>
</body>
</html>


Men jeg får fejlen:
Parse error: parse error, unexpected $ in /customers/123y.dk/123y.dk/httpd.www/falkobilleder/forum/index.php on line 100
Avatar billede jakobdo Ekspert
30. august 2005 - 17:06 #18
Kan du give mig linie: 99-101.
Avatar billede jakobdo Ekspert
30. august 2005 - 17:09 #19
Tilføj en } ved dette:

    else
    {
        echo 'Næste ';
    }
?>
    </font> </p>

så det bliver:

    else
    {
        echo 'Næste ';
    }
}
?>
    </font> </p>
Avatar billede klaaes Nybegynder
30. august 2005 - 18:49 #20
Det begynder at ligne noget. Den første tråd vises, men ovenover får jeg fejlen:
Warning: Cannot modify header information - headers already sent by (output started at /customers/123y.dk/123y.dk/httpd.www/falkobilleder/forum/index.php:11) in /customers/123y.dk/123y.dk/httpd.www/falkobilleder/forum/index.php on line 27

Det er den linie der sætter cookien.
Avatar billede jakobdo Ekspert
30. august 2005 - 19:44 #21
Kan du ikke flytte dette:
$lastVisit = $_COOKIE["TimeCookie"];

//Sætter cookie næsten et år...
setcookie("TimeCookie", time(), time()+60*60*24*30*12, "/", ".ditdomain.dk");
op til toppen:
så det bliver:
<?
$lastVisit = $_COOKIE["TimeCookie"];

//Sætter cookie næsten et år...
setcookie("TimeCookie", time(), time()+60*60*24*30*12, "/", ".ditdomain.dk");
?>
<html>
<head>
Avatar billede klaaes Nybegynder
30. august 2005 - 21:41 #22
Som du kan se her:
http://www.123y.dk/falkobilleder/forum/index2.php

vises kun den første tråd. Ellers ingen fejlmeldinger.
Avatar billede jakobdo Ekspert
30. august 2005 - 21:46 #23
Ret lige:
$query = mysql_query("SELECT UNIX_TIMESTAMP(date) AS unix FROM sladder WHERE parent=$row[id] OR id=$row[id] ORDER BY date LIMIT 1");
        $row2 = mysql_fetch_assoc($query);

til:

$query2 = mysql_query("SELECT UNIX_TIMESTAMP(date) AS unix FROM sladder WHERE parent=$row[id] OR id=$row[id] ORDER BY date LIMIT 1");
        $row2 = mysql_fetch_assoc($query2);
Avatar billede klaaes Nybegynder
30. august 2005 - 21:49 #24
Nu er de der alle sammen, men de er ikke ordnet.:

http://www.123y.dk/falkobilleder/forum/index2.php
Avatar billede jakobdo Ekspert
30. august 2005 - 21:51 #25
Hvad mener du med ordnet?
Avatar billede jakobdo Ekspert
30. august 2005 - 21:52 #26
Det ligner noget HTML som mangler, prøv lige at rod lidt med det!
Avatar billede jakobdo Ekspert
30. august 2005 - 21:52 #27
Avatar billede klaaes Nybegynder
30. august 2005 - 22:04 #28
Ja, så har jeg fundet fejlen. Men der er stadig ballade.. De er allesammen nye, selvom jeg har klikket ind på dem og læst dem.
Avatar billede jakobdo Ekspert
30. august 2005 - 22:06 #29
Og du er sikker på cookien er sat?
Prøv at luk browseren og åben siden igen?
Avatar billede jakobdo Ekspert
30. august 2005 - 22:07 #30
Det må være noget galt med der hvor den teste $row['unix'] og $lastVisit!
PRøv at lav debug, og skriv dem begge ud...
Avatar billede klaaes Nybegynder
30. august 2005 - 22:11 #31
Hvordan gør jeg det? .. der er ikke sat nogen cookie.
Avatar billede jakobdo Ekspert
30. august 2005 - 22:15 #32
Debug?
jeg plejer at lave:
echo "Unix: " . $row['unix'] . "<br>";
og
echo "LastVisit: " . $lastVisit . "<br>";
Avatar billede jakobdo Ekspert
30. august 2005 - 22:16 #33
For fanden da også! :o)
Du skal rette:
setcookie("TimeCookie", time(), time()+60*60*24*30*12, "/", ".ditdomain.dk");
til:
setcookie("TimeCookie", time(), time()+60*60*24*30*12, "/", ".123y.dk");
Avatar billede klaaes Nybegynder
31. august 2005 - 15:53 #34
Jeg er sgu da også en bon!

Men det virker stadig ikke helt efter hensigten. Jeg oprettede et indlæg i en tråd og i tråd oversigten, skriver den ikke ny.

Du kan teste ved at oprette indlæg i denne tråd: http://www.123y.dk/falkobilleder/forum/laes.php?id=12

Når du så kigger på: http://www.123y.dk/falkobilleder/forum/index2.php
er der ikke noget "NY!".
Avatar billede jakobdo Ekspert
31. august 2005 - 15:57 #35
Prøv det med debug:
echo "Unix: " . $row['unix'] . "<br>";
og
echo "LastVisit: " . $lastVisit . "<br>";
Avatar billede klaaes Nybegynder
31. august 2005 - 15:59 #36
Unix:
LastVisit: 1125496725
Avatar billede jakobdo Ekspert
31. august 2005 - 16:01 #37
Jeg sover!
Det skal være:
echo "Unix: " . $row2['unix'] . "<br>";
og
echo "LastVisit: " . $lastVisit . "<br>";

og sæt det efter:
$query2 = mysql_query("SELECT UNIX_TIMESTAMP(date) AS unix FROM sladder WHERE parent=$row[id] OR id=$row[id] ORDER BY date LIMIT 1");
        $row2 = mysql_fetch_assoc($query2);
Avatar billede klaaes Nybegynder
31. august 2005 - 16:02 #38
Jeg er nu heller kendt for at være helt skarp i denne forbindelse.

Unix: 1124563077
LastVisit: 1125496734
Avatar billede jakobdo Ekspert
31. august 2005 - 16:07 #39
Det ser korrekt ud.
Men hvorfor skrives debug kun et sted?
Laver vi ikke testen på hver tråd?
Avatar billede klaaes Nybegynder
31. august 2005 - 18:42 #40
Okay, jeg var ikke helt med. Nu har jeg lavet den på dem alle.
http://www.123y.dk/falkobilleder/forum/index2.php
Avatar billede jakobdo Ekspert
31. august 2005 - 21:07 #41
Nogen ide til hvorfor $lastVisit er tom?
Sætter du ikke den i toppen?
Avatar billede jakobdo Ekspert
31. august 2005 - 21:08 #42
Prøv at lav:
show_source(__FILE__); i bunden af siden.
Så kan jeg se hvilken kode du bruger på pågældende side.
PT aner jeg ikke om du arbejder på alt hvad jeg har givet dig, halvdelen eller intet.
Avatar billede klaaes Nybegynder
31. august 2005 - 21:10 #43
Jeg gør skam mit bedste, mester jakel.

http://www.123y.dk/falkobilleder/forum/index2.php
Avatar billede jakobdo Ekspert
31. august 2005 - 21:15 #44
Prøv at ret denne del:
if ($row2['unix'] > $lastVisit)
{
  echo '<font color="red">NY!</font>';
}
echo '</td></tr>';

og fjern:
echo "Unix: " . $row2['unix'] . "<br>";
echo "LastVisit: " . $lastVisit . "<br>";

Det ser korrekt ud nu!
Avatar billede jakobdo Ekspert
31. august 2005 - 21:19 #45
Og nu jeg tænker over det.
Så er det med cookien en crap løsning.
Bruger kommer til siden første gang!
Cookie er ikke sat.
Alle tråde viser ny!
Så åbner han en tråd, læser den.
Går tilbage igen (nu henter den ny cookie)
og så kan man ikke se flere NY-tags.
Avatar billede jakobdo Ekspert
31. august 2005 - 21:49 #46
Den med cookien kunne vi evt løse med noget sessions.
Så vi kunne lave i toppen:

<?
session_start();
if(!isset($_SESSION['firstVisit']))
{
$_SESSION['lastVisit'] = $_COOKIE["TimeCookie"];
}
setcookie("TimeCookie", time(), time()+60*60*24*30*12, "/", ".123y.dk");

Så burde det sikre vi kun læser cookien en gang.

Husk så at ændre $lastVisit til $_SESSION['lastVisit']
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