Gå til innhold

Trenger "include" hjelp...


Anbefalte innlegg

Jeg holder på å eksperimentere med PHP script og lignende, jobber nå med et newsscript. Fusionnews heter det. Det som jeg vil gjøre nå, er å integrere det i sida mi, ved hjelp av php include. I tillegg skal jeg inkludere headeren, som inneholder logo og menyen. Det er et ganske enkelt opplegg egentlig, eller skal være iallefall. Logo på topp, horisontal meny rett under (begge disse ligger i header), og så kommer nyhetene på forsiden under der igjen. Jeg har prøvd meg litt fram med å plassere include koden (tables og lignenede), og fikk det endelig til å virke med denne:

 

<html>

<head>

<title>Test</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

 

<body>

<? include("header.html") ?>

<? include("/fusionnews/news.php") ?>

</body>

</html>

 

Nesten.

 

Problemet er at med når jeg åpner index sida (index.php), så kommer header og meny opp, og så må jeg scrolle ganske så langt ned før jeg finner newsscriptet. Hva er årsaken til dette? Må jeg bruke DIV'er og CSS til å angi en plassering for de enkelte elementene? Jeg vet ikke hvordan jeg skal gjøre dette, og det er derfor jeg startet denne tråden. Kan noen være så snille å hjelpe meg?

 

Takk.

Endret av g0mpen
Lenke til kommentar
Videoannonse
Annonse

Jeg tipper det er en formateringsfeil i en av filene du inkluderer. Hvordan ser det ut hvis du laster BARE news.php? Hvordan ser det ut hvis du inkluderer news.php uten å inkludere header.html? Disse to testene bør gi deg svar på hvor feilen ligger.

 

Antagelig er det en tabell-tag el. i header.html som ikke er som den skal.

Lenke til kommentar

<HTML>

<head>

<title>Apycom.com DHTML menu</title>

 

<!-- Apycom DHTML Menu -->

<noscript>Visit <a href=http://dhtml-menu.com/>Apycom DHTML Menu</a> for more info.</noscript>

<script type="text/javascript" language="JavaScript1.2" src="apymenu.js"></script>

<!-- © 2004, Apycom Software, www.apycom.com -->

 

</head>

<center>

<body bgcolor=#FFFFFF>

<script type="text/javascript" language="JavaScript1.2" src="meny.js"></script>

<noscript>Generated by Apycom <a href=http://dhtml-menu.com/>DHTML Menu Tuner</a>.</noscript>

 

<table border=0 width=100% height=2000>

<td></td>

</table>

</center>

</body>

</HTML>

 

Her har jeg fjernet logoen, den er mindre viktig... og ja, jeg har brukt en generator til å lage javascript menyen :roll:

 

Jeg testet nettopp å plassere headeren direkte inn i index.php filen, og da virket både meny, bilde, og nyhetene slik det skulle... men jeg skal jo helst ha headeren i en egen fil slik at den kan inkluderes i alle undersidene og...

 

Edit: Herregud hva gjør den tablen der? Tror jeg har funnet feilen :!:

 

Edit2: Der får man for å bruke gratisscript, jeg har ikke plassert en table der iallefall. Men men... hvordan kan jeg linke noe fra menyen uten at menyen må lastes på ny hver gang? Menyen ligger i header, innholdet ligger i index.php, så hvordan kan jeg linke mellom de? Hvis dere skjønner hva jeg mener... så slipper header å lastes på ny hver gang en trykker en link...

Endret av g0mpen
Lenke til kommentar

Svar kan være ganske enkle ja... :)

 

En annen ting du HELT klart bør gjøre er å rydde opp i HTML-strukturen din. Slik du inkluderer nå deklarer du i hytt og pine.

 

Et html-dokument skal struktureres cirka slik (grovt forklert):

 

<html>

<head>

allt innhold som skal i header

</head>

 

<body>

alt innhold som skal i body

</body>

</html>

 

Ditt dokument genereres nå ca. slik:

 

<html>

<head>

Headertaggene du har laget

</head>

<body>

 

<html>

<head>

headertagger laget av javascriptgeneratoren

</head>

<body>

menyen din, generert av js-generatoren

</body>

</html>

 

innholdet ditt

 

</body>

</html>

 

Ser du problemet? Når dette funker er det fordi nettleseren du bruker er "snill" og driter i regler...

Lenke til kommentar

Ja, ta iframes som eksempel. Du har header på topp, en meny, en iframe til innhold, og så kanskje en footer nederst. Da ville jeg kunne linke fra menyen øverst til iframen. Siden det blir linket til åpnes i iframen, og man slipper derfor å laste opp header og footer om og om igjen. Jeg vil gjøre omtrent det samme i php, hvis det er mulig. Kan jeg lage en link som inkluderer en annen side i index.php en den som allerede er inkludert, nemlig news.php?

 

Håper noen greier å forstå hva jeg skriver her, det ble litt rotete :roll:

Lenke til kommentar

Du må huske på at PHP er serverside, så du kan aldri bruke PHP til å gjøre ting som ikke skal gjøre på webserveren. Du kan alts ikke lage et system hvor du ikke trenger laste menyen KUN vha. PHP. Til det må du bruke frameset, javascript, iframe eller noe annen styggedom. Det er imidlertid ikke noen egentlig god grunn til å gjøre det slik, det beste er egentlig å la PHP generere en ren og fin side med både meny og innhold. (Med mindre du spesifikt VIL ha et frameset da...)

 

