michi: neues fenster öffnen / werte in url mitgeben??

folgende funktion öffnet ein neues fenster, soweit ist alles klar.

<html><head><title>Test</title>
<script type="text/javascript">
<!--
function NeuFenster() {
 MeinFenster =
 window.open("datei2.htm", "Zweitfenster", "width=300,height=200,scrollbars");
 MeinFenster.focus();
}
//-->
</script>
</head><body>
<a href="javascript:NeuFenster()">Neues Fenster</a>
</body></html>

im link, der das fenster öffnet (<a href="javascript:NeuFenster()">Neues Fenster</a>
) würde ich gerne einige werte mitgeben, die ich mir via php aus einer datenbank in einer schleife ausgeben lasse.
ich stelle mir das so in etwa vor, habe aber keinen schimmer, wie/ob man das so machen kann:

<a href="javascript:NeuFenster()?sql_stay=<? echo $sql; ?>&name=<? echo $name; ?>">Neues Fenster</a>

kann mir jemand sagen, wie das funktioniert?!

dankeschön.

  1. Hallo,

    <a href="javascript:NeuFenster()?sql_stay=<? echo $sql; ?>&name=<? echo $name; ?>">Neues Fenster</a>

    Du kannst Daten an die URL (GET) aber nicht an eine JavaScript-Funktion anhängen. Dort werden Daten als Funktionsparameter übergeben.

    <a href="javascript:NeuFenster(%Funktionsparameter%)">Neues Fenster</a>. Deine Werte solltest du der Funktion als Text übergeben, also <a href="javascript:NeuFenster('<? echo $sql;?>', '<? echo $name; ?>')">Neues Fenster</a>. In der Funktiondefinition gibst du dem Parameter 1 (was auch immer er später sein mag) einen Namen, über welchen du auf seinen Inhalt (clientseitig), innerhalb der Funktion, zugreifen kannst. Gilt natürlich auch für die restlichen Parameter. Diese Namen sind frei wählbar (Es gibt dazu Konventionen, siehe SelfHTML). Innerhalb der JavaScript-Funktion baust du dann die URL (clientseitig) zusammen.

    <script type="text/javascript">
    <!--
    function NeuFenster(sql, name) {
     var url = "datei2.htm?sql_stay=" + escape(sql) + "&name=" + escape(name);
     var wnd = window.open(url, "Zweitfenster");
     wnd.focus();
    }
    //-->
    </script>

    hth
    jonas

    1. <a href="javascript:NeuFenster()?sql_stay=<? echo $sql; ?>&name=<? echo $name; ?>">Neues Fenster</a>

      das funktioniert, jedenfalls tauchen in der leiste im browser die werte auf.

      <script type="text/javascript">
      <!--
      function NeuFenster(sql, name) {
      var url = "datei2.htm?sql_stay=" + escape(sql) + "&name=" + escape(name);
      var wnd = window.open(url, "Zweitfenster");
      wnd.focus();
      }
      //-->
      </script>

      das habe ich so übernommen und angepasst.
      klicke ich nun auf den link, bekomme ich die meldung "fehler auf der seite", anschliessend "fertig".
      woran kann das liegen? an irgendwelchen zeichen? in der variablen sql_stay steckt jedenfalls eine riesen query.

      ich bin eher bei php zuhause, daher stehe ich gerade ziemlich ratlos hinter dem problem..?

      irgendwelche ansätze zur lösung?!

      dankesehr!

      1. Hallo,

        <a href="javascript:NeuFenster()?sql_stay=<? echo $sql; ?>&name=<? echo $name; ?>">Neues Fenster</a>

        das funktioniert, jedenfalls tauchen in der leiste im browser die werte auf.

        Das der Browser es in der Statuszeile anzeigt, heißt noch lange nicht dass es funktioniert. Er (Browser) muß damit auch was anfangen können.

        klicke ich nun auf den link, bekomme ich die meldung "fehler auf der seite", anschliessend "fertig".
        woran kann das liegen? an irgendwelchen zeichen? in der variablen sql_stay steckt jedenfalls eine riesen query.

        Unabhängig davon, dass du mehr PHP schreibst, ist das Resultat ein HTML-Dokument, und deren Aufbau sollte dir bekannt sein. Weiterhin ist es eh nicht geschickt eine SQL-Query auf diese Art un Weise zu versenden bzw. überhaupt zu versenden. Da könnte ja so mancher rumdrehen und gucken was so passiert;) Aber ich will nicht belehren, kann ja sein du setzt es nur lokal bei dir zu Hause ein. Jedenfalls solltest du die Apostrophen, sofern in der SQL-Query vorhanden, maskieren. Sonst weiß der Browser nicht wo der Funktionsparameter endet.

        Beispiel (Resultat):
        <a href="javascript:NeuFenster('select * from dbtable where name='michi'', 'testname')">Neues Fenster</a>

        Und zu guter Letzt, wenn du schon eine Fehlermeldung bekommst, dann kannst du sicherlich auch noch erfahren, in welcher Zeile dieser Fehler ausgelöst wurde. Beim IE auf "Details einblenden" drücken.

        jonas

  2. Hallo, michi,

    Die Lösung, welche dir jonas gezeigt hat, würde ich auch vorschlagen. Ich habe lediglich eine kleine Anmerkung.

    <a href="javascript:NeuFenster()">Neues Fenster</a>

    Diese Konstruktion sperrt Besucher, welche kein JavaScript aktiviert haben oder deren Browser kein JavaScript unterstützen, aus. Besser du änderst sie ein wenig, sodass *jeder* dem Link folgen kann.
    Lies bitte http://home.t-online.de/home/dj5nu/js-popup.html.

    Hier eine dementsprechend abgeänderte Lösung:

    <script type="text/javascript">
    <!--
    function NeuFenster(url) {
     var wnd = window.open(url, "Zweitfenster");
     wnd.focus();
    }
    //-->
    </script>

    <a href="datei2.htm?sql_stay=<?php echo(urlencode($sql)); ?>&name=<?php echo(urlencode($name)); ?>" onclick="NeuFenster(this.href); return false">Neues Fenster</a>

    Mit PHP wird die URI konventionell im href-Attribut konstruiert, mit JavaScript wird dann nur auf diese referenziert (this.href). Der Funktionsaufruf, welcher das Zweifenster öffnet, wird im onclick-Event-Handler untergebracht.

    urlencode macht aus
    select * from dbtable where name='michi'
    select+%2A+from+dbtable+where+name%3D%27michi%27
    Womit die Übermittlung über GET keine Probleme macht - bis auf die Sicherheitsprobleme.

    Grüße,
    Mathias