g0mpen Skrevet 24. juli 2004 Del Skrevet 24. juli 2004 (endret) 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 24. juli 2004 av g0mpen Lenke til kommentar
dostojevski Skrevet 24. juli 2004 Del Skrevet 24. juli 2004 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
g0mpen Skrevet 24. juli 2004 Forfatter Del Skrevet 24. juli 2004 Det fungerer å åpne bare news.php, og det fungerer og å bare inkludere news.php Feilen er altså i header, men hvordan finner jeg ut hva som er feil? Lenke til kommentar
dostojevski Skrevet 24. juli 2004 Del Skrevet 24. juli 2004 Post koden her, så kan vi ta en titt. Lenke til kommentar
g0mpen Skrevet 24. juli 2004 Forfatter Del Skrevet 24. juli 2004 (endret) <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 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 24. juli 2004 av g0mpen Lenke til kommentar
dostojevski Skrevet 24. juli 2004 Del Skrevet 24. juli 2004 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
dostojevski Skrevet 24. juli 2004 Del Skrevet 24. juli 2004 Er ikke HELT sikker på om jeg skjønte hva du mente... Vil du at headeren alltid skal vises øverst på siden, med innholde nedenfor? Lenke til kommentar
g0mpen Skrevet 24. juli 2004 Forfatter Del Skrevet 24. juli 2004 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 Lenke til kommentar
dostojevski Skrevet 24. juli 2004 Del Skrevet 24. juli 2004 (endret) 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 24. juli 2004 av dostojevski Lenke til kommentar
g0mpen Skrevet 25. juli 2004 Forfatter Del Skrevet 25. juli 2004 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? ) 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 Lenke til kommentar
dostojevski Skrevet 25. juli 2004 Del Skrevet 25. juli 2004 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
g0mpen Skrevet 25. juli 2004 Forfatter Del Skrevet 25. juli 2004 Takk for kjempegod hjelp! Skal prøve det nå Lenke til kommentar
g0mpen Skrevet 1. august 2004 Forfatter Del Skrevet 1. august 2004 (endret) Hm virker ikke helt sånn det skal... siden laster default uansett hva jeg trykker på 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 4. august 2004 av g0mpen Lenke til kommentar
dostojevski Skrevet 4. august 2004 Del Skrevet 4. august 2004 Post koden din og navnet på de filene du prøver å include. Nei, det må ikke være html-filer, alle tekstfiler vil bli spyttet ut i nettleserene, men hvis det ikke er html får du ikke noen formatering. Lenke til kommentar
g0mpen Skrevet 4. august 2004 Forfatter Del Skrevet 4. august 2004 (endret) 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... 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 4. august 2004 av g0mpen Lenke til kommentar
LoS Skrevet 4. august 2004 Del Skrevet 4. august 2004 1. bytt ut $show=$_POST['include']; med $show=$_GET['include']; 2. vær så snill å bruk code-taggen, blir mye enklere å skille mellom tekst og kode. Lenke til kommentar
g0mpen Skrevet 4. august 2004 Forfatter Del Skrevet 4. august 2004 Takk, det virker nå 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
theHollow Skrevet 5. august 2004 Del Skrevet 5. august 2004 En ting til... Ikke så sinnsykt viktig, men en include-fil bør strengt tatt ikke inneholde BODY, HEAD og HTML-tag'ene. Jeg har også benyttet include_once("min_fil.php"); i stedet for bare include("min_fil.php") Lenke til kommentar
g0mpen Skrevet 6. august 2004 Forfatter Del Skrevet 6. august 2004 Se her! Hvordan kan jeg linke til "hovedboksen", der det står "Site news:"? Lenke til kommentar
dostojevski Skrevet 6. august 2004 Del Skrevet 6. august 2004 Når du sier "linke til hovedboksen", mener du da at det er det området du vil at innholdet (altså home, info,artwork og contact)skal vises i? Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå