Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Zwei Variablen mit GET übergeben (Mehrsprachig)

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Zwei Variablen mit GET übergeben (Mehrsprachig)

    Hallo zusammen,

    ich habe mir zwar schon einiges über mehrsprachige Website durchgelesen, allerdings nichts für meinen speziellen Fall gefunden.

    Folgende Aufgabe soll ich erledigen(ein Projekt für mein Studium):

    Ich soll aus einer XML-Datei (muss leider sein) Inhalt auslesen. Der Dozent soll später Inhalt in die XML eingeben können, ohne das er an der PHP etwas ändern muss. Also werden Navigationleiste und Inhalt automatisch aus der XML gelesen und auch generiert. Das funktioniert auch soweit.

    Als zweiten Schritt möchte ich, dass man die Sprache wechseln kann.

    Meine Überlegung ist es aus der URL einfach 1. die $page und 2. die $lang auszulesen. Nachdem er die URL geprüft hat wollte ich mit einem "if" abfragen welche $lang gegeben ist und je nachdem greift er dann auf die entsprechende XML-Datei zu. (Pro Sprache würde ich eine eigene XML Datei machen)

    Mein PHP sieht momentan folgender Maßen aus:
    PHP-Code:
    <?php

        $page
    ="";
        
    $lang="";

        

        
    $xmlDatabase simplexml_load_file("content.xml");

            

        if(
    $_SERVER["REQUEST_METHOD"]==="GET"){

            if(
    is_array($_REQUEST)&&count($_REQUEST)>0){

                if(isset(
    $_REQUEST["page"])){

                    
    $page $_REQUEST["page"];

                }

            }

        }

        

        function 
    getNavbar() {

            global 
    $xmlDatabase;

            for(
    $i 0$i $xmlDatabase->count(); $i++){

                echo 
    "<li><a href='index.php?page=".$xmlDatabase->xpath("//page[@id='".$i."']")[0]['path']."'>".$xmlDatabase->xpath("//page[@id='".$i."']")[0]->navigation."</a></li>";

            };

        }

        function 
    getTitle() {

            global 
    $page;

            global 
    $xmlDatabase;

            if(
    $page != ""){

                return 
    $xmlDatabase->xpath("//page[@path='".$page."']")[0] -> title;

            }

            return 
    $xmlDatabase->xpath("//page[@id='0']")[0] -> title;

            

        }

        

        function 
    getContent() {

            global 
    $page;

            global 
    $xmlDatabase;

            if(
    $page != ""){

                return 
    $xmlDatabase->xpath("//page[@path='".$page."']")[0] -> content;

            }

            return 
    $xmlDatabase->xpath("//page[@id='0']")[0] -> content;

        }

        

    ?>
    So meine Frage: Wie kann ich die $page und $lang abfragen und wie gebe ich dann die entsprechenden Seiten aus.

    Ein kleines Struktugramm habe ich auch gebastelt (hoffe es geht so wie ich mir das denke).

    Vielen Dank schon mal für die Antworten.


  • #2
    Ähhh .. $_GET['page'] und $_GET['lang'] --> ?page=abc&lang=de

    Wobei $_REQUEST für $_GET, $_POST und $_COOKIE steht ... und da du ja schon $_REQUEST["page"] verwendest, könntest du auch $_REQUEST["lang"] verwenden ... benutzer trozdem lieber $_GET für URL Paramater und $_POST für Formular Daten ...

    Kommentar


    • #3
      PHP-Code:
          if($_SERVER["REQUEST_METHOD"]==="GET"){

              if(
      is_array($_REQUEST)&&count($_REQUEST)>0){

                  if(isset(
      $_REQUEST["page"])){

                      
      $page $_REQUEST["page"];

                  }

              }

          } 
      Auweia, das ist ein Einzeiler:
      PHP-Code:
         $page = isset($_GET['page']) ? $_GET['page'] : ""
      Und auf globale Variablen solltest du besser verzichten.
      Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

      Kommentar


      • #4
        Zitat von uha Beitrag anzeigen
        PHP-Code:
            if($_SERVER["REQUEST_METHOD"]==="GET"){

                if(
        is_array($_REQUEST)&&count($_REQUEST)>0){

                    if(isset(
        $_REQUEST["page"])){

                        
        $page $_REQUEST["page"];

                    }

                }

            } 
        Auweia, das ist ein Einzeiler:
        PHP-Code:
           $page = isset($_GET['page']) ? $_GET['page'] : ""
        Und auf globale Variablen solltest du besser verzichten.
        Den oberen Teil haben sie uns vorgegeben, dass sollen wir auch so verwenden. Ich teste es mal aus, sobald wir in der Stadt wieder Strom haben

        Kommentar


        • #5
          Den oberen Teil haben sie uns vorgegeben, dass sollen wir auch so verwenden
          Bitte? Wer gibt denn sowas vor...

          LG
          https://github.com/Ma27
          Javascript Logic is funny:
          [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

          Kommentar


          • #6
            Dann kontaktier den Professor/Dozenten und hol dir Extrapunkte, in dem du es richtig machst. Alles andere ist reine Faulheit. Mit so riesigen if/else-Konstrukten leidet auch die Lesbarkeit des Codes irgendwann.
            Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

            Kommentar


            • #7
              Ja, das war mal aus einer Aufgabe, bei der wir Formulare einmal mit Get und einmal mit Post übergeben sollen (um zusehen was der Unterschied ist).

              Leider bin ich wirklich nicht fit in PHP (Habe auch die Klausur nur dadurch nicht bestanden, weil mein PHP Teil komplett falsch war)

              Also habs jetzt umgebastelt, wenn ich es in der URL eingebe läuft es. Jetzt funktioniert es noch nicht, dass er dann auch in der Sprache bleibt, aber das klappt schon noch.

              Kommentar


              • #8
                Der Get-Parameter muss eben immer mit, wenn du die Seite innerhalb einer Sprache wechselst. Dann bleibt der Spaß auch in der Sprache.
                Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                Kommentar


                • #9
                  Zitat von Geromel Beitrag anzeigen
                  Der Get-Parameter muss eben immer mit, wenn du die Seite innerhalb einer Sprache wechselst. Dann bleibt der Spaß auch in der Sprache.
                  Ja, das probiere ich gerade. Momentan habe ich:

                  PHP-Code:
                  if ($lang == "en"){
                          
                  $currentLang 1;
                          
                  $xmlDatabase simplexml_load_file("en.xml");
                      
                      }
                      else 
                  $xmlDatabase simplexml_load_file("de.xml");
                      
                      if (
                  currentLang == 1){
                          
                  $_GET['lang'] = "en";
                      
                      }
                      else 
                  $_GET['lang'] = "de"
                  Aber das klappt nicht. :/

                  Kommentar


                  • #10
                    Hast du debuggt? Dann wüsstest du woran es liegt. Das sind echt grundlegenste Grundlagen.
                    Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                    Kommentar


                    • #11
                      Das musst du an die URL/URI anhängen:

                      datei.php?lang=de

                      Kommentar


                      • #12
                        Also:

                        Wenn ich die URL manuell eingebe, also zum Beispiel: index.php?page=home&lang=en bekomme ich auch die englische Seite angezeigt. Wenn ich jetzt allerdings auf einen neuen Link klinke verschwindet das &lang=en und ich bekomme die deutsche Seite angezeigt. Ich weiß leider nicht wie man beim klicken auf den "Englisch"-Button jedes mal den GET-Parameter &lang=en übergibt.

                        Im Debug wird natürlich nichts angezeigt, weil ich in der PHP irgendetwas nicht richtig übergebe. Leider komme ich nicht drauf was :/

                        Also meine Frage: Wie übergebe ich den GET-Parameter "dauerhaft", bis ich wieder auf den "Deutsch"-Button klicke.

                        Kommentar


                        • #13
                          indem du ihn an die url in deinem Menü überall mitanhängst und dann abfrägst, welche Sprache ausgewählt ist und den Parameter dann dementsprechend anpasst.
                          Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                          Kommentar


                          • #14
                            Wir sollen das Menü ja dynamisch aus der XML lesen Das heißt ich kann nicht einfach das Menü erstellen. Das Menü erstellt sich aus der XML(Sprich ich füge Seiten nur innerhalb der XML ein):

                            PHP-Code:
                                function getNavbar() {

                                    global 
                            $xmlDatabase;

                                    for(
                            $i 0$i $xmlDatabase->count(); $i++){

                                        echo 
                            "<li><a href='index.php?page=".$xmlDatabase->xpath("//page[@id='".$i."']")[0]['path']."'>".$xmlDatabase->xpath("//page[@id='".$i."']")[0]->navigation."</a></li>";

                                    };

                                } 

                            Kommentar


                            • #15
                              natürlich geht das oO. Du kannst in deiner Funktion ja auf die GET-Variablen zugreifen.
                              Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                              Kommentar

                              Lädt...
                              X