Avatar billede klaaes Nybegynder
22. august 2005 - 18:38 Der er 17 kommentarer og
1 løsning

Forum-indlæg på listeform

Så drenge og piger, nu kommer der en opgave.

Jeg har et forum der fungerer skidegodt. Her er koden for at vise en tråd:

<?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>';
}
?>

Men nu vil jeg give folk mulighed for at få alle indlæggene på en liste, sorteret efter dato. Altså ligesom en gæstebog.
Er der nogen der kan ændre koden således?
Avatar billede Slettet bruger
22. august 2005 - 18:47 #1
Den henter da allerede alle indlæg til tråden ?
Avatar billede klaaes Nybegynder
22. august 2005 - 18:49 #2
Ja, undskyld.. jeg fik ikke formuleret mig ordentligt.. Jeg mente, alle indlæg i alle tråde.
Avatar billede Slettet bruger
22. august 2005 - 18:54 #3
så skal du bare gøre noget ala:

<?php

include('config.php')

$query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder ORDER BY parent 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>';
}
?>
Avatar billede klaaes Nybegynder
22. august 2005 - 18:58 #4
Jeg får følgende fejl:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /customers/123y.dk/123y.dk/httpd.www/falkobilleder/forum/liste.php on line 22

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /customers/123y.dk/123y.dk/httpd.www/falkobilleder/forum/liste.php on line 29

Helst ikke for meget ala! . Jeg skal have det skåret ud i pap.
Avatar billede Slettet bruger
22. august 2005 - 19:04 #5
ah :)

prøv at rette linjen:

$query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder ORDER BY parent ASC");

til:

$query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder WHERE id != '' ORDER BY parent ASC") or die(mysql_error());
Avatar billede Slettet bruger
22. august 2005 - 19:06 #6
nej det skulle da ikke være nødvendigt.
Men forsøg lige alligevel :)
Nu får vi i hvert fald en bedre fejlbeskrivelse.
Avatar billede klaaes Nybegynder
22. august 2005 - 19:08 #7
Jeg får desværre de samme to fejl.. men er det bare mig eller er $row ikke blevet defineret endnu?
Avatar billede Slettet bruger
22. august 2005 - 19:14 #8
Hmm... underligt nok.
Jeg skal lige have fat i noget, skal den kun tage indlæg fra alle tråde, eller skal selve trådene også vises?
Avatar billede Slettet bruger
22. august 2005 - 19:16 #9
$row bliver jo defineret ved løkken :)
Det er selve sql udtrækket der driller lidt.

Men jeg mener bare date ikke er et gyldigt feltnavn da det er reserveret. Men din kode virker jo fint når du blot får vist en tråd samt indlæg ?
Avatar billede klaaes Nybegynder
22. august 2005 - 19:17 #10
Den behøver ikke adskille trådene specielt.. alle indlæg må gerne komme ud i én køre, men hvis det er muligt at lave et lille indhak når der starter en ny tråd ville det da være fint. - Det vigtigste er at alt hvad der overhovedet er skrevet i forumet kommer på én side i rigtig rækkefølge
Avatar billede klaaes Nybegynder
22. august 2005 - 19:19 #11
Ja, den første kode jeg har skrevet i denne tråd virkede uden problemer.
Avatar billede Slettet bruger
22. august 2005 - 20:24 #12
Hmm.. dette er en lidt slam måde at gøre det på.
Men vi kan altid gøre det pænere. Jeg forstår bare ikke fejlen du får.

Men prøv engang med følgende.
Husk stadig at inkludere config.php som jeg går ud fra indeholder adgangs information til databasen ?

<?php
include('config.php');

$query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder WHERE parent=0");
while($row = mysql_fetch_array($query)) {
   
    $inline = $i * 5;
   
    echo "<div style=\"padding-left: $inline\"> \n";
   
    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>';

    $q = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder WHERE parent='$row[id]' ORDER BY id ASC");
    while ($res = mysql_fetch_array($q)) {
        echo empty($res['email']) ? $res['name'] : "<a href='mailto:$res[email]'>$res[name]</a>";
        echo "&nbsp;($res[date])<br><br>";
        echo nl2br($res['message']).'<hr>';
    }
   
    echo "</div>";
   
    $i++;
}
?>
Avatar billede klaaes Nybegynder
23. august 2005 - 00:50 #13
Nu begynder det virkelig at ligne noget.. Men den har stadig problemer med at sortere, og så bliver den ved med at rykke indlæggene og trådene længere og længere ind. Den skal bare rykke indlæggene ind og så rykke ud når der starter en ny tråd.. men det sidste er ikke så vigtigt.

Her er det:
http://www.123y.dk/falkobilleder/forum/liste.php

Du kan se på datoerne at den ikke sorterer rigtigt.
Avatar billede Slettet bruger
23. august 2005 - 17:59 #14
Ah ja, forstod heller ikke lige hvorfor den skulle rykke alle tråde længere og længere ind. Prøv med nedenstående, det skulle gerne liste en tråd med des indlæg indrykket, samt være sorteret efter dato (nyeste tråde øverst).

<?php
include('config.php');

$query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder WHERE parent=0 ORDER BY date DESC");
while($row = mysql_fetch_array($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>';

    $q = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder WHERE parent='$row[id]' ORDER BY id ASC");
    while ($res = mysql_fetch_array($q)) {
        $inline = $i * 5;
        echo "<div style=\"padding-left: $inline\"> \n";     
        echo empty($res['email']) ? $res['name'] : "<a href='mailto:$res[email]'>$res[name]</a>";
        echo "&nbsp;($res[date])<br><br>";
        echo nl2br($res['message']).'<hr>';
        echo "</div>";
       
        $i++;
    }
   
    $i = 0; 
}
?>
Avatar billede klaaes Nybegynder
23. august 2005 - 18:06 #15
Den er altså helt syg.. Det med indrykningen virker, men den sorterer stadig forkert.
Avatar billede Slettet bruger
23. august 2005 - 18:17 #16
hmm... ah måske fordi du ændre feltet til et andet resultat :)

Prøv at erstatte linjen:

$query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%y %T') AS date FROM sladder WHERE parent=0 ORDER BY date DESC");

med:

$query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%y %T') AS dato FROM sladder WHERE parent=0 ORDER BY date DESC");
Avatar billede klaaes Nybegynder
23. august 2005 - 19:07 #17
Skide godt. Tak for hjælpen. Det lykkedes langt om længe.
Avatar billede Slettet bruger
23. august 2005 - 19:23 #18
så lidt :)
og tak for points!
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