Joachim: Javascript und werte aus PHP

Hallo,

Ich bin am verzweifeln!

Habe unten eine dynamisch erzeugte Tabelle (PHP) und möchte einen Wert
mit Javascript wieder auslesen und mit GET an eine weitere Seite übergeben.
Ich habe schon etliches gelesen und es heißt auch das dies funktionieren soll.
Aber was ist bei mir falsch??
Die für mich entscheidenden Zeilen habe ich mal mit "***" gekennzeichnet

Danke für Eure Hilfe
Joachim

---------------------

Quellcode:

<script language="javascript">
       function neu_fenster() {
// Kontrolle ob wert vorhanden.
          alert(<? echo $zaehler; ?>);
// Popup bericht1.php öffnen und Wer aus "$bau" an das Textfeld T1 übergeben.
---------------------
***       window.open("bericht1.php?T1=" + document.getElementById('<?PHP $bau; ?>').value, "neues_fenster", "height=550,width=430");}
---------------------
</script>

<?PHP
// Überschrift der Tabelle
       echo "<tr>"."<td width="*" CLASS="inhalthead" align="left">"."   "."Datum"."</td>"."<td width="*" CLASS="inhalthead" align="left">"."Heim"."</td>"."<td width="*" CLASS="inhalthead" align="left">"."Gast"."</td>"."<td width="*" CLASS="inhalthead" align="left">"."Zeit"."</td><td width="*" CLASS="inhalthead" align="left">   "."</td></tr>";
// Die Tabelle
      $weiss = FFFFFF;                                                              //Hintergrundfarbe1
      $gelb = FFFFDF;                                                              //Hintergrundfarbe2
      $zaehler = 0;                                                                //Zähler
      $zeilen = file("../../daten/dat/fbh"."$conf[0]"."_splan");                   //Datei öffnen
      for($i= 0 ; $i < count($zeilen) ; $i++)                                      //in Zeilen aufteilen
          {
           $zaehler++;                                                  //Zähler immer + 1
 $zeilenteile = explode("|",$zeilen[$i]);                               //Zeile in einzelne Zellen aufteilen
 echo "<tr bgcolor='#";                                                 //Ausgabe der Tabelle mit "x Zeilen"
 echo $i%2 == 0 ? $weiss : $gelb;                                       //In der Tabelle die Farbe wechseln.
 $bau = $conf[0].$zaehler;                                              //Konstante für das nächte Fenster
// Ausgabe der Tabelle
 echo "'>"."<td width="*" CLASS="inhalt" align="left">"."   "."$zeilenteile[0]</td>"."<td width="*" CLASS="inhalt" align="left">"."$zeilenteile[1]</td>"."<td width="*" CLASS="inhalt" align="left">"."$zeilenteile[2]</td>"."<td width="*" CLASS="inhalt" align="left">"."$zeilenteile[3]</td><td width="*" CLASS="inhalt" align="left"><input class="mehr" type="image" src="../../img/btn_mehr.gif" onclick="neu_fenster()" title="Spielbericht">"."</td></tr>";
// Textfeld mit dem Inhalt aus "$bau" und der ID "$bau"
---------------------
*** echo "<td width="*" CLASS="inhalt" align="left">"."<form name="formular" action=""><input Id="$bau" type="text" name="T0" size="4" value="$bau"></form></td>";
---------------------
           }
