Avatar billede snapela Nybegynder
14. maj 2004 - 19:09 Der er 8 kommentarer og
1 løsning

skin til nyhederne

hej

Jeg skal bruge et stykke kode eller en beskrivelse af hvordan man kan lave et skin som alle nyhederne bliver pakket ind i, når outputtet vises.
Det skal helst ikke være noget i stil med:

while($row = mysql_fetch_array(mysql_query("SELECT * FROM `News`"))
{
  $content .= '<b>' . $row['title'] . '</b><br>' . $row['news'] . ';
}

men mere noget hvor skinnet er i en html fil i sig selv og bliver så hentet når nyhederne trækkes ud.
Avatar billede Slettet bruger
14. maj 2004 - 20:50 #1
Hvis du vil have en lille fil, som bare indeholder en HTML-stump, som skal udfyldes af hver nyhed, kan det sagtens lade sig gøre. Du kan eventuelt vælge at bruge et fuldt template-system (f.eks. http://smarty.php.net ), men det kan også gøres simplere.

Lav en lille fil med dit skin - vi kalder den skin.html:

<b>{title}</b><br>
{news}

Derefter kan du i dit script bruge den således:

$skin=file_get_contents("skin.html");

while($row = mysql_fetch_array(mysql_query("SELECT * FROM `News`"))
{
  $content=$skin;
  foreach($row as $felt => $feltindhold){
    $content=str_replace('{'.$felt.'}',$feltindhold,$content);
  }
  echo $content
}

Du kan naturligvis vælge at bruge andre tegn at pakke feltnavne ind i i dit skin.
Avatar billede Slettet bruger
14. maj 2004 - 20:53 #2
En rettelse:

Du bør så bruge mysql_fetch_assoc i stedet for mysql_fetch_array. Ellers bruger den dobbelt så lang tid som nødvendigt på arbejdet.
Avatar billede snapela Nybegynder
14. maj 2004 - 22:07 #3
jeg kan ikke rigtigt forstå sammenhængen mellem de to linie:
Foreach($row as $felt => $feltindhold) {
  $content = str_replace("{" . $felt . "}", $feltinhold, $content); //feltindhold, indeholder den variable så ALLE informationerne fra tabellen ?
}
Prøv at forklar mig det..
Avatar billede Slettet bruger
14. maj 2004 - 22:35 #4
foreach er en speciel løkke til at køre igennem et array og gøre noget på alle elementerne. Her er et lille eksempel:

$row['fornavn']="Ole";
$row['brugernavn']="sandbox";

foreach($row as $felt => $feltindhold){
  echo $felt;
  echo "\n"; //ny linie
  echo $feltindhold;
  echo "\n\n"; //Dobbelt linieskift.
}

Koden vil udskrive således:

fornavn
Ole

brugernavn
sandbox

Så $feltindhold indeholder altså værdien af feltet ved navn $felt fra den nuværende række i databasen. I din egen eksempelkode, svarer $feltindhold til $row['title'] og $row['news'].

Hjalp det?
Avatar billede snapela Nybegynder
14. maj 2004 - 23:05 #5
mere, end nok...
Avatar billede Slettet bruger
15. maj 2004 - 18:06 #6
Hvis du mener, vi er færdige, så skal du lige huske at lukke. (Husk, at du skal vælge mit navn på listen, selv om der ikke står andre.)
Avatar billede snapela Nybegynder
17. maj 2004 - 19:31 #7
hmm...
det virker ikke rigtigt:
http://www.snoob.dk/test/  //Den bliver bare ved og ved og ved, og så er det den samme ting der bliver vist
http://www.snoob.dk/test/index.phps //koden den er taget direkte fra det du har skrevet
Avatar billede Slettet bruger
17. maj 2004 - 20:02 #8
Du har lavet tre fejl:

1) Din server serverer ikke filer med .phps endelse som et pænt skrevet php-script. Brug .txt i stedet næste gang. (Eller få serveren til at vise filerne rigtigt.)

2) while($row = mysql_fetch_array(mysql_query("SELECT * FROM `nyheder`")))

Man må ikke bare flytte selve forespørgslen ind i while-løkken, for så starter den en ny forespørgsel hver gang den kører løkken igennem. Denne fejl burde jeg naturligvis have fanget i første omgang.

3) Jeg skrev, at du skulle bruge mysql_fetch_assoc i stedet for mysql_fetch_array

Så ret koden til

$result=mysql_query("SELECT * FROM `nyheder`")

while($row = mysql_fetch_assoc($result))

Og så burde det virke.
Avatar billede snapela Nybegynder
17. maj 2004 - 20:36 #9
så nu virker det, thx :D
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