Sie sind nicht angemeldet.

  • Anmelden

Lieber Besucher, herzlich willkommen bei: MastersForum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

SenF_Woerni

Erleuchteter

  • »SenF_Woerni« ist der Autor dieses Themas

Beiträge: 4 097

Wohnort: Hersbruck Deutschland

Beruf: GER

  • Nachricht senden

1

30.12.2008, 13:51

HTML und PHP Hilfe

Ist es üblicher ein PHP in ein HTML zu includen oder anders rum?

Beispiel:

Ich habe eine Startdatei in der ich das Grundgerüst habe, in meinem Fall die Tabellen (was anderes kann ich noch nicht^^). Um den ganzen Terz nicht immer wieder zu kopieren will ich den Inhalt, sofern er sich nicht ändert, auslagern und wieder includieren (ihr wisst eh auf was ich hinaus will).

Wie sollte das im Groben aussehen? Die Index als HTML, die Navigation als PHP mit HTML Inhalt oder wie schaut sowas aus?

Habt ihr vielleicht ein leicht verständliches Beispiel?

Wenn noch Zeit ist, habt ihr evtl. nen Vorschlag wie ich ohne Tabellen arbeiten kann, vielleicht ein Beispiel dazu?

Danke schon mal. :)

2

30.12.2008, 14:23

also prinzipiell kannst du PHP nicht in HTML einbinden, das geht nur umgekehrt.
(liegt übrigens daran das PHP ya schon vom Server ausgeführt wird bevor die HTML seite vom Benutzerbrowser gelesen wird)
Das wäre höchstens über Sachen wie AJAX möglich, aber das klingt etwas zu overkill für deinen Verwendungszweck.

und wenn du statische Daten hast, die sich also nicht verändern, versteh ich auch nich was du mit PHP willst.

Gehts darum verschiedene Inhalte mit dem gleichen HTML Grund gerüst darzustellen?
Wenn ya und das alles nen größeres Projekt werden soll, könntest dir überlegen ne Template Engine für PHP zu nutzen.

Wenns eher nen kleines Projekt ist / evtl auch nur zum Testen / lernen wäre es vielleicht sinnvoll dein HTML Grundgerüst via PHP in eine Funktion zu stecken, die die entsprechenden Variablen entgegen nimmt und in das HTML Grundgerüst einsetzt.

also sowas wie

Quellcode

1
2
3
4
function KetchupRoxx($meineVariablen){
$str = "<table> <tr> <td>".$meineVariablen["inhalt1"]."</td></tr></table>";
return $str;
}

SenF_Woerni

Erleuchteter

  • »SenF_Woerni« ist der Autor dieses Themas

Beiträge: 4 097

Wohnort: Hersbruck Deutschland

Beruf: GER

  • Nachricht senden

3

30.12.2008, 14:56

Naja, ich will eine ganz einfache HP mit 5-6 Seiten machen (vorerst) in der viele Sachen wie Navi und Bilder auf jeder Seite gleich bleiben. Vielleicht ist PHP include das Falsche aber das ist die einzige Art die ich bis jetzt gefunden habe.

Ein bissl PHP lernen schadet ja auch nicht. ;)

nC_eru

Erleuchteter

Beiträge: 5 381

Wohnort: Bremen

Beruf: Physiker

  • Nachricht senden

4

30.12.2008, 15:02

Wenn ich das richtig sehe, hast du ein (tabellen) Layout gemacht und willst jetzt Seiteninhalten dynamisch einfügen?
Im Prinzip die einfachste Form eines CMS, du hast ein HTML Layout in einer PHP Datei, diese ruft je nach dem welche Seite (per GET Methode) gefragt ist mit include() auf.

Ich würde das so lösen:
Eine index.php , in welcher das HTML Layout und das Aufrufverfahren liegt.
Ein Ordner Namens templates , in welchen die aufzurufenden Dateien liegen.

