Avatar billede nikksen Nybegynder
29. august 2005 - 19:41 Der er 12 kommentarer og
2 løsninger

Visning af flere emner end bare et?

Jeg prøver at få vist en hel liste med nyheder (bare overskriften og dato), men den vil kun vise den seneste nyhed i stedet for dem alle. Kan nogen, ud fra nedenstående, se hvad jeg gør galt?

$query = mysql_query("SELECT * FROM oak_news ORDER BY id");
while ($row = $db->fetch_array($query)) {
           
    if($row[type] == "klubnyt") {
      eval("\$newsklub = \"".template("site_body_nyheder_row")."\";");

    }elseif ($row[type] == "sitenyt") {
      eval("\$newssite = \"".template("site_body_nyheder_rowsite")."\";");
    }
}
eval("\$site_body = \"".template("site_body_nyheder")."\";");


NB! I mine templates kalder jeg selvfølgelig variabler vha. $row[navn] ect.

På forhånd tak!
Avatar billede nielle Nybegynder
29. august 2005 - 19:46 #1
Måske sådan her?

$newsklub = "";
$newssite = "";

$query = mysql_query("SELECT * FROM oak_news ORDER BY id");
while ($row = $db->fetch_array($query))
{
    if ($row["type"] == "klubnyt")
    {
        $newsklub .= template("site_body_nyheder_row");

    }
    elseif ($row["type"] == "sitenyt")
    {
        $newssite .= template("site_body_nyheder_rowsite");
    }
}
$site_body = template("site_body_nyheder");
Avatar billede nikksen Nybegynder
29. august 2005 - 19:50 #2
Nej, det blev ret mærkeligt og den kaldte slet ikke variablerne frem. Ved ikke om du havde regnet den ud allerede, men jeg har 2 nyhedslister. En liste med klubnyheder og en liste med website nyheder.

Den viser kun den seneste nyhed i hver liste.
Avatar billede nielle Nybegynder
29. august 2005 - 19:53 #3
Hvad skal sådan noget som:

template("site_body_nyheder_row");

- egentlig returnere? Så vidt jeg kan se må det blive det samme hver gang den kaldes.
Avatar billede nikksen Nybegynder
29. august 2005 - 19:59 #4
Den her:

<tr>
<td width=66 class=newscell align=right><font size=1>$row[dato]</td>
<td class=newscell><font size=1>&nbsp;&nbsp;$row[titel]</font></td>
</tr>

Det er templaten for den række nyheden ligger i. Den samles så i:

template("site_body_nyheder");

sammen med den anden template.
Avatar billede nielle Nybegynder
29. august 2005 - 20:06 #5
Ok, det var derfor at du brugte eval. :^)

$newsklub = "";
$newssite = "";

$query = mysql_query("SELECT * FROM oak_news ORDER BY id");
while ($row = $db->fetch_array($query))
{
    if ($row["type"] == "klubnyt")
    {
        $newsklub .= eval(template("site_body_nyheder_row"));

    }
    elseif ($row["type"] == "sitenyt")
    {
        $newssite .= eval(template("site_body_nyheder_rowsite"));
    }
}
$site_body = eval(template("site_body_nyheder"));
Avatar billede nikksen Nybegynder
29. august 2005 - 20:10 #6
hmm, for ikke andet end de her fejl:

Parse error: parse error, unexpected '<' in /customers/ourealpinklub.dk/ourealpinklub.dk/httpd.www/index.php(172) : eval()'d code on line 1

Parse error: parse error, unexpected '<' in /customers/ourealpinklub.dk/ourealpinklub.dk/httpd.www/index.php(177) : eval()'d code on line 1

Parse error: parse error, unexpected '<' in /customers/ourealpinklub.dk/ourealpinklub.dk/httpd.www/index.php(172) : eval()'d code on line 1

Parse error: parse error, unexpected '<' in /customers/ourealpinklub.dk/ourealpinklub.dk/httpd.www/index.php(177) : eval()'d code on line 1