Den enkleste måten å gjøre dette på i ditt tilfelle er å bruke en switch og flere includes...

 

I menyen din lager du linker slik:

link1:(....vet ikke hva slags magiske ting du har her....) index.php?include=news

link2:(....vet ikke hva slags magiske ting du har her....) index.php?include=gallery

link1:(....vet ikke hva slags magiske ting du har her....) index.php?include=photos

 

altså, istedet for filnavnet til filen du vil vise skriver du index.php?'variabelnavn'='verdi'

 

 

Så lager du en egen fil kalt feks. content_switch.php:

 

 

<?php

 

//Denne linjen kan muligens måtte skrives litt ulik,

//avhengig av hvordan du har konfigurert PHP.

//Poenget er å hente ut en verdi fra en miljøvariabel som inneholder

//HTTP-POST-variablene.

//Les dokumentasjon og vbli klok ;)

 

$show=$_POST['include'];

 

switch($show){

 

case "news":

include("some_dir/news.php");

break;

 

case "gallery":

include("gallery.php");

break;

 

case "photos":

include("pictures_at_an_exibition.html");

break;

 

default:

include("forside.html");

}

 

 

?>

 

Nå kan du inkludere denne der du vil ha opp innholdet på siden din. Og nei, du trenger strengt tatt ikke ha denne i egen fil, du kan like godt skrive dette direkte inn i index.php. Switch fungerer slik at den leter nedover hvert case til den finner en verdi som matcher argumentet ($show). Deretter utføres alle linjer nedenfor til en kommer til break. Hvis ingen case matcher hopper den til default. Bemerk at det brukes : etter hvert case og IKKE ;, det er lett å ta feil...

 

Dette er quick&dirty måte å lage meny på, men den funker, er oversiktlig og igrunnen alt en trenger hvis en ikke skal lage noe digert.

 

Verstanden Sie, ja?

 

 

 

edit: glemte noe vesentlig, $_POST er et array. Fikset nå...

Endret av dostojevski
Lenke til kommentar

Takk, takk. La meg se om jeg har forstått dette riktig ;)

 

Først må jeg legge til skikkelige linker.

 

Er "magiske ting" URL'en eller path'en? Kan jeg legge til linker på den måten når headeren ikke er PHP men HTML? link1: url osv. (eller var "link1:" bare for å demonstrere? :ermm: )

 

Når jeg har ordnet det trenger jeg bare legge til content switch koden (med alle de forskjellige verdiene) i index.php, og så skal det funke?

 

Takk for gode svar, det er litt seint nå, skal prøve det i morgen.

 

Eh, seinere i dag :blush:

Lenke til kommentar

Det jeg mente: i løsningen slik du har den i dag har du lagt inn linker til ulike sider et eller annet sted i menyen din, sant? Disse linkene (url-ene) bytter du ut med "index.php?include=ettellerannet". Altså: Der i menyen hvor du har skrevet "minside.html" skriver du "index.php?include=minside" i stedet. Så ja: "link1" etc er bare for å demonstrere. :)

 

Og ja, når du har endret linkene fra menyen kan du bare legge switchblokka inn i index.php. (Du må selvsagt HA de ulike filene du includer i switchblokka...)

Lenke til kommentar

Hm virker ikke helt sånn det skal... siden laster default uansett hva jeg trykker på :dontgetit:

 

Må jeg linke til .html dokumenter?

 

Edit: Har funnet ut at jeg vil ha et litt mer avansert design, men hvordan skal det gå med menyen da? Finnes det en måte å linke mer direkte til en del av siden, og ikke hele på en måte? Jeg vet ikke hvordan dette skal gå, fikk ikke den andre til å virke heller...

Endret av g0mpen
Lenke til kommentar

index.php:

<html>

<head>

<title>Untitled Document</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

 

<body>

<? include ("header.html") ?>

<?php

$show=$_POST['include'];

 

switch($show){

 

case "news":

include("fusionnews/news.php");

break;

 

case "test1":

include("test.php");

break;

 

case "test2":

include("test2.php");

break;

 

default:

include("fusionnews/news.php");

}

 

 

?>

<? include ("footer.html") ?>

</body>

</html>

 

Menyen ligger i header.html, som er inkludert øverst. Lenkene er som du sa, index.php?include=sidenavn... for case "info" blir lenken da index.php?include=info

 

Her er info.php (ja den er relativt tom, det er fordi det er en testside):

 

<html>

<head>

<title>Untitled Document</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>

 

<body>

<p>Info:<br>

Blablabla</p>

</body>

</html>

 

Det er vel egentlig alt som trengs, men det virker ikke likevel... :no:

 

Edit: Dette er foresten den gamle jeg prøvde meg på, nå skal jeg prøve på noe mer avansert (designmessig altså), og jeg vet ikke hvordan det skal gå da. Jeg har inkludert en shoutbox i index.php, til venstre for selve innholdet, under header, og over footer. Hvordan kan jeg da linke fra header til index.php, uten at shoutboxen forsvinner? Hvis du skjønner hva jeg mener.

Endret av g0mpen
Lenke til kommentar

Takk, det virker nå :love:

 

Skal prøve å huske det med code, visste bare ikke at det var en slik funksjon...

Så hvordan kan jeg linke til et bestemt område på designet?

 

Ok, jeg gidder ikke å prøve å forklare engang :!:

 

Se her! Hvordan kan jeg linke til "hovedboksen", der det står "Site news:"?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...