?>

  1. hi,

    ***       window.open("bericht1.php?T1=" + document.getElementById('<?PHP $bau; ?>').value, "neues_fenster", "height=550,width=430");}

    was ist <?PHP $bau; ?> denn für eine schreibweise?

    wenn du den wert einer variablen ausgeben willst, schreibe nicht einfach ihren namen dort hin, sondern nutze ein echo oder print dafür.

    (ja, es gibt auch noch die kurz-schreibweise <? = $bau ?>, aber diese ist eher weniger zu empfehlen.)

    gruss,
    wahsaga

    1. hi wahsaga,

      Danke für Deine schnelle Reaktion.

      <?PHP echo $bau; ?> bringt das gleiche Resultat, der allert bleibt leer.

      Gruss
      Joachim

      1. hi,

        <?PHP echo $bau; ?> bringt das gleiche Resultat, der allert bleibt leer.

        dann ist wohl zu vermuten, dass $bau gar keinen inhalt hat.
        überprüfe dies, in dem du zunächst mal in den HTML-quellcode schaust, ob an der stelle überhaupt was steht.

        anschliessend beginne mi dem debugging :-)

        gruss,
        wahsaga

        1. hi,

          bis dahin ist alles richtig.
          Der Quellcode sieht so aus
          ...<input Id="11" type="text" name="T0" size="4" value="11">...
          ...<input Id="12" type="text" name="T0" size="4" value="12">...
          usw.

          D.h. die "Id" und der "value" Wert werden um eins erhöht, was auch das Ziel ist.

          Wenn ich die ID ändere funktioniert es.
          Nur dan habe ich das Problem das ich im folgefenster nur einen Wert(ID) bekomme.

          javascript
          ...
                    window.open("bericht1.php?T1=" + document.getElementById('spiel').value, "neues_fenster", "height=550,width=430");}
          ....

          php
          ....
           echo "<td width="*" CLASS="inhalt" align="left">"."<form name="formular" action=""><input Id="spiel" type="text" name="T0" size="4" value="$bau"></form></td>";
          ...

          Ich hoffe es ist einigermassen verständlich.

          Gruß
          Joachim

          1. hi,

            Der Quellcode sieht so aus
            ...<input Id="11" type="text" name="T0" size="4" value="11">...
            ...<input Id="12" type="text" name="T0" size="4" value="12">...

            eine ID darf nicht mit einer ziffer anfangen.

            Nur dan habe ich das Problem das ich im folgefenster nur einen Wert(ID) bekomme.

            ich frage mich gerade, wo ich jetzt noch den bezug zu deiner ursprünglichen frage wiederfinden soll ...

            window.open("bericht1.php?T1=" + document.getElementById('spiel').value, "neues_fenster", "height=550,width=430");}

            hier wird genau ein parameter an die adresse angehangen, also kannst auch nicht mehr als einen im folgescript erwarten.

            gruss,
            wahsaga

            1. hi,

              Ok, die ID beginnt nicht mehr mit einer ziffer.
              ..<input Id="sb11" type="text" name="T0" size="4" value="sb11">..
              ..<input Id="sb12" type="text" name="T0" size="4" value="sb12">..
              usw.

              kann es sein, das mein Problem im zu öffnendem Fenster liegt?

              Quellcode

              <html><head><title>Spielbericht</title>
              <link rel=stylesheet type="text/css" href="../../script/general.css">
              <script language="JavaScript" src="../../script/tus.js"></script>
              </head><body>
              <? $conf = file("conf"); ?>
              //------
              <form name="formular"><input Id="spiel" type="text" name="T1" size="20" value="<?php echo $_GET["T1"]; ?>"></form>
              //------
              <table border="0" width="100%" cellspacing="10"><tr><td class="inhalt" width="*">
              <?
               $zeilen = file("../../daten/dat/fbh"."$conf[0]"."_home");
               for($i= 0 ; $i < count($zeilen) ; $i++)
                      {
                $zeilenteile = explode("|",$zeilen[$i]);
                print("<TR><TD CLASS="inhalt">$zeilenteile[0]</TD><TD CLASS="inhalt" align="left">$zeilenteile[1]</TD><TD CLASS="inhalt" align="center">$zeilenteile[2]</TD><TD CLASS="inhalt" align="center">$zeilenteile[3]</TD></TR>");
                      }
              ?>
              </td></tr></table></body></html>

              1. hi,

                kann es sein, das mein Problem im zu öffnendem Fenster liegt?

                weiss man's? was genau _ist_ jetzt dein problem?

                es wird irgendwie immer undurchsichtiger, da hilft auch das posten von php-quellcode ohne weitere erläuterungen wenig.

                gruss,
                wahsaga

                1. hi,

                  Ok ganz von vorne.

                  Ich habe eine dynamisch erzeugte Tabelle mit folgenden Inhalten:
                  Zähler | feld1 | feld2 | feld3 | [input mit onclick]

                  Mit dem Klick auf dem input möchte ich ein neues Fenster (bericht1.php) öffnen, welches ein inputfeld hat und dem möchte ich den Wert von Zähler aus der Tabelle übergeben.

                  Beispiel der Tabelle (Spielplan):

                  Sb11 |  Mi. 06.08 | Heimmannschaft | Gastmannschaft | [button]
                  Sb12 |  So. 10.08 | Heimmannschaft | Gastmannschaft | [button]
                  .
                  .
                  Usw.

                  Klickt ein Anwender jetzt auf die zweite Zeile (button), öffnet bericht1.php und im inputfeld dieser Site sollte der Wert sb12 stehen.

                  Es steht eine Beispiel online, um das vorhaben zu verdeutlichen.
                  http://www.tus-hasbergen.org/DE/fussball/1/_seite1.php
                  Nur der Quellcode ist nicht mehr aktuell, weil ich mittlerweile so viel geändert habe.

                  Danke

                  Gruß
                  Joachim

                  1. hi,

                    Es steht eine Beispiel online, um das vorhaben zu verdeutlichen.
                    http://www.tus-hasbergen.org/DE/fussball/1/_seite1.php

                    bitte </faq/#Q-19> lesen.

                    http://www.tus-hasbergen.org/DE/fussball/1/_seite1.php

                    ach du sch**** kann ich da nur sagen.
                    diese seite hat ja mit HTML so gut wie gar nichts mehr gemeinsam.
                    z.b. tauchen bei mehrere bodies auf, dass das abbsoluter kappes ist, ist dir wohl hoffentlich klar.

                    des weiteren hast du jedem deiner input-felder die ID "spiel" gegeben - eine ID muss aber dokumentweit eindeutig sein.

                    also berichtige das erst mal, und lerne die nötigen HTML-grundlagen, _bevor_ du mit PHP irgendwas zu erzeugen versuchst.
                    (wenn dein aktueller code "besser" aussehen sollte, OK ...)

                    und anschliessend sorge dafür, dass jede input-feld eine eindeutige ID hat, und das diese ID der funktion neu_fenster() bei jedem aufruf passend mitgegeben wird.

                    gruss,
                    wahsaga

                    1. hi,

                      ach du sch**** kann ich da nur sagen.

                      Da hast Du völlig recht, dass kommt davon wenn man schnell eine Site zusammenstellt.
                      Sorry!

                      Habe die Site jetzt überarbeitet und denke man kann erkennen, dass es HTML sein soll. ;-)
                      Gelernt habe ich auch http://www.tus-hasbergen.org/DE/fussball/1/_seite1.php

                      Des weiteren habe ich dafür gesorgt, dass die ID des input-feldes eindeutig ist.

                      Nur leider habe ich ein Problem der Funktion "neu_fenster" diese ID zu übergeben, eigentlich müsste es so funktionieren.
                      function neu_fenster() {
                           window.open("_seite2.php?T1=" + document.getElementById("<? echo $bau; ?>").value, "neues_fenster", "height=550,width=430");
                           }

                      Vielen Dank für Deine ausdauernde Mühe.

                      Gruss
                      Joachim

                      1. hi,

                        Habe die Site jetzt überarbeitet und denke man kann erkennen, dass es HTML sein soll. ;-)
                        Gelernt habe ich auch http://www.tus-hasbergen.org/DE/fussball/1/_seite1.php

                        ok, sieht schon besser aus, auf der grundlage lässt sich weiterarbeiten :-)

                        Nur leider habe ich ein Problem der Funktion "neu_fenster" diese ID zu übergeben, eigentlich müsste es so funktionieren.
                        function neu_fenster() {
                             window.open("_seite2.php?T1=" + document.getElementById("<? echo $bau; ?>").value, "neues_fenster", "height=550,width=430");
                             }

                        nein, das ist immer noch der falsche weg.
                        mit dieser methode schreibst du ja immer noch _eine feste ID_ in den code der funktion rein - somit wird sich diese bei jedem aufruf auf die gleiche ID beziehen. aber das ist doch nicht das, was du willst.

                        was du willst ist, dass die funktion bei jedem _aufruf_ eine andere ID benutzt. also muss sich an den stellen was ändern, wo du die funktion aufrufst. dort musst du ihr einen parameter übergeben.

                        das sähe dann in etwa so aus:

                        <script language="javascript">
                               function neu_fenster(ID) {window.open("_seite2.php?T1=" + document.getElementById(ID).value, "neues_fenster", "height=550,width=430");}
                        </script>

                        so, die funktion erwartet jetzt beim aufruf einen parameter ID, und dieser wird dann innerhalb von getElementById() benutzt.

                        jetzt müssen also noch die _aufrufe_ der funktion angepasst werden:

                        <input class="mehr" type="image" src="../../img/btn_mehr.gif" onclick="neu_fenster('sb11')" title="Spielbericht">

                        du siehst, hier habe ich jetzt eine _spezielle_ ID (hier 'sb11')beim aufruf der funktion über onClick als parameter angegeben.
                        du musst jetzt dafür sorgen, dass an dieser stelle bei jedem datensatz den du ausgibst, die dazu passende ID an dieser stelle im funktionsaufruf als parameter drin steht.

                        gruss,
                        wahsaga

                        1. hi wahsaga,

                          genau so sollte es aussehen.

                          http://www.tus-hasbergen.org/DE/fussball/1/_seite1.php

                          Ich weiß nicht wie ich Dir danken soll, erst einmal für Deine Ausdauer und für Deine super Erklärungen.

                          Also vielen Dank.

                          Gruss
                          Joachim