Parse error: parse error, unexpected '<' in /customers/ourealpinklub.dk/ourealpinklub.dk/httpd.www/index.php(180) : eval()'d code on line 1


Det her den "hoved" template de bliver samlet i:

<table border="0" width="100%" cellspacing="5" cellpadding="0">
<tr>
<td width="100%" colspan="2" class="newscell">$velkommen</td>
</tr>
<tr>
<td width="100%" colspan="2">&nbsp; </td>
</tr>
<tr>
<td width="400" valign="top"><font size="1"><b>Seneste klubnyt</b></font>
<table border="0" width="95%" bgcolor="#C0C0C0" cellspacing="0">
<tr>
<td width="100%">
<table border="0" width="100%" cellspacing="3" cellpadding="0" bgcolor="#FBFBFB">
$newsklub
</table>
</td>
</tr>
</table>

</td>
<td width="300" valign="top"><font size="1"><b>Site nyheder</b></font>
<table border="0" width="100%" bgcolor="#C0C0C0" cellspacing="0">
<tr>
<td width="100%" valign="top">
<table border="0" width="100%" cellspacing="3" cellpadding="0" bgcolor="#FBFBFB">
$newssite
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
Avatar billede nielle Nybegynder
29. august 2005 - 20:15 #7
Så måske med "-tegn rundt om dem:

$newsklub = "";
$newssite = "";

$query = mysql_query("SELECT * FROM oak_news ORDER BY id");
while ($row = $db->fetch_array($query))
{
    if ($row["type"] == "klubnyt")
    {
        $newsklub .= eval("\"" . template("site_body_nyheder_row") . "\"");
    }
    elseif ($row["type"] == "sitenyt")
    {
        $newssite .= eval("\"" . template("site_body_nyheder_rowsite") . "\"");
    }
}
$site_body = eval("\"" . template("site_body_nyheder") . "\"");
Avatar billede nikksen Nybegynder
29. august 2005 - 20:18 #8
Den går amok med de samme fejl igen. :)
Avatar billede nielle Nybegynder
29. august 2005 - 20:24 #9
Ok, jeg er ikke så vandt til at arbejde med eval, så det er nok forklaringen. Måske er det eneste der skal til fælgende lille variation på din oprindelige kode:

$query = mysql_query("SELECT * FROM oak_news ORDER BY id");
while ($row = $db->fetch_array($query))
{
    if ($row[type] == "klubnyt")
    {
        eval("\$newsklub .= \"" . template("site_body_nyheder_row") . "\";");
    }
    elseif ($row[type] == "sitenyt")
    {
        eval("\$newssite .= \"" . template("site_body_nyheder_rowsite") . "\";");
    }
}
eval("\$site_body .= \"" . template("site_body_nyheder") . "\";");
Avatar billede nikksen Nybegynder
29. august 2005 - 20:30 #10
JA! Det virkede.. et sølle lille punktum. :P

Tak for hjælpen. 100 point på vej til dig!
Avatar billede nikksen Nybegynder
29. august 2005 - 20:31 #11
Værsgo!
Avatar billede nielle Nybegynder
29. august 2005 - 20:42 #12
Måske et lille punktum, men i hvert fald et meget vigtigt punktum! ;^)

Nu har du taget alle pointene selv... Jeg gætter på at det ikke var meningen, og at det bare var et uheld?

Hvis det var, så kan du bruge denne metode:

http://expfaq.1go.dk/?id=30#giv_flere_point
Avatar billede nikksen Nybegynder
29. august 2005 - 20:58 #13
Ups, er ny her.

Har oprettet en tråd så du kan få pointene.
Avatar billede nielle Nybegynder
29. august 2005 - 21:11 #14
Du er bestemt ikke den første. No hard feelings. :^)
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

Netcompany A/S

Network Engineer

Capgemini Danmark A/S

Head of Digital Trust & Security

Politiets Efterretningstjeneste

Data engineer til PET

Capgemini Danmark A/S

AI Data Architect