kostenloser Webspace werbefrei: lima-city


PHP dynamischer Content

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    cube1983

    cube1983 hat kostenlosen Webspace.

    Ich arbeite schon den ganzen Tag an einem Problem,
    vorweg ich bin noch sehr neu auf dem Gebiet PHP,

    Zu meinem Problem, ich möchte mir einen dynamischen Content generieren, dazu habe ich mir eine index.php geschrieben.
    <?php
    switch($_GET['content'])
    {
    	case "main":
    		include('php/main.php');
    	break;
    
    	case "blog":
    		include('php/blog.php');
    	break;
    
    	case "gallery":
    		include('php/gallery.php');
    	break;
    
    	case "guestbook":
    		include('php/guestbook.php');
    	break;
    
    	case "contact":
    		include('php/contact.php');
    	break;
      
    	default:
    		include('php/main.php');
    	break;
    }
    ?>

    Diese funktioniert auch soweit.

    Nu das Problem...
    <!-- Beginn Navbar -->
    <div id="navbar">
    	<div id="nav">
    	<a class="button01" href="index.php?content=blog"></a>
    	<a class="button02" href="index.php?content=gallery"></a>
    	<a class="button03" href="index.php?content=guestbook"></a>
    	<a class="button04" href="index.php?content=contact"></a>
    	</div>
    </div>
    <!-- Ende Navbar -->
    			
    <!-- Beginn dynamischer Content -->
    <div id="content">
    	<?php include('content'); ?>
    </div>
    <!-- Ende dynamischer Content -->


    Die Links funktionieren, nur wird anstatt es in dem Container darzustellen eine neue Seite geöffnet.
    Mein Ansatz wäre, das "content" nicht mehr als eine Variable gesehen wird.
    Und damit der Browser bzw. Server nicht weis was er "includen" soll.
    (Nur wie Binde ich dann mein html Code an der Stelle sonst ein?)

    Bin momentan völlig Planlos...

    Gruß
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. file_get_content() oder schlicht file()

    $variable = implode(" ",file("template/address.html"));


    Damit lädst du den Inhalt der address.html in ein Array, dessen Inhalte du mit implode verbindest. Nun hast du den Inhalt der Datei in der Variable und kannst diese ausgeben.
    Alternativ kannst du auch

    $variable = file_get_content("template/address.html")


    nutzen.





    Beitrag zuletzt geändert: 6.9.2010 22:33:30 von vertico
  4. Das mit dem includen musst du dir als Anfänger wie folgt dastellen: Das include liest alles aus, was in der Datei steht. Dann macht es ?> (also den PHP-Tag zu), schreibt dort all den Code, der in der Datei ist, hin und macht dann automatisch wieder <?php , also macht mit dem Script weiter. Ich denke, so sollte das ganz verständlich sein.

    Wenn in der Datei PHP-Code steht, wird dieser ausgeführt. Ist in der Datei nur HTML-Code, dann wird das damit gemacht, was damit gemacht werden würde, wenn du einfach das anstelle von Include schreiben würdest:
    include('Eine_Datei.html');
    ist das gleiche, wie
    ?>
    <html>
    	<head>
    	</head>
    	<body>
    		<!-- Dein ganzer Seiteninhalt -->
    	</body>
    </html>
    <?php
    Also er wird an dieser Stelle ausgegeben, wie, wenn er direkt in der Datei stehen würde. Im Browser wird man demgegenüber keinen Unterschied bemerken, also da entsteht weder ein IFrame, noch eine andere Art von irgendwas, das mit einer ganz neuen Seite anfängt. Sieh' dir doch einfach mal den Quelltext an: Im Browser auf Ansicht, dann auf "Quelltext betrachten". Ich denke, dann wirst du es verstehen.

    Beitrag zuletzt geändert: 6.9.2010 22:32:48 von drafed-map
  5. Autor dieses Themas

    cube1983

    cube1983 hat kostenlosen Webspace.

    Was include machen soll verstehe ich soweit,
    nur das prob was ich habe es tut es nicht.

    Normalerweise hätte im Quelltext ja ein html code stehen müssen (beim dyn Content)
    Doch an der Stelle interpretiert er was flasches, bzw. weiß nicht was er in den dyn Content schreiben soll.

    @vertigo
    Wenn ich die variable in der index.php deklariere, kann ich sie dann in meinem index.html dann auslesen?
  6. cube1983 schrieb:
    Wenn ich die variable in der index.php deklariere, kann ich sie dann in meinem index.html dann auslesen?
    Wenn sich in der index.html PHP-Code befindet, der das kann (HTML kann das ja nicht), und die index.html von der index.php includet wird, nachdem die Variable, von der du sprichst, einen Wert bekommen hat, dann ja.

    Kannst du mir bitte den Link zu der Problemseite schicken, dann würde ich mir das ganze mal ansehen.
  7. INDEX.php:

    <?php
    switch($_GET['content'])
    {
            default:
    	case "main":
    		$content = file_get_content('php/main.php');
    	break;
    
    	case "blog":
    		$content = file_get_content('php/blog.php');
    	break;
    
    	case "gallery":
    		$content = file_get_content('php/gallery.php');
    	break;
    
    	case "guestbook":
    		$content = file_get_content('php/guestbook.php');
    	break;
    
    	case "contact":
    		$content = file_get_content('php/contact.php');
    	break;
      
    	default:
    		$content = file_get_content('php/main.php');
    	break;
    }
    ?>
    <!-- Beginn Navbar -->
    <div id="navbar">
    	<div id="nav">
    	<a class="button01" href="index.php?content=blog"></a>
    	<a class="button02" href="index.php?content=gallery"></a>
    	<a class="button03" href="index.php?content=guestbook"></a>
    	<a class="button04" href="index.php?content=contact"></a>
    	</div>
    </div>
    <!-- Ende Navbar -->
    			
    <!-- Beginn dynamischer Content -->
    <div id="content">
    	<?php echo $content; ?>
    </div>
    <!-- Ende dynamischer Content -->


    So könnte der Code umformuliert werden. So sollte im standartfall Main geladen werden oder wenn $_GET['content'] vorhanden ist die entsprechende Site. Wichtig ist, dass die geladenen Dateien nun kein eigenes html-Gerüst brauchen. Das bringt deine Index.php mit. In diesem Beispiel fehlt das Gerüst natürlich noch, ich habe nur deine Schnipsel genommen.

    Beitrag zuletzt geändert: 6.9.2010 23:31:20 von vertico
  8. Autor dieses Themas

    cube1983

    cube1983 hat kostenlosen Webspace.

    Die Seite ist noch nicht Online.
    Teste sie local...

    Kann aber den Kompletten Quelltext online stellen... (morgen, da Rechner aus)

    @vertico
    werde es morgen dann nochmal so umschreiben...
    muss wohl eben nen fehler gehabt haben... (weil es nicht gefunzt hatte)
    wie gesagt heute wird das eh nix mehr^^ (kopp is zu)

    danke an euch beiden für die schnelle und gute hilfe

    Beitrag zuletzt geändert: 6.9.2010 23:36:47 von cube1983
  9. Hi.

    Vielleicht hilft dir auch folgendes:
    <?php
    	$name = sprintf('./%s.htm', $_GET['seite']);
    		if(file_exists($name)) {
    			include "$name";
    		} else {
    			include "home.htm";
    		}
    ?>

    In $name wird - sofern aufgerufen - "./test.htm" gespeichert, file_exists() prüft dann, ob eine Datei "test.htm" existiert und wenn dem so ist, dann wird dieses includet, andernfalls wird "home.htm" eingefügt.

    $_GET['seite'] entspricht demnach deinem Seitenaufruf.

    Wenn deine Links z.B. so aussehen
    <a href="?url=test">Test</a>
    dann muss da natürlich $_GET['url'] stehen.

    Du kannst natürlich auch auf "test.html" oder "test.php" prüfen - einfach im Codebeispiel anpassen. Hast du verschiedene Dateiendungen (z.B. *.php und *.htm), dann kannst du beide mit einer weiteren if-Anweisung berücksichtigen:
    <?php
    	$name = sprintf('./%s.htm', $_GET['seite']);
    		if(file_exists($name)) {
    			include "$name";
    		} else {
    			$name = sprintf('./%s.php', $_GET['seite']);
    				if(file_exists($name)) {
    					include "$name";
    				} else {
    					include "home.htm";
    				}
    ?>
    In diesem Fall wird erst geschaut, ob "test.htm" existiert und ist dem nicht so, wird auf "test.php" geprüft. Trifft beides nicht zu, dann wird halt wieder "home.htm" includet.


    Das ganze schreibst du in deine index-Seite an die Stelle, an dem der Content stehen soll. Den Inhalt wie gehabt in die jeweiligen Dateien (test.htm, test2.htm, o.ä.).
    So sparst du dir switch

    Ich hoffe es hilft, bei Fragen: Tu dir keinen Zwang an :wink:

    Beitrag zuletzt geändert: 6.9.2010 23:58:27 von djglycerin
  10. @djglycerin: Also mal ganz ehrlich, wenn einem die Dateistruktur bekannt ist, braucht man nicht extra prüfen ob eine Datei die man includen will, auch existiert, das ergibt sich meist von alleine.

    @cube1983: Lass am besten mal den Schmarrn mit dem switch(). Wir nur unnötig unübersichtlich und am Ende weißt Du selber nicht mehr Was genau für Was steht. Schau Dir mal mein Frameset Tutorial auf beStrange.de an, das sollte Dir helfen genau das zu erreichen, was Du im Moment versuchst.
  11. Autor dieses Themas

    cube1983

    cube1983 hat kostenlosen Webspace.

    Ok...

    Das Outsourcen hat geklappt...
    Danke nochmals an alle...

    Das Tut von strange hat sehr geholfen meinen Fehler zu entdecken...
    Ich hätte von Anfang an die index.php in meine index.html includen müssen....

    Gruß
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!