In der index.php dann als erstes einige Sicherheitsabfragen, damit man sich nicht außerhalb des templates Ordner bewegen kann und keine nicht existenten Dateien versucht aufzurufen:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
    $page "";
    if($_GET["page"] == "")    // Wenn keine Seite gefragt ist, wird die standard Seite (main) geladen
    {
        header("location: ?page=main");
    }
    elseif(strpos($_GET["page"], ".") !== false)    // Wenn der Seitenaufruf einen . enthält, die standard Seite aufrufen (. kann einen Ordnerwechsel bewirken)
    {
        header("location: ?page=main");
    }
    elseif(file_exists("./templates/"$_GET["page"] .".tpl.php"))    // Wenn die gefragte Seite exestiert, aufrufen :)
    {
        $page $_GET["page"];
    }
    else    // Wenn nicht, die standard Seite aufrufen
    {
        header("location: ?page=main");
    }
?>

Besser wäre es noch, wenn du für ein Fehlaufruf eigene Seiten machst, sonst wundert der Benutzter sich noch, warum er auf einmal ganz wo anders ist, wo ein sein wollte :D. Dies ist unnötig wenn du dir 100% sicher bist, dass alle Seiten exestieren.

Als nächstes suchst du dir dann den Ort, wo die verschiedenen Inhalte stehen sollen und fügst dort folgenes ein:

PHP-Quelltext

1
2
3
<?php
    include("./templates/"$_GET["page"] .".tpl.php");
?>

Bewirkt einfach, dass die Seite geladen wird.

Damit dieses Aufrufverfahren funktioniert, müssen natürlich auch die Links entsprechend aussehen. Dazu solltest du jeder Seite einen Namen geben (die standard Seite hat bei meinem Beispiel den Namen "main"). Beispielweise würde ein Link dann so aussehen:

Quellcode

1
<a href="?page=main">Startseite</a>

Ein Klick auf diesen Link würde im Browser dann "http://blub/index.php?page=main" sein und das System würde "main" aufrufen.
Anderes Beispiel (mehr Beispiele hilft gegen Missverständnisse :) ):

Quellcode

1
<a href="?page=impressum">Impressum</a>


Als letztes musst du dann nurnoch die Inhalte erstellen, und zwar im Ordner templates nach folgenen Prinzip: seiten_name.tpl.php
"tpl" steht eigentlich für Template, ich habe es hier gewählt, damit der unterschied zu einer normalen Seite klar ist. Die Endung php habe ich genommen, weil man den Inhalt der Seite bei direkten Zugriff der Seite verstecken kann. Dies bedarf dann nur folgenen Code am Anfang jeder von den Inhalts-Dateien:

PHP-Quelltext

1
<?php if($page == "") { die(); }?>

Heißt, der Aufruf wird abgebrochen, wenn die in index.php deklaierte Variabel $page leer ist.
Nach dieser Zeile kannst du dann den eigentlichen Inhalt einfügen, welcher dann an der Stelle in index.php eingefügt wird. Folglich kannst du dann den Kopf und das Ende des Layout weglassen.
Wenn du unsicher bist, wie du das genau machen musst, schreib einfach irgendwas rein und gucke nach, wie's aussieht (das hilft oft) :D.
Beispiel Seite (standard Seite) wäre: /templates/main.tpl.php

Edit: Oh je, bin ich langsam >_> .

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »nC_eru« (30.12.2008, 15:04)


5

30.12.2008, 15:22

hmm, schau dir mal Framesets in HTML an, könnte sein das die sogar schon reichen ;)

da kannste z.B. einstellen das links ständig die HTML Datei der Navigation eingebunden is, oben ne HTML Datei mit dem Logo, und dann rechts der inhalt / die verschiedenen Inhalts Seiten.

Attila

Erleuchteter

Beiträge: 7 575

Wohnort: Hamburg

Beruf: GER

  • Nachricht senden

6

30.12.2008, 17:48

bah framesets... ich hatte gehofft das sowas langsam endlich mal ausstirbt ;)

wozu gibts denn leicht zu lernende html und css kombinationen ?
bei einer page mit 5-6 seiten würd ich einfach nen kleines menü basteln, mit css etwas animieren und dann per copy and paste auf die einzelnen html seiten packen.

