Ankündigung

Einklappen
Keine Ankündigung bisher.

if-Anweisung innerhalb einer echo-Ausgabe?

Einklappen

Neue Werbung 2019

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

  • if-Anweisung innerhalb einer echo-Ausgabe?

    Es ist sicher eine ziemlich grundlegende Frage, daher poste ich sie in dieser Kategorie:

    Ist es möglich, eine if-Anweisung innerhalb einer echo-Ausgabe zu deklarieren?

    irgendwie so:

    PHP-Code:
    if $Variable {
    echo 
    'Die Variablen stimmen überein.' if ($Farbe "blau") echo 'und die Farbe ist blau.';

    } else {
    echo 
    'keine Übereinstimmung.';

    Ich möchte im Grunde die Ausgabe um einen Satz erweitern, sofern eine weitere Bedingung (in diesem Fall die Farbe) auch übereinstimmend ist.
    Sicher könnte ich auch
    PHP-Code:
    if $Variable =&& $Farbe 'blau' { ... 
    schreiben, aber das würde ja meine Frage nicht beantworten...

    Warum frage ich und wofür brauche ich das?

    Nun, im Grunde möchte ich einen Link basteln, der dynamisch, je nachdem, was alles so im $_GET steht, den Link um jeweils dieses $_GET erweitert. Also eine kontinuierliche weitergabe, falls vorhanden.

    zur Veranschaulichung:

    Ich befinde mich auf der Startseite. Dort steht in der URL lediglich index.php. Es existiert in dieser index.php ein Link, der auf die jeweilige englische Version verweist (index.php?lang=en)

    Gehe ich nun aber ein wenig weiter hinein in die Seitenstruktur, dann kommen in der URL noch Parameter wie "&id=" und "&kat=" hinzu.
    Diese sollen dann auch beim Klicken auf den Link zur englischen Version mit an die URL angehängt/übergeben werden.
    Also quasi ein Anweisung in der Art:
    Schreibe erstmal index.php?lang=en und , falls id vorhanden, auch noch "&id=" dahinter und falls noch kat vorhanden ist, bitte auch noch "&kat=" dahinter usw. Vielleicht gibt es ja sogar eine Abfrage ALLER GET-Elemente, die dann in einem Array gespeichert und (falls vorhanden) dann auch wieder in den Link "eingebaut" werden können. Das wäre natürlich ideal

    Ich hoffe, das war jetzt nicht all zu verwirrend und ihr wisst, was ich meine

    Gruß estebu


  • #2
    Zur Ausgangsfrage: Trinär/Ternäroperator. Diskussion
    Zum Zweck: Besser [MAN]http_build_query[/MAN] verwenden.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Die Parameter sollten sich im $_SERVER['QUERY_STRING'] befinden.

      Kommentar


      • #4
        Ja, an $_SERVER['QUERY_STRING'] oder auch $_SERVER['REQUEST_URI'] hatte ich schon gedacht, aber wenn ich mich bereits auf der englischen Sprachversion befinde, wird ja dadurch auch immer "lang=en" mit übergeben. Somit befände ich mich dann dort ja in einer Schleife und komme nicht mehr auf die deutsche Version zurück - es sein denn, ich kann "lang=en" irgendwie entfernen lassen...
        An die bestehende URL mit all ihren Parametern soll beim klick auf den "English"-Link im Grunde nur "lang=en" angehängt werden.
        Beim klick auf den "Deutsch" - Link soll dann dieses "lang=en" wieder entfernt werden.

        Kommentar


        • #5
          Joh, hab ich auch gemerkt

          Dann nimm einfach das $_GET-Array und unsette davor den Schlüssel 'lang',

          Kommentar


          • #6
            Du kannst das auch so machen:
            PHP-Code:
            if $Variable == {
            $farbeAusgabe = ($Farbe == 'blau') ? ('Und die Farben stimmen überein') : ('');
            echo 
            'Die Variablen stimmen überein.'.$farbeAusgabe;

            } else {
            echo 
            'keine Übereinstimmung.';

            Du kannst glaub ich auch den Teil
            PHP-Code:
            ($Farbe == 'blau') ? ('Und die Farben stimmen überein') : (''
            anstatt der Variable schreiben:
            PHP-Code:
            echo 'Die Variablen stimmen überein.'.($Farbe == 'blau') ? ('Und die Farben stimmen überein') : (''); 
            BEim Zweiten Bsp. bin ich mir nich 100%ig sicher, sollte aber klappen
            LG Sonic

            EDIT: Ich hab jetzt nur deine Frage beantwortet mit dem if Teil.

            Kommentar


            • #7
              Okay, da kommen wir der Sache ja schon näher
              @ chesssteve: Wie bekomme ich denn alle GET-Elemente in ein Array?

              Kommentar


              • #8
                Hmm, GET kann aber durchaus auch „lokale“ Parameter beinhalten. Ob das immer so sinnvoll ist, die durchzuschleifen?

                Beispiel Paginierung. Du blätterst einen deutschen Inhalt bis Seite 3 durch und wechselst dann auf [en].
                1. Findest Du Dich mitten in der Liste wieder
                2. Hat der englische Inhalt überhaupt so viele Ergebnisse?

                Wie bekomme ich denn alle GET-Elemente in ein Array?
                Bitte mehr Nachdenken vor dem Fragen! $_GET.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  Ooops, ja, stimmt: echo $_GET; gibt mir ja ein Array. Sorry
                  Ich war nur ein wenig verträumt, weil mein Editor immer nach der Eingabe von $_GET eine eckige Klammer [] vorgibt... dachte, da muss immer was drin stehen...

                  zu Deinen Fragen:
                  1. Findest Du Dich mitten in der Liste wieder
                  stimmt. Könnte man mit nem Anker vielleicht lösen...

                  2. Hat der englische Inhalt überhaupt so viele Ergebnisse?
                  Das wäre unerheblich, da die eigentlichen Seiteninhalte (Ausgaben) aus der Datenbank kommen. Die Übersetzungsdatei wird lediglich für das Template gebraucht. Und da gibt es für jedes deutsche Wort ja schliesslich auch ein englisches Pendant.

                  Kommentar


                  • #10
                    @ Sonic:
                    Das funktioniert so leider nicht.
                    PHP-Code:
                    $Farbe 'rot';
                    $Variable 2;
                    if (
                    $Variable 1) {
                    $farbeAusgabe = ($Farbe 'blau') ? ('Und die Farben stimmen überein') : ('');
                    echo 
                    'Die Variablen stimmen überein.'.$farbeAusgabe;

                    } else {
                    echo 
                    'keine Übereinstimmung.';

                    ergibt: "Die Variablen stimmen überein.Und die Farben stimmen überein."

                    was ja eigentlich nicht stimmen kann, da ja als Farbe 'rot' und als Variable '2' angegeben sind.

                    Kommentar


                    • #11
                      @ Sonic:
                      Dein Vorschlag funktioniert leider nicht:
                      PHP-Code:
                      $Farbe 'rot';
                      $Variable 2;
                      if (
                      $Variable 1) {
                      $farbeAusgabe = ($Farbe 'blau') ? ('Und die Farben stimmen überein') : ('');
                      echo 
                      'Die Variablen stimmen überein.'.$farbeAusgabe;

                      } else {
                      echo 
                      'keine Übereinstimmung.';

                      ergibt: "Die Variablen stimmen überein.Und die Farben stimmen überein "

                      was aber eigentlich nicht stimmen kann, da ja als Variable '2' und als Farbe 'rot' angegeben sind... (???)

                      Kommentar


                      • #12
                        Hi,
                        sorry mir ist da ein kleiner Fehler unterlaufen:
                        PHP-Code:
                        $Farbe 'rot';
                        $Variable 2;
                        if(
                        $Variable == 1){
                        $farbeAusgabe = ($Farbe == 'blau') ? ('Und die Farben stimmen überein') : ('');
                        echo 
                        'Die Variablen stimmen überein.'.$farbeAusgabe;

                        }else{
                        echo 
                        'keine Übereinstimmung.';

                        Tut mir Leid, hab ich übersehen. Probiers Mal nochmal.
                        LG Sonic

                        EDIT: Was mir gerade einfällt: Hast du die Fehlermeldungen unterdrückt?! Es sollte eig. eine Meldung geben.

                        Kommentar


                        • #13
                          Woran kann es nun liegen, dass
                          PHP-Code:
                          foreach($_GET as $key => $value); 
                          immer nur das letzte Array-Element ausgibt?

                          Habe auch mit
                          PHP-Code:
                          $Array implode(",",$_GET);
                          echo 
                          $Array
                          rumprobiert, aber dann fehlen mir die key-Angaben... *grmbl*

                          Kommentar


                          • #14
                            if ($Variable = 1) {
                            foreach($_GET as $key => $value);
                            Wow, zwei in einem Thread! http://www.php.de/wiki-php/index.php...Standardfehler
                            --

                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                            --

                            Kommentar


                            • #15
                              PS: Habe doch oben schon auf http_build_query hingewiesen. Warum wird das ignoriert?
                              aber dann fehlen mir die key-Angaben...
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X