Avatar billede yardbird Nybegynder
08. april 2005 - 15:23 Der er 11 kommentarer

udtræk fra db som skal vise nyeste id, men linke til parent id

Jeg har et forum og på min forside vil jeg så vise et uddrag af det nyeste indlæg hvergang og det er lykkedes. Det næste skridt var så at få den til at linke til det nyeste indlæg - det lykkedes også næsten da, for problemet er at den jo linker til det nyeste indlæg, hvilket ikke nødvendigvis er en tråd men også kan være en kommentar til en tråd. Og man kan i forummet kun linke til en tråd.
- det kan ordnes ved at skrive "FROM forum WHERE parent=0 ORDER BY id" fremfor det som står i nedenstående kode, problemet er bare så viser den ikke det nyeste indlæg... Og da mine evner ikke er de helt store må jeg desværre også melde pas her.

Eer der nogen som kan knække nødden for mig?

På forhånd tak

Nikolaj

min kode er:
<?php
    include('config.php');
    $query = mysql_query("SELECT id,header,name,message,DATE_FORMAT(date,'%d-%m/%H:%i') AS date FROM forum WHERE parent=0 ORDER BY id DESC LIMIT 1") or die(mysql_error());
    if (mysql_num_rows($query) == 0) {
        echo 'Der er ingen tråde i forummet!<br>';
    } else {
        while($row = mysql_fetch_assoc($query)) {
            echo '<font color="#000000"><a href="laes.php?id='.$row['id'].'">Skrevet af:'.$row['name'].'<br>'.cut($row['message']).'<br>'.$row['date'].'</a></font><span style="text-decoration: none">';
        }
    }
?>

<?php
    function cut($str,$size=99){
        if(strlen($str) > $size){
            $str = substr($str, 0, $size)."...";
        }
        return $str;
    }
?>
Avatar billede bromer Nybegynder
08. april 2005 - 15:27 #1
Hvad mener du? Der står da "WHERE parent=0" i din kode. Borset fra det er din cut() funktion unødvendig. Du kan erstatte den med det kald til substr som du alligevel laver.
Avatar billede yardbird Nybegynder
08. april 2005 - 19:43 #2
Jeg prøver lige igen, det er lidt svært at forklare. Men jeg har på min hjemmeside ét forum. Og på min forside vil jeg gerne vise det nyeste indlæg. Og når man så trykker på dette idnlæg skal den åbne forummet. Men den kan ikke åbne indlægget hvis det er en kommentar til en tråd. Isåfald skal den åbne den tråd som den er kommentar til (WHERE parent=0), men når jeg i min kode skriver viser den ikke det nyeste indlæg hvis det er en kommentar den visr kun den nyest oprettede tråd.

Håber det gjorde det lidt mere forståeligt?
Avatar billede yardbird Nybegynder
08. april 2005 - 19:46 #3
ja tastefejlene gør det ikke nemmere...

Jeg prøver lige igen, det er lidt svært at forklare. Men jeg har på min hjemmeside ét forum. Og på min forside vil jeg gerne vise det nyeste indlæg. Og når man så trykker på dette idnlæg skal den åbne forummet.
Men den kan ikke åbne indlægget hvis det er en kommentar til en tråd. Isåfald skal den åbne den tråd som den er kommentar til ( altså WHERE parent=0), men når jeg i min kode skriver WHERE parent=0, viser den ikke det nyeste indlæg hvis det er en kommentar den viser kun den nyest oprettede tråd. Så jeg skal på en eller anden måde have den til ved ".cut($row['message'])." at vise det nyeste indlæg altså uden "WHERE parent=0" men den skal så linke til den tråd som den hører til "WHERE parent=0".

Var det bedre?

Håber det gjorde det lidt mere forståeligt?
Avatar billede bromer Nybegynder
09. april 2005 - 05:56 #4
Med forbehold for at jeg tager grueligt fejl fordi jeg er fuld (barklund tager det fulde  ansvar (badabing)) så burde følgende kode måske hjælpe dig:

<?php
    include('config.php');
    $query = mysql_query("SELECT parent FROM forum WHERE ORDER BY id DESC LIMIT 1") or die(mysql_error());
    if (mysql_num_rows($query) == 0) {
        echo 'Der er ingen tråde i forummet!<br>';
    } else {
        $thread = mysql_result($query,0);
        $t_query = mysql_query("SELECT header,name,message,DATE_FORMAT(date,'%d-%m/%H:%i') AS date FROM forum WHERE id= " . $thread . ");
          $row = mysql_fetch_row($t_query);
          echo '<font color="#000000"><a href="laes.php?id='.$row['id'].'">Skrevet af:'.$row['name'].'<br>'.cut($row['message']).'<br>'.$row['date'].'</a></font><span style="text-decoration: none">';
    }
?>
Avatar billede yardbird Nybegynder
09. april 2005 - 17:10 #5
hehe

Det virker ikke den melder følgende fejl:

Parse error: parse error, unexpected '}' in /customers/yardbirds.dk/yardbirds.dk/httpd.www/index2.php on line 1411
(*)se nedenfor


?>
<?php
    include('config.php');
    $query = mysql_query("SELECT parent FROM forum WHERE ORDER BY id DESC LIMIT 1") or die(mysql_error());
    if (mysql_num_rows($query) == 0) {
        echo 'Der er ingen tråde i forummet!<br>';
    } else {
        $thread = mysql_result($query,0);
        $t_query = mysql_query("SELECT header,name,message,DATE_FORMAT(date,'%d-%m/%H:%i') AS date FROM forum WHERE id= " . $thread . ");
          $row = mysql_fetch_row($t_query);
          echo '<font color="#000000"><a href="laes.php?id='.$row['id'].'">Skrevet af:'.$row['name'].'<br>'.cut($row['message']).'<br>'.$row['date'].'</a></font><span style="text-decoration: none">';
(*)  }
?>
Avatar billede bromer Nybegynder
09. april 2005 - 17:17 #6
$t_query = mysql_query("SELECT header,name,message,DATE_FORMAT(date,'%d-%m/%H:%i') AS date FROM forum WHERE id= " . $thread . ");

skal være

$t_query = mysql_query("SELECT header,name,message,DATE_FORMAT(date,'%d-%m/%H:%i') AS date FROM forum WHERE id= " . $thread);
Avatar billede yardbird Nybegynder
09. april 2005 - 17:23 #7
hej nu melder den fejl men siden loades du kan se det her:

http://www.yardbirds.dk/index2.php
Avatar billede bromer Nybegynder
09. april 2005 - 17:32 #8
SELECT parent FROM forum WHERE ORDER BY id DESC LIMIT 1

skal være

SELECT parent,id FROM forum WHERE ORDER BY id DESC LIMIT 1
Avatar billede yardbird Nybegynder
09. april 2005 - 19:03 #9
Nu ser koden altså således ud:

<?php
    include('config.php');
    $query = mysql_query("SELECT parent,id FROM forum WHERE ORDER BY id DESC LIMIT 1") or die(mysql_error());
    if (mysql_num_rows($query) == 0) {
        echo 'Der er ingen tråde i forummet!<br>';
    } else {
        $thread = mysql_result($query,0);
        $t_query = mysql_query("SELECT header,name,message,DATE_FORMAT(date,'%d-%m/%H:%i') AS date FROM forum WHERE id= " . $thread);
          $row = mysql_fetch_row($t_query);
          echo '<font color="#000000"><a href="laes.php?id='.$row['id'].'">Skrevet af:'.$row['name'].'<br>'.cut($row['message']).'<br>'.$row['date'].'</a></font><span style="text-decoration: none">';
    }
?>

Den kan loades, men har stadig fejl: http://www.yardbirds.dk/index2.php
Avatar billede bromer Nybegynder
09. april 2005 - 19:09 #10
Jeg beklager altså meget at jeg sover i timen. Fejlen skyldes at WHERE betingelsen er tom. Det vil sige at du skal lave din query om til:

"SELECT parent,id FROM forum ORDER BY id DESC LIMIT 1"
Avatar billede yardbird Nybegynder
11. april 2005 - 16:49 #11
Hej,

Nu har jeg prøvet at rette det su sagde så koden lyder:
<?php
    function cut($str,$size=99){
        if(strlen($str) > $size){
            $str = substr($str, 0, $size)."...";
        }
        return $str;
    }
?>

<?php
    include('config.php');
    $query = mysql_query("SELECT parent,id FROM forum ORDER BY id DESC LIMIT 1") or die(mysql_error());
    if (mysql_num_rows($query) == 0) {
        echo 'Der er ingen tråde i forummet!<br>';
    } else {
        $thread = mysql_result($query,0);
        $t_query = mysql_query("SELECT header,name,message,DATE_FORMAT(date,'%d-%m/%H:%i') AS date FROM forum WHERE id= " . $thread);
          $row = mysql_fetch_row($t_query);
          echo '<font color="#000000"><a href="laes.php?id='.$row['id'].'">Skrevet af:'.$row['name'].'<br>'.cut($row['message']).'<br>'.$row['date'].'</a></font><span style="text-decoration: none">';
    }
?>

Men http://www.yardbirds.dk/index2.php bliver ganske nok loadet, men den viser ikke "message" og "date" og linker til noget forkert (prøv at trykke på det)
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