Thomas: Wie übergebe ich eine Variable an eine neue PHP-Seite

Hai,

Hab da folgendes Prob:

Ich habe eine seite, auf der eine Variable einen bestimmten wert bekommt z.B. "2"

rufe dann eine neue php Seite auf, und möchte nun zu dieser 2 eine 3 hinzuaddieren, wie des addieren und so geht weiss ich, ich weiss nur nicht, wie ich von Seite 1  die Variable zu Seite 2 übergebe.

ich hoffe ihr versteht was ich meine

  1. Hai,

    Hab da folgendes Prob:

    Ich habe eine seite, auf der eine Variable einen bestimmten wert bekommt z.B. "2"

    rufe dann eine neue php Seite auf, und möchte nun zu dieser 2 eine 3 hinzuaddieren, wie des addieren und so geht weiss ich, ich weiss nur nicht, wie ich von Seite 1  die Variable zu Seite 2 übergebe.

    ich hoffe ihr versteht was ich meine

    zB so:

    URL_neue_seite?variablen_name=$variablen_name

    1. Das hab ich probiert, denn bekomme ich aber nur den text "$variable" übergeben

      1. URL_neue_seite?variablen_name=$variablen_name

        Das hab ich probiert, denn bekomme ich aber nur den text "$variable" übergeben

        Wie hast Du das ausgegeben? Wenn Du

        echo 'URL_neue_seite?variablen_name=$daten';

        schreibst, bekommst Du in der Tat den Text $daten in $_GET["variablen_name"] übergeben, weil PHP keine Variablen in Texten mit einfachen Anführungszeichen ersetzt. Besser:

        echo "URL_neue_seite?variablen_name=".$daten;

        Und damit von den Daten nichts verloren geht, ganz richtig:

        echo "URL_neue_seite?variablen_name=".urlencode($daten);

        Bei der Gelegenheit: Denke auch daran, daß das Zeichen & nichts in HTML zu suchen hat.

        <a href="neue_seite?var_a=1&var_b=2">

        ist falsch, es muß

        <a href="neue_seite?var_a=1&var_b=2">

        heißen. Siehe auch http://www.htmlhelp.com/tools/validator/problems.html#amp.

        Gruß,
          soenk.e

        1. Also:

          mal in deutsch erklärt:
          ich hab ne Seite mit einer frage und 3 antwortmöglichkeiten, und nur eine ist richtig, also wenn man was falsches ankreuzt, denn wird eine variable "$fehler[i]=3"  gesetzt. i ist hierbei ein Zähler, der ja, wie man an dem link unten sieht, einen bestimmten wert bekommt.

          So, nun ruft sich die Seite wieder selber auf, und es soll, wenn man wieder was falsch macht, das nachste $feher[i]=3  gesetzt werden, und nach 5 Fragen hole ich die Summe aus dem Array und will sie ausgeben.

          Leider funzt das ber nciht, da $fehler immer den wert 3 hat sobald ich einmal was falsch gemacht habe.

          So, hier der link, OHNE die übergabe von $fehler, da ich davon ausgegangen bin, das wenn ich die seite selber wieder aufrufe, die benutzen Variablen den wert behalten:

          echo" <form  action="main.php?menue=3&frage=3&i=2" method="post">   ";

          Achja, "menue" ist unwichtig, des klappt, und "frage" auch, und des i ist halt der Zähler.

          1. So, hier der link, OHNE die übergabe von $fehler, da ich davon ausgegangen bin, das wenn ich die seite selber wieder aufrufe, die benutzen Variablen den wert behalten:

            Nein, der Browser weiß zwar vielleicht, daß er die selbe Seite lädt, aber hat keine Ahnung, daß da PHP drinsteckt. Der Server wiederum, auf dem PHP läuft, hat keine Ahnung, daß Du die Seite zum zweiten Mal lädst. Somit kann Deine Variable nicht "überleben", Du mußt sie schon explizit übergeben, entweder per URL, per Formular oder per Session.
            Da Du bereits ein Formular benutzt, wäre es sinnvoll, dieses auch für die Variablenübergabe zu verwenden.

            echo" <form  action="main.php?menue=3&frage=3&i=2" method="post">   ";

            Wie erwartet hast Du hier genau den Fehler gemacht, auf den ich mit http://www.htmlhelp.com/tools/validator/problems.html#amp hinweisen wollte: Das & darf in HTML _niemals_ alleine stehen. Richtig wäre:

            echo "<form  action="main.php?menue=3&frage=3&i=2" method="post">";

            Davon abgesehen wäre es wie oben bereits angesprochen sinnvoll, wenn Du Deine Daten nicht per URL übergibst, sondern als

            echo "<input type="hidden" name="variable" value="".htmlentities($variable)."">";

            im Formular - Du hast schon ein Formular, also nutze es auch.

            Gruß,
              soenk.e

            1. Hmm, habe leider erst jetzt angefangen mit Formularen zu arbeiten, und kenne mich da noch net so aus, daher verstehe ich diese Zeile nicht:

              echo "<input type="hidden" name="variable" value="".htmlentities($variable)."">";

              Ich weiss ehrlich gesagt gar nicht, was mir so ein hidden feld bringt :-(

              Könntest du mir die zeile mal erklären ???

              Achja: Anstatt "variable" müsste ich in meinem Fall dann "fehler" nehmen, oder ?

              achja, ein hidden Feld habe ich schon, für den Submit Button, den bracuhe ich, hat mir ein kumpel gesagt:

              echo" <input type="hidden" name="Start" value= "Submit">   ";

              1. Hmm, habe leider erst jetzt angefangen mit Formularen zu arbeiten, und kenne mich da noch net so aus, daher verstehe ich diese Zeile nicht:

                echo "<input type="hidden" name="variable" value="".htmlentities($variable)."">";

                Ich weiss ehrlich gesagt gar nicht, was mir so ein hidden feld bringt :-(

                Ein hidden-Feld ist eigentlich ein ganz normales Formularfeld, wie Felder zur Texteingabe (<input type=text) oder Radioknöpkens (<input type=radio>) auch, nur mit dem kleinen Unterschied, daß ein hidden-Feld eben hidden ist - versteckt, nicht sichtbar.

                Der Sinn solcher Felder ist ganz einfach, mit den anderen Formulardaten, die der Benutzer eingibt, auch andere, schon vorgefertigte Daten zu übergeben. Wie man das einsetzt, erlebst Du gerade: Du hast in Deinem Skript mehrere Variablen, die Du zum nächsten Aufruf des Skriptes "rüberretten" willst. Diese Variablen versteckst Du einfach per hidden-Feld im Formular und bekommst sie dann, wie alle anderen Eingaben des Formulars auch, in $_POST geliefert.
                Siehe dazu auch die SelfHTML-Seite: http://selfhtml.teamone.de/html/formulare/versteckte.htm

                Das htmlentities($variable) dient davon unabhängig dazu, das Problem mit Sonderzeichen zu umgehen, auf das ich bereits bei der URL hingewiesen hatte: Bestimmte Zeichen darf bzw. sollte man in HTML nicht benutzen, dazu gehören insbesondere <, > und &, die alle eine spezielle Bedeutung für HTML haben (Markieren von Tags à la <br> und Marieren von Sonderzeichen à la ö), aber auch so Sachen wie deutsche Sonderzeichen (Umlaute).
                Die PHP-Funktion htmlentities() wandelt diese Zeichen in ihre HTML-Darstellung um, < in <, > in >, & in &, das kleine ö in ö, usw.

                Zusammengefasst wird so aus dem PHP-Code

                $variable="schön & stark";
                  echo "<input type="hidden" name="variable" value="".htmlentities($variable)."">";

                die Ausgabe

                <input type="hidden" name="variable" value="schön & stark">

                Nach dem Absenden des Formulars erhälst Du dann auf der nächsten PHP-Seite in $_POST neben den anderen Formularfeldern auch

                $_POST["variable"]="schön und stark";

                Jetzt hab ich mir soviel Mühe gegeben, jetzt brummt Dir hoffentlich auch der Schädel ;) Tipp: Probieren geht über Studieren.

                Du kannst Dir die Variablen, die PHP übergeben wurden, übrigens mit einem Aufruf der Funktion phpinfo() auflisten lassen (und vieles andere mehr dazu).

                Achja: Anstatt "variable" müsste ich in meinem Fall dann "fehler" nehmen, oder ?

                fehler, menue und frage, genau.

                achja, ein hidden Feld habe ich schon, für den Submit Button, den bracuhe ich, hat mir ein kumpel gesagt:

                echo" <input type="hidden" name="Start" value= "Submit">";

                Na, wenn er meint :) Das hängt von Deinem Skript ab, ob es diese Variable braucht.

                Gruß,
                  soenk.e

          2. Also:

            mal in deutsch erklärt:
            ich hab ne Seite mit einer frage und 3 antwortmöglichkeiten, und nur eine ist richtig, also wenn man was falsches ankreuzt, denn wird eine variable "$fehler[i]=3"  gesetzt. i ist hierbei ein Zähler, der ja, wie man an dem link unten sieht, einen bestimmten wert bekommt.

            So, nun ruft sich die Seite wieder selber auf, und es soll, wenn man wieder was falsch macht, das nachste $feher[i]=3  gesetzt werden, und nach 5 Fragen hole ich die Summe aus dem Array und will sie ausgeben.

            Leider funzt das ber nciht, da $fehler immer den wert 3 hat sobald ich einmal was falsch gemacht habe.

            So, hier der link, OHNE die übergabe von $fehler, da ich davon ausgegangen bin, das wenn ich die seite selber wieder aufrufe, die benutzen Variablen den wert behalten:

            echo" <form  action="main.php?menue=3&frage=3&i=2" method="post">   ";

            Achja, "menue" ist unwichtig, des klappt, und "frage" auch, und des i ist halt der Zähler.

            hi,

            ich an deiner stelle würde alles ins formular schreiben. ungefähr so:

            echo "<form action="main.php" method="post">
            <input type="hidden" name="menue" value="$menue">
            <input type="hidden" name="frage" value="$frage">
            <input type="hidden" name="fehler" value="$fehler">
            <input type="hidden" name="i" value="$i">
            <input type="submit" name="los">";

            einlesen würde ich die variablen am anfang mit:
            $menue = $_POST["menue"];
            $frage = $_POST["frage"];
            $fehler= $_POST["fehler"];
            $i     = $_POST["i"];

            globale variablen werden übrigens bei neuen php-versionen nicht mehr unterstützt, daher sollte man besser auch $fehler übermitteln.

            bjoern

  2. Hai,

    Hab da folgendes Prob:

    Ich habe eine seite, auf der eine Variable einen bestimmten wert bekommt z.B. "2"

    rufe dann eine neue php Seite auf, und möchte nun zu dieser 2 eine 3 hinzuaddieren, wie des addieren und so geht weiss ich, ich weiss nur nicht, wie ich von Seite 1  die Variable zu Seite 2 übergebe.

    ich hoffe ihr versteht was ich meine

    hi,

    übergeben kannst du die variable in der url. du machst einfach einen link statt mit <a href="page2.php">zu page2</a> mit <a href="page2.php?var=<? echo $var; ?>">zu page2</a>

    dann musst du die vaiable noch auf der seite2 einlesen. am besten mit $var = $HTTP_GET_VARS["var"];

    das sollte dir helfen.

    gruss
    bjoern