PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kompletten Inhalt per PHP steuern?


Zel Greywards
12.09.2004, 20:45:47
Hi, ich bin noch nicht so richtig mit den Befehlen und den Zeichenreinfolgen von PHP vertraut, daher habe ich eine große Frage an euch! Könnt ihr mir sagen, wie man den kompletten inhalt einer website so steuern kann, das man halt eine php datei hat, und beim klick auf einen link der inhalt der seite aktualisiert wird. ich habe sowas schon oft geshene und meine es funktioniert mit session id's, aber wie genau es geht habe ich nicht kapiert.

also grob gesagt will ich, dass sich nur der inhalt aktualisiert und der rest (header, sidebar) nicht neu geladen wird. also wie ein iframe in der seite, aber über php.

vielen dank schon mal im vorraus

xabbuh
12.09.2004, 20:51:55
Dazu benötigst du die Funktion include() (http://www.selfphp.info/funktionsreferenz/kontroll_mechanismen/include.php). Du erstellst einfach zwei Dateien. Eine header.inc.php, in der der gesamte Quelltext drin steht, der vor dem eigentlich Content kommt und eine footer.inc.php, in der alles steht, was nach dem Content kommt.

Beispiel:

<?php
include('header.inc.php');

// Content

include('footer.inc.php');
?>

Zel Greywards
13.09.2004, 15:57:26
ja, dass ist klar, nur ich meinte, dass man nur eine php seite braucht, in der der quelltext vom heder und vom footer steht und der content includet wird, sodass nichts neu geladen wird, halöt einfach der content eingesetzt wird.
und das content wird durch die links gesteuert, desshalb weiß ich nicht, wie ich den link stezten muss, damit sich das content der php datei ändert (ein anderes hereingeldaen wird).

xabbuh
13.09.2004, 16:09:39
Beispiel:


<?php
// Hier der Header

$page = trim(strip_tags($_GET['page']));

switch($page) {
case 'seite2':
include('seite2.inc.php');
break;
case 'seite3':
include('seite3.inc.php');
break;
// usw.
default:
include('startseite.inc.php');
}

// Hier der Footer
?>

Zel Greywards
13.09.2004, 16:41:44
cool danke, und wie müsste dann der link lauten?
adresse.de/index.phpswitch[1] oder wie?

nochmal danke

xabbuh
13.09.2004, 16:46:51
index.php?page=seite1 zum Beispiel.

Zel Greywards
13.09.2004, 19:34:52
jo, und in die z.b. seite1.inc.php, da muss dann doch nur html code rein... oder müssen da auch spezielle php tags drinn sein?

xabbuh
13.09.2004, 22:21:45
Nein, da müssen keine PHP-Befehle rein. Reines HTML reicht.

Zel Greywards
16.09.2004, 13:11:22
Ich habe das jetzt mal gestestet und es funktioniert. aber wenn ich auf nen link klicke wird die ganze seite geladen. wie kann ichs denn machen, dass der footer und der header bleiben und nur das was erstezt wird geladen wird, so wie in nem frame? gibts da uch nen code für?

xabbuh
16.09.2004, 17:00:38
Wenn nur ein Teil der Seite neu geladen werden soll, bleibt dir nichts anderes überig als mit Frames zu arbeiten.

Domi
16.09.2004, 17:05:47
Sers,

geladen wird das net wirklich, da du eh alles im cash hast. Es wird nur neu aufgerufen. Wenn das nicht willst, dann musst du die Text mit Javascript oder flash oder sonstwas einbinden

GreeTz Domi

Zel Greywards
16.09.2004, 20:27:01
Irgendwie funktioniert der skript doch nicht. Egal auf welchen Link ich klicke, es wird immer die seite ausgegeben, welche unter 'default' vermerkt ist. die anderen werden auch wenn man den link anklickt nicht geladen und es kommt imme die default seite, also home.inc.php. ich habe hier nochmal den code:


<?php
$page = trim(strip_tags($_GET['page']));

switch($page) {

default:
include('home.inc.php');
break;
case 'home':
include('home.inc.php');
break;
case 'impressum':
include('impressum.inc.php');
break;
case 'infos':
include('infos.inc.php');
break;
case 'kontakt':
include('kontakt.inc.php');
break;

}
?>


und der link geht so:

<a href="http://www.the-slayers.de/promo/index.php?page=impressum">

ist da jetzt irgendwas falsch?

xabbuh
16.09.2004, 20:30:46
Welche php-Version hast du? Kann es sein, dass diese noch nicht die Superglobalen wie zum Beispiel $_GET und $_POST unterstützt?

Zel Greywards
17.09.2004, 11:04:41
wie kann ich denn feststellen welche version von php auf meinem server ist? aber ich glaube die ist recht neu...

chris17
17.09.2004, 11:27:14
Hi,

wie kann ich denn feststellen welche version von php auf meinem server ist? aber ich glaube die ist recht neu...
Ruf einfach ein Skript mit folgendem Inhalt auf

<?php
phpinfo();
?>

Zum "switch()-Problem", das "default" sollte als letztes in der switch()-Anweisung stehen.

Grüße

Zel Greywards
17.09.2004, 11:37:19
also default habe ich jetzt anch hinten gesetzt, aber es funktioniert immer noch nicht. und php habe ich version 4.3.2

xabbuh
17.09.2004, 15:09:47
Dann lass dir einfach mal $_GET['page'] anzeigen und überprüfe, ob die Variable überhaupt den richtigen Wert hat.

Zel Greywards
17.09.2004, 15:44:23
also ich verstehe php eigentlich nicht so, nur den teil, mit dem man formulare steuert (variablen zuschicken per mail, etc.). Wie kann ich mir denn GET anzeigen lassen und welchen wert muss die variable haben?

xabbuh
17.09.2004, 16:37:36
<?php
print $_GET['page'];

print_r($_GET);
?>


Da du mit PHP ja anscheinend noch nicht so bewandert bist, rate ich dir, erstmal ein Tutorial (http://tut.php-q.net) zu lesen.

Jacki
19.09.2004, 22:43:20
versuch mal die switch-andweisung ohne hochkommate

also



switch($page) {
case home:
include('includes/home.html');
break;
case impressum:
include('includes/impressum.html');
break;
case links:
include('includes/links.html');
break;
default:
include('index.php');
break;

}

xabbuh
20.09.2004, 08:34:29
Wie soll das denn funktionieren? Die Werte in $page sind doch keine Integer sondern Strings.

Zel Greywards
20.09.2004, 15:40:29
Also ist das auch keine lösung? ich will mir vielleicht die lern cd "php und mysql" von video2brain.com hohlen um php zu lernen, kennt ihr das? ist das gut?

xabbuh
20.09.2004, 16:30:57
Kenne die CD jetzt zwar nicht, ich würde an deiner Stelle aber erstmal mit tut.php-q.net (http://tut.php-q.net) anfangen, PHP zu lernen, weil das doch sehr gut ist und man da schon die wirklich wichtigen Grundlagen lernt. Und eben umsonst.