Christian: Wo is der Fehler?

Hiho,

mit viel Hilfe und großem Gewürge habe ich es hingekriegt Variablen in ein anderes Fenster zu übertragen. Und zwar so:

<?php
 echo "<frame name="rechts"
 src="oben.php?ko1=".rawurlencode($_GET[ko1])."
             &name1=".rawurlencode($_GET[name1])."
          &deutsch1=".rawurlencode($_GET[deutsch1])."
               &fw1=".rawurlencode($_GET[fw1])."
               &kr1=".rawurlencode($_GET[kr1])."">";
?>

geht das genauso wie mit "src" auch mit "a href"?
Wenn ja, was ist hier falsch:

<?php>

....hier steht noch so allerlei, funzt aber alles

for ($i = 0; $i < $num; $i++)
{$row = mysql_fetch_array($result);
?> <?php> echo"<a href="oben.php?ko1=".rawurlencode($_GET[ko1])."
                             &name1=".rawurlencode($_GET[name1])."
                          &deutsch1=".rawurlencode($_GET[deutsch1])."
                               &fw1=".rawurlencode($_GET[fw1])."
                               &kr1=".rawurlencode($_GET[kr1])." target="rechts" "; ?> <?php echo "$row[Art]"; ?></a><br><br>
<?php }

mysql_close($link);
?>

