Ankündigung

Einklappen
Keine Ankündigung bisher.

Links mit PHP und include

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Links mit PHP und include

    Hallo,

    ich habe ein große Bitte an Euch. Ich bin absoluter PHP-Neuling und versuche mich langsam aber sicher in die Sprache einzuarbeiten. Leider bin ich an ein - für mich - unlösbares Problem gestoßen.

    Sachverhalt:
    Ich möchte eine mehrsprachige Seite bauen (englisch/deutsch). Bisher habe ich ich die Unterseiten per Inlude aufgerufen.

    config.php
    Code:
    <?php
    $file = array();
    $file['start'] = "home.php";
    $file['kontakt'] = "kontakt.php";
    $file['gb'] = "gb.php";
    ?>
    index.php
    Code:
    <?php    
    if(isset($_GET['site']) AND isset($file[$_GET['site']])) {
         include $file[$_GET['site']];    
    } else {
         include $file['de'];    
    }
    ?>
    Das hat bisher auch immer gut funktioniert. Nun möchte ich aber folgende Struktur includen.
    • Sprachen[list:e8bc27b425]
    • Deutsch[list:e8bc27b425]
    • Startseite
    • Kontakt
    • Gästebuch
    [*]Englisch
    • Startseite
    • Kontakt
    • Gästebuch
    [/list:u:e8bc27b425][/list:u:e8bc27b425]Ich weiss nicht wie ich einen Link wie z.B. index.php?site=home&lang=de realisieren kann. Am besten sollte es möglich sein, auch innerhalb der Seite die Sprachen umzuschalten ohne dass man wieder auf die Startseite gelangt. Also wenn man im Gästebuch liest und dann auf Englisch umstellt, sollte auch wieder das Gästebuch in englisch erscheinen und nicht die Startseite. Geht das dann auch mit der Variablen $PHP_SELF? Ich habe überhaupt keinen Lösungsansatz. Könnt Ihr mir bitte helfen?

  • #2
    Du includest für die aktuelle Sprache eine PHP-Datei (zB german.lang.php oder english.lang.php). Da drin baust du ein globales assoziatives Array auf, in dem alle Sprachvariablen stehen. Innerhalb der anderen Spripts rufst du nur mit den entsprechenden Schlüsseln die passenden Variablen auf. Fertig!

    Kommentar


    • #3
      OK, da du Neuling bist ein kleines Beispiel

      german.lang.php:
      Code:
      $GLOBALS['lang']['guestbook'] = Array(
        'title' => "Mein G&auml;stebuch",
        'subtitle' => "Willkommen in G&auml;stebuch",
      );
      guestbook.php:
      Code:
      echo $GLOBALS['lang']['guestbook']['title'];
      Hoffe du kannst dir den Rest selber zusammenreimen.

      Kommentar


      • #4
        Hört sich plausibel an. Nur habe ich fast nichts verstanden. Kannstu mir bitte mal genauer erläutern wie du das meinst? Wie gesagt ich stehe mit PHP am Anfang.

        Zitat von Thice
        Da drin baust du ein globales assoziatives Array auf, in dem alle Sprachvariablen stehen.
        Wie mach ich das z.B.? Ich wäre dir wirklich für jede Hilfe dankbar.

        ~ edit ~
        Du warst schneller. Ich versuch das mal.

        Kommentar


        • #5
          Ich versteh das nicht. Was du geschrieben hast funktioniert. Nur wie kann ich das dann in mein Problem einbauen? Ich weiss nicht, wie ich das Sprachenabhängig in die Links einbauen kann. Kannst Du mir das bitte mal für "Dumme" erklären?

          Für den Anfang würde es mir schon reichen, wenn ich zwei Content-Seiten in deutsch/englisch umschalten kann. Also ich habe mir jetzt mal eine index.php gebaut.
          Code:
          <?php require ("inc/config.inc.php"); ?>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <html>
          <head>
          <title>Unbenanntes Dokument</title>
          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
          </head>
          
          <body>
          <table width="100%" height="100%"  border="1" cellpadding="2" cellspacing="1">
            <tr>
              <td height="80" colspan="2"></td>
            </tr>
            <tr>
              <td width="150" height="300" align="center" valign="top">deutsch | englisch </td>
              <td height="300" valign="top">
                <?php    
          					if(isset($_GET['site']) AND isset($file[$_GET['site']])) {        
          						include $file[$_GET['site']];    
          					} else {
          						include $file['home'];    
          					}
          				?>
              </td>
            </tr>
            <tr>
              <td height="10" colspan="2"></td>
            </tr>
          </table>
          </body>
          </html>
          In der config.inc.php steht
          Code:
          <?php
               
          $file = array();
          $file['home'] = "home.php";    
          
          ?>
          Und die Home.php
          Code:
          <?php
          
          	include ("lang/lang.de.php");
          	echo $GLOBALS['lang']['home']['title'];
          
          ?>
          Wie kann ich dann jetzt den Inhalt (in diesem Fall "Home") sprachlich umschalten?

          Kommentar


          • #6
            DU übergibst mit jedem Link einen Parameter lang
            Code:
            deutsch
            Irgendwo am Rand deiner Page kannste ja n Link zum Umschalten hinmachen
            Code:
            english
            Und am Anfang jeder Seite kommt dann ne Abfrage
            Code:
            switch($_GET['lang'])
            {
              case "en": include("lang/lang.en.php"); break;
              default: include("lang/lang.de.php"); break;
            }
            Den Parameter lang kannst du natürlich auch mit Sessions übergeben.

            Kommentar


            • #7
              Ok...das funktioniert soweit auch. Nur wenn ich dann auf englisch umschalte, erscheint in dem Contentbereich kein Inhalt mehr. Wie muss ich denn z.B. bei dem Link index.php?site=home noch zusätzlich die Sprachangabe einfügen? So index.php?site=home&lang=de funktioniert es nicht.

              ~ edit ~
              Ich habe alles so gemacht wie es soll denke ich. Trotzdem erhalte ich nach dem Klick auf den Link für Deutsch nur eine blanke Seite. Die index.php weitere Zusätze läd aber richtig.

              Hier vielleicht nochmal was ich bisher wie gemacht habe.
              index.php
              Code:
              <?php
              require ("inc/conf.inc.php");
              switch($_GET['lang']) 
              { 
                case "en": include("lang/lang.en.php"); break; 
                default: include("lang/lang.de.php"); break; 
              }
              ?>
              <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
              <html>
              <head>
              <title>Unbenanntes Dokument</title>
              <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
              <style>
              body {font-family:verdana; font-size:12px;}
              </style>
              </head>
              
              <body>
              <table width="760" border="1" align="center" cellpadding="5" cellspacing="1">
                <tr align="center" valign="middle">
                  <td height="80" colspan="2">Kopf</td>
                </tr>
                <tr valign="top">
                  <td width="150" height="10">[img]img/germany.gif[/img][img]img/usa.gif[/img]</td>
                  <td height="10">Startseite | Seite 2 </td>
                </tr>
                <tr valign="top">
                  <td height="435"></td>
                  <td height="435"><?php    
                  	if(isset($_GET['site']) AND isset($file[$_GET['site']])) {        
                      	include $file[$_GET['site']];
              		} else { 
                          include $file['home'];    
                      } 
                  ?></td>
                </tr>
                <tr align="center" valign="middle">
                  <td height="10" colspan="2">Fuss</td>
                </tr>
              </table>
              </body>
              </html>
              conf.inc.php
              Code:
              <?php
                   
              $file = array();
              $file['home'] = "home.php";
              
              ?>
              home.php
              Code:
              <?php
              
              echo $GLOBALS['lang']['start']['title'];
              
              ?>
              lang.de.php
              Code:
              <?php
              
              $GLOBALS['lang']['start'] = Array( 
                'title' => "Willkommen", 
              );
              
              ?>
              lang.en.php
              Code:
              <?php
              
              $GLOBALS['lang']['start'] = Array( 
                'title' => "Welcome", 
              );
              
              ?>
              Ich habe auch alles mal auf nen Server gepackt zum Testen.
              http://www.computerverein-rostock.de/test/index.php

              Kommentar

              Lädt...
              X