hab beides bisher beim basteln ausprobiert, und bei kleinen pages find ich die html/css lösung besser als extra über php zu gehen - außerdem hab ich mit chrome/firefox etc. auch das gefühl das die html/css lösung schneller ist - die php lösung lädt irgendwie manchmal etwas als wenn man nen 300er ping hätte oder so... mag aber auch daran liegen das ich auf arbeit in ner VM Ware nen xampp laufen hatte und das ganze insgesamt langsamer ist als über inet mit webspace.

SenF_Woerni

Erleuchteter

  • »SenF_Woerni« ist der Autor dieses Themas

Beiträge: 4 097

Wohnort: Hersbruck Deutschland

Beruf: GER

  • Nachricht senden

7

30.12.2008, 18:13

Da hast du natürlich Recht was die Einfachheit betrifft. Aber ich glaube, dass die Variante von Eru eleganter ist und am Ende weniger Quellcode beinhaltet.

Was die Frames betrifft geb ich dir auch Recht, sie sind total veraltet.


@ Eru

Danke dir, ich setz mich gleich mal hin und probiers aus.

8

30.12.2008, 22:47

Zitat

Original von Attila

wozu gibts denn leicht zu lernende html und css kombinationen ?
bei einer page mit 5-6 seiten würd ich einfach nen kleines menü basteln, mit css etwas animieren und dann per copy and paste auf die einzelnen html seiten packen.



genau das wollte Woerni doch umgehen !? :P

und Framesets nich zu nutzen weil man sie für veraltet hält, aber stattdessen nen PHP Skript hinter der Webseite zu basteln das im endeffekt Framesets simuliert is irgendwie unpraktisch ^^

naja, wenigstens lernst php dabei :bounce:

9

31.12.2008, 11:45

Ich muss mich da Ara anschließen.
Ich weis jetzt nicht wofür du Programmierst, aber prinzipiell gibt es nur zwei Gründe warum man das per PHP lösen sollte:

a) Suchmaschinenoptimierung -> Google mag keine Frames

b) Größeres CMS im Hintergrund

Ist das nicht nötig sollte man es tunlichst vermeiden. Gerade die Performance leidet extrem unter den einsatz von PHP im vergleich zu plain Html.

SenF_Woerni

Erleuchteter

  • »SenF_Woerni« ist der Autor dieses Themas

Beiträge: 4 097

Wohnort: Hersbruck Deutschland

Beruf: GER

  • Nachricht senden

10

09.02.2009, 01:00

Ich hab endlich mal die Zeit gehabt mit Erus Vorschlag rum zu probieren. Leider krieg ich die Sache nicht vernünftig zum laufen.

Ich hab mal ein Archiv hoch geladen mit einer ganz einfachen Versuchsseite. Alle Dateien müssen im selben Ordner liegen.

Probierts selbst mal aus und ihr seht auch gleich die Fehlermeldungen.

Es wäre nett wenn einer von euch den Fehler beheben könnte bzw. mir schreibt woran es liegt damit ich ihn beheben kann.
»SenF_Woerni« hat folgende Datei angehängt:
  • website.rar (1,08 kB - 29 mal heruntergeladen - zuletzt: 06.06.2023, 13:44)

Tsu_G_

Erleuchteter

Beiträge: 3 935

Wohnort: Berlin

Beruf: /dev/random

  • Nachricht senden

11

09.02.2009, 01:45