Ich hänge fest und komme nicht weiter:/

  1. <?php
    echo "<frame name="rechts"
    src="oben.php?ko1=".rawurlencode($_GET[ko1])."
                 &name1=".rawurlencode($_GET[name1])."

    Das Zeichen & darf alleine nicht in HTML-Code vorkommen, ersetze alle & und &. Siehe auch http://www.htmlhelp.com/tools/validator/problems.html#amp.

    geht das genauso wie mit "src" auch mit "a href"?
    Wenn ja, was ist hier falsch:

    Falsch ist, daß Du keinerlei Fehlermeldung oder sonst eine nur annähernd brauchbare Fehlerbeschreibung angegeben hast; es artet also wiedermal in fröhliches Rätselraten und Hellsehen aus - "Was will mein Kind mir sagen?" :/

    Aber probieren wir es mal und stochern ein wenig rum:

    <?php>

    ^------------+
                         |
    Was soll das sein? --+

    ?> <?php> echo"<a href="oben.php?ko1=".rawurlencode($_GET[ko1])."

    ^--+
                  |
    Und dieses? --+

    &name1=".rawurlencode($_GET[name1])."

    ^
    Siehe oben. --------------------+

    Ich hänge fest und komme nicht weiter:/

    Ich auch. Nach Deiner Fehlerbeschreibung aber wie gesagt kein Wunder.

    Gruß,
      soenk.e

    1. Ich habe den Fehler gerade gefunden.. im 2. Beispiel muss bei den Ausdrücken wie &deutsch1=".rawurlencode($_GET['deutsch1'])." das deutsch1 in ''. Warum auch immer, so funktioniert es. Die &-Zeichen standen übrigens nicht im HTML-Code, wie man an diesem Zeichen deutlich erkennt ;-)
              |
              |
              |

      <?php
      echo "<frame name="rechts"
      src="oben.php?ko1=".rawurlencode($_GET[ko1])."
                   &name1=".rawurlencode($_GET[name1])."

      Das Zeichen & darf alleine nicht in HTML-Code vorkommen, ersetze alle & und &. Siehe auch http://www.htmlhelp.com/tools/validator/problems.html#amp.

      geht das genauso wie mit "src" auch mit "a href"?
      Wenn ja, was ist hier falsch:

      Falsch ist, daß Du keinerlei Fehlermeldung oder sonst eine nur annähernd brauchbare Fehlerbeschreibung angegeben hast; es artet also wiedermal in fröhliches Rätselraten und Hellsehen aus - "Was will mein Kind mir sagen?" :/

      Aber probieren wir es mal und stochern ein wenig rum:

      <?php>
              ^------------+
                           |
      Was soll das sein? --+

      ?> <?php> echo"<a href="oben.php?ko1=".rawurlencode($_GET[ko1])."
                 ^--+
                    |
      Und dieses? --+

      &name1=".rawurlencode($_GET[name1])."
                                      ^
      Siehe oben. --------------------+

      Ich hänge fest und komme nicht weiter:/

      Ich auch. Nach Deiner Fehlerbeschreibung aber wie gesagt kein Wunder.

      Gruß,
        soenk.e

      die <?php> -Fehler kamen dadurch, dass ich einiges gelöscht habe um mein Posting nicht zu lang werden zu lassen, natürlich war dies kein Problem.
      Vielen Dank für die Mühe.

      1. Ich habe den Fehler gerade gefunden.. im 2. Beispiel muss bei den Ausdrücken wie &deutsch1=".rawurlencode($_GET['deutsch1'])." das deutsch1 in ''. Warum auch immer, so funktioniert es.

        Das ist kein "Wunder", sondern zwingend so vorgeschrieben (du solltest die anderen Vorkommen auch ändern).

        Grund: Der Array-Index ist entweder eine Zahl (Zahlen werden in PHP ohne umgebende Zeichen geschrieben):
        $array[3]

        Oder er ist ein String. Strings werden mit Anführungszeichen geschrieben:
        $array['index']

        Die Index-Angabe kann auch in einer Variablen selbst liegen:
        $index = 2;
        $array[$index] -> Zahlzugriff

        $stringindex = "index";
        $array[$stringindex] -> Stringzugriff

        PHP kann auch Konstanten definieren. Die soll man normalerweise GROSSSCHREIBEN, aber zwingend ist das nicht.
        define ("index", "irgendwas")
        echo index; -> gibt "irgendwas" aus
        $array[index] -> Zugriff auf $array['irgendwas']

        Wenn du also auf $_GET[deutsch1] zugreifst, und keine Konstante "deutsch1" definiert ist, läuft das schief. Warum es trotzdem mal funktioniert, weiß ich nicht - scheint reine Glückssache zu sein. Oder du hast noch nicht gemerkt, dass es auch nicht funktioniert.

        - Sven Rautenberg

        1. Ich habe den Fehler gerade gefunden.. im 2. Beispiel muss bei den Ausdrücken wie &deutsch1=".rawurlencode($_GET['deutsch1'])." das deutsch1 in ''. Warum auch immer, so funktioniert es.

          Das ist kein "Wunder", sondern zwingend so vorgeschrieben (du solltest die anderen Vorkommen auch ändern).

          Grund: Der Array-Index ist entweder eine Zahl (Zahlen werden in PHP ohne umgebende Zeichen geschrieben):
          $array[3]

          Oder er ist ein String. Strings werden mit Anführungszeichen geschrieben:
          $array['index']

          Die Index-Angabe kann auch in einer Variablen selbst liegen:
          $index = 2;
          $array[$index] -> Zahlzugriff

          $stringindex = "index";
          $array[$stringindex] -> Stringzugriff

          PHP kann auch Konstanten definieren. Die soll man normalerweise GROSSSCHREIBEN, aber zwingend ist das nicht.
          define ("index", "irgendwas")
          echo index; -> gibt "irgendwas" aus
          $array[index] -> Zugriff auf $array['irgendwas']

          Wenn du also auf $_GET[deutsch1] zugreifst, und keine Konstante "deutsch1" definiert ist, läuft das schief. Warum es trotzdem mal funktioniert, weiß ich nicht - scheint reine Glückssache zu sein. Oder du hast noch nicht gemerkt, dass es auch nicht funktioniert.

          Es geht tatsächlich in Verbindung mit dem scr-Befehl, ich habe beide Varianten ausprobiert:

          <?php
           echo "<frame name="links"  src="links1.php?ko1=".rawurlencode($_GET[ko1])."&name1=".rawurlencode($_GET[name1])."
                     &deutsch1=".rawurlencode($_GET[deutsch1])."
                          &fw1=".rawurlencode($_GET[fw1])."
                          &kr1=".rawurlencode($_GET[kr1])."">";
          ?>

          <?php
           echo "<frame name="links"  src="links1.php?ko1=".rawurlencode($_GET[ko1])."&name1=".rawurlencode($_GET['name1'])."
                     &deutsch1=".rawurlencode($_GET['deutsch1'])."
                          &fw1=".rawurlencode($_GET['fw1'])."
                          &kr1=".rawurlencode($_GET['kr1'])."">";
          ?>

          Ich hab's jetzt geändert, vielleicht bin ich jetzt nicht mehr auf Glück angewiesen ;-)

          Gruss, Christian

          • Sven Rautenberg
      2. Die &-Zeichen standen übrigens nicht im HTML-Code, wie man an diesem Zeichen deutlich erkennt ;-)
                |
                |
                |

        <?php
        echo "<frame name="rechts"
        src="oben.php?ko1=".rawurlencode($_GET[ko1])."
                     &name1=".rawurlencode($_GET[name1])."

        Ich möchte behaupten, daß Du Dich da aber gewaltig irrst (oder PHP eine mir bisher unbekannte Angewohnheit besitzt, Daten mit echo nicht so auszugeben, wie sie im Quelltext stehen).

        Du gibst doch wohl mit echo den HTML-Code aus, den der Browser später zu sehen bekommt, oder? Dementsprechend muß im Quelltext, den der Browser anzeigt, nach obiger Anweisung folgendes stehen:

        <frame name="rechts" src="oben.php?ko1=ko1_daten&name1=name1_daten [..]

        Und nun erzähle mir bitte nicht, da stehen keine einzelnen & in der HTML-Datei. Wenn Du's nicht glaubst: Lass die Datei vom HTML-Validator unter http://validator.w3.org prüfen, schau Dir die bereits genannte Erklärung unter http://www.htmlhelp.com/tools/validator/problems.html#amp an und befrage die Forumssuche (http://selfsuche.teamone.de) ein wenig hier nach "Validator" und "entity".

        Gruß,
          soenk.e