Böhle: Variable als Parameter übergeben

Hallo,
ich habe ein Problem, und zwar habe ich eine Variable die ich gerne als parameter für die nächste seite übergeben möchte, dafür hatte ich mir die Variante mit dem Link ausgesucht.
Jetzt mein problem: wenn ich <a href="i.php?vari=$b"> mache, zur erklärung, ich will an Seite i.php die den Parameter vari besitz den Wert aus der Variable b übergeben, zeigt er mir genau dieses auch wieder an... aber nicht den inhalt der Variable $b... es ist zum haare ausraufen...
bitte bitte hilft mir...

MFG
Björn

  1. Hi Björn,

    wie lautet die komplette Zeile? Hast du den href in ein echo Befehl von PHP gepackt, oder nicht. Was passiert, wenn du z.B. in i.php den Befehl

    echo $vari;

    eingibst. Gibt er dir eine Fehlermeldung oder einen Wert aus.

    CU

    Martin

    Hallo,
    ich habe ein Problem, und zwar habe ich eine Variable die ich gerne als parameter für die nächste seite übergeben möchte, dafür hatte ich mir die Variante mit dem Link ausgesucht.
    Jetzt mein problem: wenn ich <a href="i.php?vari=$b"> mache, zur erklärung, ich will an Seite i.php die den Parameter vari besitz den Wert aus der Variable b übergeben, zeigt er mir genau dieses auch wieder an... aber nicht den inhalt der Variable $b... es ist zum haare ausraufen...
    bitte bitte hilft mir...

    MFG
    Björn

    1. er gibt mir den wert aus, das habe ich auch als erstes probiert...
      ich habe die href nicht in einen echo gepackt sondern so ausgegeben.
      das es geht wenn ich einen festen wert übergebe, zum beispiel vari=a dann funktioniert alles wie ich es will...
      aber mit einer variable nicht... warum ???

      1. er gibt mir den wert aus, das habe ich auch als erstes probiert...
        ich habe die href nicht in einen echo gepackt sondern so ausgegeben.

        Hoppla. Erwartest Du allen Ernstes, daß dort, wo garkein PHP-Code steht, irgendeine PHP-Variable existiert, geschweige denn verarbeitet wird?
        Der PHP-Interpreter arbeitet nur in den Bereichen, die mit <?php und ?> bzw. <? und ?> als PHP markiert wurden, alles andere lässt er in Ruhe.

        Gruß,
          soenk.e

  2. Hallo,

    echo '<a href="i.php?vari=' . $b '">Mein erster link</a>';

    du mußt zwischen festem html und php-variablen unterscheiden...

    Odium

  3. wenn ich <a href="i.php?vari=$b"> mache [...] zeigt er mir genau
    dieses auch wieder an... aber nicht den inhalt der Variable $b...

    Wie bitte? Was ist "genau dieses"?

    1. "genau dieses"

      Ah, ich glaube, verstanden zu haben...

      echo '<a href="i.php?vari='.$b.'">'; statt echo '<a href="i.php?vari=$b">';

  4. Jetzt mein problem: wenn ich <a href="i.php?vari=$b"> mache, zur erklärung, ich will an Seite i.php die den Parameter vari besitz den Wert aus der Variable b übergeben, zeigt er mir genau dieses auch wieder an... aber nicht den inhalt der Variable $b... es ist zum haare ausraufen...

    Odium hat schon darauf hingewiesen: Du hast wahrscheinlich

    echo '<a href="i.php?vari=$b">';

    geschrieben? Bedenke, daß in Texten mit einfachen Anführungszeichen keine Variablen von PHP ersetzt werden, das passiert nur in solchen mit doppelten Anführungszeichen. In dieser Art sollte es funktionieren:

    echo "<a href="i.php?vari=$b">";

    Worauf ich aber eigentlich hinweisen wollte:
    Denk daran, daß man nicht alle Zeichen in URLs verwenden kann und Du deshalb $b unter Umständen per urlencode() (http://www.php.net/manual/de/function.urlencode.php) kodieren mußt:

    echo "<a href="i.php?vari=". urlencode($b) ."">";

    Und weil es grundsätzlich falsch gemacht wird: das & hat in HTML alleine _nichts_ zu suchen, also auch nicht in URLs:

    <a href="i.php?vari=123&vary=blabla">

    ist falsch. Siehe http://www.htmlhelp.com/tools/validator/problems.html#amp.

    Gruß,
      soenk.e

    1. Hallo,

      <a href="i.php?vari=123&vary=blabla">

      ist falsch. Siehe http://www.htmlhelp.com/tools/validator/problems.html#amp.

      ich versteh nicht ganz... sieht man doch aber immer so, warum soll das denn auf einmal falsch sein...ich hab den link schon gelesen, kann mir aber nicht erklären warum...

      irgendwo hab ich auch die definition zu urlparametern gelesen...

      der erste paramater wird von der url mit ? getrennt jeder weitere mit &... bitte um erkläreung...

      Odium

      1. Moin!

        ich versteh nicht ganz... sieht man doch aber immer so, warum soll das denn auf einmal falsch sein...ich hab den link schon gelesen, kann mir aber nicht erklären warum...

        irgendwo hab ich auch die definition zu urlparametern gelesen...

        der erste paramater wird von der url mit ? getrennt jeder weitere mit &... bitte um erkläreung...

        Ja, in der _URL_ stimmt das auch. Aber der Browser kriegt die Seite vom Server und ersetzt als erstes alle Entities mit den durch sie gemeinten Zeichen. Dadurch zeigt er Umlaute etc. im Text immer korrekt an (weil die Umsetzung in diese Umlaute je nach Betriebssystem andere ASCII-Codes, aber dadurch immer die korrekten Zeichendarstellungen hervorbringt). Und diese Konvertierung gilt auch für den Inhalt von Attributen, auch vom href-Attribut in Links. Also: Wenn man als Ergebnis ein & haben will, muss man im Quellcode ein & schreiben.

        - Sven Rautenberg

      2. <a href="i.php?vari=123&vary=blabla">

        ist falsch. Siehe http://www.htmlhelp.com/tools/validator/problems.html#amp.

        ich versteh nicht ganz... sieht man doch aber immer so, warum soll das denn auf einmal falsch sein...

        Wenn tausend Leute aus dem Fenster springen, springst Du dann auch? ;)

        ich hab den link schon gelesen, kann mir aber nicht erklären warum...

        Sven hat das zwar schon richtig erklärt, aber trotzdem nochmal ganz kurz:

        In HTML-Quellcode werden Sonderzeichen per & eingeleitet, zum Beispiel ö für ö, ß für ß, > für > und & für &. Da hinter jedem & also eine Sonderzeichenangabe folgt, kann das & niemals alleine im Quellcode stehen.
        Diese Regel gilt im der _gesamten_ HTML-Bereich, also auch beim href-Attribut für <a>.

        Selbstverständlich macht der Browser aber auch dort genau das, was er an anderen Stellen mit diesen &-Dingern ("Entities") auch macht: Er ersetzt sie automatisch durch das richtige Zeichen. Hast Du also

        <a href="i.php?vari=123&vary=blabla">

        im Quellcode stehen, macht der Browser ganz brav daraus die Adresse "i.php?vari=123&vary=blabla" für die Adressleiste.

        Daß es auch anders funktioniert, liegt einfach daran, daß die Browser in diesem Punkt sehr fehlertolerant sind - eben weil's beinahe jeder falsch macht. Davon wird es aber nicht richtiger, ein Gewohnheitsrecht gibt es in HTML schließlich nicht :)

        irgendwo hab ich auch die definition zu urlparametern gelesen...

        der erste paramater wird von der url mit ? getrennt jeder weitere mit &... bitte um erkläreung...

        Das ist nur zur Hälfte ganz korrekt. URL-Parameter werden mit dem Fragezeichen eingeleitet, das stimmt schon, aber was dahinter kommt, ist vollkommen egal. Davon unabhängig wird zur Trennung von einzelnen Parametern zwar gerne das Und (also &) benutzt, aber auch das ist nicht zwingend vorgeschrieben. Das W3C bittet beispielsweise angesichts obigem Dauerfehler darum, statt dem Und das Semikolon zu verwenden:

        <a href="i.php?vari=123;vary=blabla">

        Und das funktioniert auch wunderbar, man muß es nur seinem jeweiligen Skript bzw. dessen Interpreter beibringen; in PHP zum Beispiel mit der (leider in der Anleitung nicht aufgeführten) Einstellung arg_separator.input=";&".

        Gruß,
          soenk.e

    2. dir seien die Füsse geküsst....
      jetzt funktionierts... mit
      echo "<a href="i.php?vari=$b">";
      ich weiss nicht warum die anderen nicht funktioniert haben aber dieses geht... danke