kannst du die fehlermeldung mal posten? hab grad keine möglichkeit php-code auszuführen. spontan würd ich sagen, dass die leerzeichen zwischen include und der ( - klammer weg müssen (bei include("footer.php") und include("head.php")

OoK_Isch

Erleuchteter

Beiträge: 4 115

Wohnort: Hildesheim

Beruf: GER

  • Nachricht senden

12

09.02.2009, 09:51

Du versuchst den Header (mit header("Location...")) zu ändern, nachdem du ihn bereits geschickt hast =)

Einfachste Lösung: *Alle* Ausgaben (auch eventuelle Leerzeichen!) hinter deine Seiten-Abfrage stellen:

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
    $page "";
    if($_GET["page"] == "")    // Wenn keine Seite gefragt ist, wird die standard Seite (main) geladen
    {
        header("location: ?page=seite_1");
    }
    elseif(strpos($_GET["page"], ".") !== false)    // Wenn der Seitenaufruf einen . enthält, die standard Seite aufrufen (. kann einen Ordnerwechsel bewirken)
    {
        header("location: ?page=seite_1");
    }
    elseif(file_exists("./"$_GET["page"] .".php"))    // Wenn die gefragte Seite exestiert, aufrufen :)
    {
        $page $_GET["page"];
    }
    else    // Wenn nicht, die standard Seite aufrufen
    {
        header("location: ?page=seite_1");
    }
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<link rel="stylesheet" media="screen,projection" type="text/css"
  title="Standardstylesheet" href="css.css" />
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<table width="350" height="50" border="1">
 <tr>
  <td><? include ("head.php") ;?> </td>
 </tr>
</table>

<table width="350" height="200" border="1">
<tr>
 <td width="50%">
   <a href="?page=seite_1">1.Seite</a>
   <a href="?page=seite_2">2.Seite</a>
 </td>
  <td>
   <?include("./"$_GET["page"] .".php");?>
  </td>
 </tr>
</table>

<table width="350" height="50" border="1">
 <tr>
  <td><? include ("footer.php") ;?>  </td>
 </tr>
</table>


</body>
</html>

Scout

Fortgeschrittener

Beiträge: 457

Wohnort: Berlin

Beruf: GER

  • Nachricht senden

13

09.02.2009, 12:12

Hmm warum immer gleich php?

Man kann doch auch html in html includen.
Man baut also je eine html Seite für Navigation, eine für Banner(oben) und die Hauptseite die sich ändert.

Auf der Hauptseite dann Tabelle mit Platz(Zelle) für Banner und Navi.
In die Zellen kommt dann der include Befehl für die Seiten Navi bzw. Banner.

Fertig ;)

14

09.02.2009, 12:47

Tu dir einen Gefallen und machs mit Divs.

SenF_Woerni

Erleuchteter

  • »SenF_Woerni« ist der Autor dieses Themas

Beiträge: 4 097

Wohnort: Hersbruck Deutschland

Beruf: GER

  • Nachricht senden

15

09.02.2009, 14:10

Danke Isch, ich werds heute noch ausprobieren. :)

@Scout

Wenn ich dich richtig verstanden habe brauch ich dann trotzdem mehrere Hauptseiten. Das wollte ich aber vermeiden.


@Frosti

Ich machs schon mit Divs, nur bei diesem Beispiel halt nicht weils schneller ging.

Attila

Erleuchteter

Beiträge: 7 575

Wohnort: Hamburg

Beruf: GER

  • Nachricht senden

16

09.02.2009, 14:37

Ich habs auf meiner seite jetzt mit SSI (ServerSideIncludes) gemacht..

kann man sich auf www.philippwietzke.de anschauen.
dabei wird das obere banner, und die linke seite per SSI geladen.

SSI includen funktionert recht einfach und fällt nicht besonders auf im HTML code, da es in kommentaren geschrieben wird, beispiel:

<!--#include virtual="blubb.shtml" -->

das kann man einfach so ins html einfügen (in den body bereich) dabei muss man die seiten dann allerings in .shtml umbenennen.


EDIT:
ich habe jede seite nur einmal, und menü etc ( alles was links steht + top banner) auf einer shtml seite zusammengefasst...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Attila« (09.02.2009, 14:39)


OoK_Isch

Erleuchteter

Beiträge: 4 115

Wohnort: Hildesheim

Beruf: GER

  • Nachricht senden

17

09.02.2009, 15:06

Zitat

Original von Attila
kann man sich auf www.philippwietzke.de anschauen.

Zivildienst läuft auch 9 Monate. Gut recherchiert.

Attila

Erleuchteter

Beiträge: 7 575

Wohnort: Hamburg

