if($side == "forside") { include("forside.php"); } elseif($side == "side2") { include("side2.php"); } elseif($side == "side3") { include("side3.php"); } else { echo "Der blev angivet et sidenummer der ikke eksisterer"; }
?>
Men så opstår der et problem når man vil bruge headers i den inkluderede fil. Så kort og godt, hvordan kan jeg smartest strukturere min kode, eller bruge ovenstående metode, og undgå header() problemet?
da alt så noget som session-styrring osv, bør foregå, lige meget, hvilken siden man er på, så burde man inkludere en fil som sørger for session_start osv. øverst i filen - og så lade vær med at bruge/inkludere det nede i de forskellige inkluderede filer ...
Men "skabelon" varierer alt efter, hvad jeg skal lave . men overordnet ser den således ud
HTML: 2 blanktegn pr indrykning og indrykning for hvert nestet niveau. Såvidt mulige een html-kommando på hver linie. Dog gerne med flere indlejrede indeni hvis det kan gøres overskueligt. <td><img src='bilde.gif'></td> På steder hvor der ikke må være blanktegn imellem (fx 3 billeder efter hinanden der skal 'løbe sammen' flyttes den afsluttende '>' eller '/>' ned foran næste kommando <td><img src='bilde.gif' /><img src='bilde2.gif' /><img src='bilde3.gif' /></td> Inline formattering skriver jeg blot <b>inline</b>
PHP: formatteres som helt separat script uafhængigt ag HTML indlejringen der hvor koden står. igen 2 blanktegn pr niveau. Jeg prøver at følge den foreslåede formattering for java, dvs '{' bagerst i startlinien, '}' på yderniveau og alt indhold indrykket indimellem. Som hovedregel skriver jeg altid { og } også npr niveauet kun indeholder een php sætning: if ( betingelse ) { goer_dit(); } else { goer_dat(); }
de filer, som du inkludere skal du ikke tænke på som fulde HTML filer - derimod skal du tænke på dem som brudstykker, som hver har deres "emne"...
dvs. at du ikke skal bekymre dig om headers (hverken PHP-specifikke header-kommandoer, eller for den sags skyld <head>...</head>-indhold) i disse filer - de skal bare outputte en specifik sektion af dit website...
if(!isset($id)) { echo "du skal vælge et indlæg på <a href='index2.php?side=forside>forsiden</a>"; } else { mysql_query("delete from nyheder where id='$id'") or die(mysql_error()); header("location:index2.php"); }
?>
Skal jeg jo netop bruge headers i det inkluderede script. Eller er det noget andet du mener?
Hvis du VIL bruge en header midt i din HTML, så brug Javascript til at sende en bruger videre, eller evt. noget med ob_start() i starten af det script som includer andre filer.
engaai >> undskyld jeg ikke lige svarede tilbage -- men har haft travlt med ikke-computer ting...
som sukos forslår, så kan du bruge ob_start , dvs. at bruge output buffering...
du kunne også overveje, om din arkitektur skulle ændres - jeg foretager f.eks. alt database-aktivitet i dedikerede php-filer, som ikke har noget output...
jeg kan lige give et eksempel senere... har først tid omkring kl. 22 til at skrue et eksempel sammen...
sukos >> Jeg skal da ikke starte ob_flush, hvis jeg vil bruge det javascript du skrev? Jeg vil meget gerne undgå at bruge ob_flush, eftersom det laver såkaldt overkill ( spørg mig ikke om hvad det er men det lyder dårligt :-) ) Er der nogen 'bivirkninger' ved det javascript du skrev?
berhugx >> Det er selvfølgelig i orden. Blev bare lidt naiv, eftersom jeg sad fuldstændig fast i mit script :-)
Hvad der er værd at bemærke i filen do.opetTelefonNr.php er- at jeg ikke på noget tidspunkt outputter noget.... Når du laver modifikationer til databasen (dvs. al anden database-aktivitet, end læsning/opslag), så behøver du i princippet ikke at outputte noget som helst.
Først når jeg har brug for at "melde tilbage til brugeren", forwarder jeg til de passende sider (i dette tilfælde enten en side, som forklarer at det ikke kunne oprettes, eller at oprettelsen var gennemført...)
Så i dit tilfælde, skulle jeg lave to sider af ovenstående kode; En hvor formularen var på, og en til den side, som skal bearbejde formlen ( i tilfælde af at der skulle outputtes noget, så skulle det jo gerne have samme opbygning som resten af scriptet, altså med en linkmenu til venstre osv. ) Og i længden bliver det utroligt mange af ovenstående kode jeg skal lave, eftersom jeg skal bruge en for hvert php script jeg har, altså det dobbelte antal sider. Derfor er den metode, jeg skrev i indlæg #1 meget smart for mig. Er der ingen ulemper ved at bruge ob_flush?
Synes godt om
Ny brugerNybegynder
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.