Variablen auslesen

  • PHP

  • ew_h2002
  • 1401 Aufrufe 4 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Variablen auslesen

    Hallo,

    ich möchte gleich vorausschicken, dass ich von PHP nicht die große Ahnung habe - um es positiv auszudrücken.

    Ich habe eine HP erstellt mit einer Grundseite: Der Folgenden (stark verkürzt). Sie bindet eine weitere Datei, die die eigentlich Inhalte enthält per include ein und gibt diese an einer bestimmten Stelle wieder aus.
    Diese folgende Datei enthält unter anderem die Variable main_inhalt und die Funktion spezial().

    PHP-Quellcode

    1. <html>
    2. <head>
    3. <?php
    4. include ("inhalt/$inhalt.php");
    5. ?>
    6. <title><?php echo "$main_titel"; ?></title>
    7. </head>
    8. <body>
    9. <?php
    10. if ( spezial() != "" )
    11. {
    12. echo "$main_inhalt<br>";
    13. echo spezial();
    14. }
    15. else
    16. {
    17. echo $main_inhalt;
    18. }
    19. ?>
    20. </body>
    21. </html>
    Alles anzeigen


    Eine der Dateien, die per include eingefügt wird, könnte so aussehen:

    PHP-Quellcode

    1. <?php
    2. $main_titel = "TITEL";
    3. $main_inhalt = "Testtext";
    4. function spezial()
    5. {
    6. echo "Hallo. Die Variable lautet: $hallo";
    7. }
    8. ?>


    Der Link um die Seite aufzurufen heißt natürlich jetzt: hauptseite.php?inhalt=test.php. Nun möchte ich an das ganze noch die Variable hallo hängen. Das sehe dann so aus: hauptseite.php?inhalt=test.php&hallo=hallo welt.

    Nun müsste die Seite, nach meinem Verständnis, die Variable hallo eigentlich ausgeben. Tut sie aber nicht!
    Warum?

    ew_h2002
  • Die Funktion kennt nur ihre eigenen Variablen - nennt man Lokalitätsprinzip. Entweder Du deklarierst die Variable in der Funktion als globale Variable (global $hallo; ) oder übergibst der Funktion die Variable als Argument. Die erste Variante solltest Du aber vermeiden - ist schlechter Stil.

    Also lieber:

    <?php
    $main_titel = "TITEL";

    $main_inhalt = "Testtext";

    function spezial($hallo)
    {
    echo "Hallo. Die Variable lautet: $hallo";
    }
    ?>
  • oO"
    Du hast es egschafft mich vollkommen zuverwirren oO"
    ->Ich sehe kein $_GET oder $_REQUEST in deinem Code, wieso denkst du, dass du dann auf GET-Variabeln zugreifen kannst?

    Also ich versteh folgendes in deinem Code nicht:

    include ("inhalt/$inhalt.php");

    Wo wird die Variabel $inhalt bestimmt?

    if ( spezial() != "" )

    function spezial()
    {
    echo "Hallo. Die Variable lautet: $hallo";
    }

    Bei if wird ein boolean-Wert erwartet, deine funktion gibt jedoch nur etwas aus. das kann nicht funktionieren!

    echo spezial();

    das wär ja dann "echo echo "hallo" das kann auch nicht funtzen!

    Wär nett wenn du mal dein problem detailiert posten könntest, denn ich versth da nur BAHNHOF ^^"

    BTW: Auch für dich der Link zum PHP-TUT: h**p://tut.php-q.net/
  • PHP-Quellcode

    1. <html>
    2. <head>
    3. <?php
    4. include ("inhalt/$inhalt.php");
    5. ?>
    6. <title><?php echo "$main_titel"; ?></title>
    7. </head>
    8. <body>
    9. <?php
    10. switch ($inhalt)
    11. {
    12. case spezial: { spezial($main_inhalt, $main_titel); break; }
    13. case asdf: { asdf.....; break; }
    14. default: home();
    15. }
    16. ?>
    17. </body>
    18. </html>
    Alles anzeigen


    deine include datei sieht dann folgendermaßen aus:

    PHP-Quellcode

    1. <?php
    2. $main_titel = "TITEL";
    3. $main_inhalt = "Testtext";
    4. global $main_inhalt;
    5. global $main_titel;
    6. function spezial($main_inhalt, $maintitel)
    7. {
    8. echo "Hallo. Die Variable lautet: $hallo";
    9. }
    10. ?>
    Alles anzeigen


    Zur Erklärung:

    Im ersten Code habe ich deine IF Abfrage durch eine Switch ersetzt, da Switch bei mehreren Links um einiges Übersichtlicher ist ( ich hoffe ich habe keine ; Fehler reingebracht, konnte es nicht testen)

    in der include datei habe ich die Variablen mit GLOBAL in allen darunter gesetzten funktionen bekannt gemacht, falls du die vars in einer der Funktionen nochmal brauchst. dann habe ich die Vars mit den Funktionen übergeben, müsste eigentlich auch ohne die Übergabe funktionieren aber so sollte es sicher gehen...

    hoffe war hilfreich, good luck

    PS: Wenn in meinem Code Parse Errors entstehen liegt das daran dass ich schon länger nix mehr gemacht hab damit und keine zeit hatte den code selbst zu testen *sorry*, kuck dann einfach auf php.net parse error funktionen an und setz die ; richtig ^^