Beruf: GER

  • Nachricht senden

18

09.02.2009, 15:14

warens nicht mal 10 ? Seit wann ist n das auf 9 gekürzt ?
okay denn aktualisier ich das mal :D

die site atm verlinke ich sowieso noch nicht, sind viele sachen die rauf sollen - ist auch erst seit kurzem on wie man an der last change anzeige und den hits sieht...


Nagut solang is das jetzt auch noch nicht auf 9 runter..


Wobei ich während meines Wehrdienstes 2007 echt noch dachte das die Zivi Affen n Monat länger müssen, davon das das 2004 nochmal geändert wurde hab ich nichts mitbekommen iwie.. wie die das ernsthaft seit 2000 von 13 auf 11, auf 10 auf 9 gesetzt haben...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Attila« (09.02.2009, 16:15)


19

09.02.2009, 15:18

Zitat

Original von Attila
warens nicht mal 10 ? Seit wann ist n das auf 9 gekürzt ?
okay denn aktualisier ich das mal :D



öhm würd spontan sagen, dass zivildienst seit locker 4-5 jahren nur noch 9 monate geht ;)

Scout

Fortgeschrittener

Beiträge: 457

Wohnort: Berlin

Beruf: GER

  • Nachricht senden

20

09.02.2009, 16:03

Zitat

Original von Attila
Ich habs auf meiner seite jetzt mit SSI (ServerSideIncludes) gemacht..



Genau so meinte ich das. ;)

Attila

Erleuchteter

Beiträge: 7 575

Wohnort: Hamburg

Beruf: GER

  • Nachricht senden

21

09.02.2009, 16:17

Zitat

Original von Scout

Zitat

Original von Attila
Ich habs auf meiner seite jetzt mit SSI (ServerSideIncludes) gemacht..



Genau so meinte ich das. ;)


Funktioniert auch recht gut, mit wenig quellcode und ist relativ übersichtlichlich.
Damit kann man übrigens auch einzelne php sites und perlscripte includen, mit dem gleichen befehl.

SenF_Woerni

Erleuchteter

  • »SenF_Woerni« ist der Autor dieses Themas

Beiträge: 4 097

Wohnort: Hersbruck Deutschland

Beruf: GER

  • Nachricht senden

22

09.02.2009, 16:31

Ich glaube euch natürlich, dass das auch eine Lösung wäre und vielleicht auch einfacher aber jetzt hab ich nun mal schon damit angefangen und möchte nicht wieder mit was anderem weiter machen sonst werd ich gar nimmer fertig.

Ich schaus mir garantiert mal näher an. Mein Problem ist, wie bei fast allem was mit Hardware oder Software bzw codieren zu tun hat, ich muss mir alles selber bei bringen. Ich hab keinen in meinem Bekanntenkreis der da irgendeine Ahnung davon hat. Nur alles irgendwo im Netz oder aus Büchern zu lesen ist auf Dauer auch nicht das Wahre und für ein Seminar fehlt mir die Zeit.

Ich will jetzt nicht das Jammern anfangen, bis jetzt gings ja auch so ganz gut. :)

Attila

Erleuchteter

Beiträge: 7 575

Wohnort: Hamburg

Beruf: GER

  • Nachricht senden

23

09.02.2009, 16:51

im gegensatz zu php ist SSI aber keine programmier/scriptsprache sondern nur ein befehlssatz (servererweiterungen) und somit ne sache von 5 minuten ;)

myabba|abra

Erleuchteter

Beiträge: 4 305

Wohnort: Regensburg

Beruf: GER

  • Nachricht senden

24

09.02.2009, 18:35

kann aber auch nicht jeder server (also zumindest bei meiner alten homepage von vor 8 jahren war das so )

Attila

Erleuchteter

Beiträge: 7 575

Wohnort: Hamburg

Beruf: GER

  • Nachricht senden

25

09.02.2009, 22:10

Zitat

Original von myabba|abra
kann aber auch nicht jeder server (also zumindest bei meiner alten homepage von vor 8 jahren war das so )


es kann auch nicht jeder server php :P