Problem mit select-Box

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    ich helf die mal bei problem 1 und 2 (3 ist lediglich der Grund für 1) auf die sprünge:

    1) ist klar weil du das formular abschickst.
    und solange du nach dem neuladen des formulars nicht etwas vorselektierst wird da immer der erste eintrag in der selectbox stehen.

    2)tjo der erste eintrag ist ausgewählt wenn nichts anderes vorselektiert ist.
    Und da onChange "beim Ändern" bzw. "nach dem Ändern" bedeutet passiert nichts wenn du den ausgewählten eintrag (nämlich den ersten) anklickst...

    Jetzt wirst du sagen hey ich habe doch eine funktion die das vorselektieren soll....
    gebe ich den Parameter manuell in die Adresszeile des Browsers ein, klappt es)
    könnte es möglicherweise sein das dein Formular nicht per post versendet wird (was auch deinen undefined index erklären würde)
    Die Milch bleibt ranzig!

    Kommentar


    • #17
      Arg, ich hab doch tatsächlich vergessen method="post" im Formular anzugeben und wundere mich dann warum der Turnierteil nicht übergeben wird...ok, vielen Dank - jetzt bin ich einen Schritt weiter.

      Der code sieht also jetzt so aus:

      PHP-Code:
      echo '<form action="tippen.php" name="formular" method="post"> 
      <p><select size="1" name="turnierteil" onchange="document.formular.submit()" width="250">'



      $sql="SELECT turnierteilID, turnierteil FROM turnierteile"
      $ergebnis mysql_query($sql); 
      while(
      $row mysql_fetch_object($ergebnis)) { 
          echo 
      "<option"
         if (
      $row->turnierteilID == isset($_POST['turnierteil']) ? $_POST['turnierteil'] : 0){
              echo 
      ' selected'
          } 
          echo 
      ' value="' $row->turnierteilID '">'$row->turnierteil '</option>'

      echo 
      '</select></p></form><br />'
      Bleiben jetzt eigentlich nur noch zwei Probleme:

      1)
      Wenn das Formular angewählt wird, habe ich wohl immernoch keinen turnier-Index, sprich ich bekomme die gleiche Fehlermeldung wie anfangs. Erst wenn ich die Select-box betätige, wird über das Formular der turnierteil übertragen und es funktioniert. Deshalb habe ich versucht eine Vorbelegung über

      PHP-Code:
      if ($turnierteil == "")
      {
      $turnierteil 0;

      einzubauen, was das Problem aber leider nicht behoben hat. Ich bekomme dabei in der Zeile "if ($turnierteil == "")" die Meldung "Undefined Index turnierteil"

      2)
      Die Box wählt zwar die richtigen Datensätze aus und ich kann jetzt auch den ersten Eintrag anwählen, aber als aktueller Eintrag wird in der Textbox trotzdem die Beschriftung meines letzten turnierteils angezeigt (passiert immer, außer beim ersten turnierteil)
      Zuletzt geändert von andi234; 18.06.2007, 11:20.

      Kommentar


      • #18
        Original geschrieben von andi234
        Wenn das Formular angewählt wird, habe ich wohl immernoch keinen turnier-Index,
        Natürlich nicht, woher denn auch?
        Zumal du dann noch nicht mal Daten in $_POST haben dürftest, Methode zum Aufrufen der Formularseite wird ja wohl GET sein.
        Erst wenn ich die Select-box betätige, wird über das Formular der turnierteil übertragen und es funktioniert. Deshalb habe ich versucht eine Vorbelegung über

        PHP-Code:
        if ($turnierteil == "")
        {
        $turnierteil 0;

        einzubauen, was das Problem aber leider nicht behoben hat.
        Natürlich nicht.

        Du greifst immer noch auf eine Variable zu, die nicht definiert ist.
        isset/empty nutzen.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #19
          Original geschrieben von wahsaga
          Natürlich nicht, woher denn auch?
          Zumal du dann noch nicht mal Daten in $_POST haben dürftest, Methode zum Aufrufen der Formularseite wird ja wohl GET sein.

          ...ich hab ja im Formular auch method="post" geschrieben, also muss ich die Variablen ja auch mit POST abfangen - und ob ich hier grundsätzlich GET oder POST dürfte doch fast egal sein. Müsste ja zumindest mit beidem gehen.


          Original geschrieben von wahsaga
          Natürlich nicht.

          Du greifst immer noch auf eine Variable zu, die nicht definiert ist.
          isset/empty nutzen.
          Hab es jetzt mit

          PHP-Code:
          if (empty($turnierteil)) {
          $turnierteil 0;

          versucht, klappt aber auch nicht :-(

          Kommentar


          • #20
            Original geschrieben von andi234
            ...ich hab ja im Formular auch method="post" geschrieben, also muss ich die Variablen ja auch mit POST abfangen - und ob ich hier grundsätzlich GET oder POST dürfte doch fast egal sein. Müsste ja zumindest mit beidem gehen.
            Du hast den Einwand nicht verstanden.

            Wie rufst du denn die Seite, auf der sich das Formular befindet, erstmals auf?


            Hab es jetzt mit
            PHP-Code:
            if (empty($turnierteil)) {
            $turnierteil 0;

            versucht, klappt aber auch nicht :-(
            Wozu soll denn das auch gut sein?

            Der Wert, von dem du nicht weisst, ob er übergeben wurde, und dessen Existenz du also abfragen möchtest, hört auf die Bezeichnung $_POST['turnierteil'].
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #21
              @wahsaga

              Ah, jetzt weiß ich was Du meinst. Ich werd mal versuchen beim Aufruf per Parameter einen Anfangswert mitzugeben - kann nur grad aufgrund anderer "technischer Probleme" :-) nicht weiterarbeiten. Ich melde mich auf jeden Fall nochmal wie es ausgegangen ist, bzw. wenn ich doch noch Probleme damit habe, kann aber bisserl dauern.

              Vielen Dank jedenfalls schonmal an euch alle für die Hilfe & Geduld!!

              Kommentar


              • #22
                Original geschrieben von andi234
                Ah, jetzt weiß ich was Du meinst. Ich werd mal versuchen beim Aufruf per Parameter einen Anfangswert mitzugeben
                Falls du einen GET-Parameter im URL meinst - nein, das war nicht gemeint ...
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #23
                  Hallo,

                  sorry, dass ich mich erst jetzt wieder einschalte, aber wegen eines Serverumzugs hat sich das alles etwas verzögert.


                  Original geschrieben von wahsaga
                  Falls du einen GET-Parameter im URL meinst - nein, das war nicht gemeint ...
                  Dann hab ich Dich wohl (mal wieder) falsch verstanden. Mein nächster Versuch wäre dann es so zu machen:

                  PHP-Code:
                  $turnierteil $_POST['turnierteil'];
                  if (empty(
                  $turnierteil)) {
                  $turnierteil 1;
                  }

                  echo 
                  '<form action="test.php" name="formular" method="POST"> 
                  <p><select size="1" name="turnierteil" onchange="document.formular.submit()" width="250">'



                  $sql="SELECT turnierteilID, turnierteil FROM turnierteile"
                  $ergebnis mysql_query($sql); 
                  while(
                  $row mysql_fetch_object($ergebnis)) { 
                      echo 
                  "<option"
                     if (
                  $row->turnierteilID == isset($_POST['turnierteil']) ? $_POST['turnierteil'] : 1){
                          echo 
                  ' selected'
                      } 
                      echo 
                  ' value="' $row->turnierteilID '">'$row->turnierteil '</option>'

                  echo 
                  '</select></p></form><br />'

                  EDIT:
                  Ich bekomme aber weiterhin die Meldung bzgl. der turniernummer beim ersten Ausführen der Selectbox. Und der aktuelle Eintrag in der Selectbox stimmt natürlich auch noch nicht (die richtigen Datensätze werden aber angezeigt). Als aktueller Eintrag wird in der Selectbox immer der letzte (in meinem Fall mit der höchsten Turnierteilnummer) angezeigt.
                  Zuletzt geändert von andi234; 20.06.2007, 11:46.

                  Kommentar


                  • #24
                    Original geschrieben von andi234
                    PHP-Code:
                    $turnierteil $_POST['turnierteil'];
                    if (empty(
                    $turnierteil)) {
                    $turnierteil 1;

                    Hier ist wieder bereits die erste Zeile die, in der du auf eine möglicherweise nicht definierte Variable zugreifst - also bekommst du dann natürlich auch hie rbereits wieder die Meldung.
                    Erst in der nächsten Zeile irgendwas abzufragen, ist als blödsinnig.

                    Noch mal: Mach dir klar, welcher Wert es ist, der möglicherweise nicht vorhanden ist. Dann frage diesen auf Existenz ab, bevor du auf ihn zugreifst.
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #25
                      Hi,

                      wozu sind die ersten Zeilen überhaupt noch gut, wenn Du die Variable $turnierteil jetzt gar nicht mehr verwendest? Sieht mir nach Herumgestocher aus. Ansonsten siehe wahsaga.

                      Wenn Du den Fehler weg hast und die Vorselektion immer noch nicht passt, dann bau Testausgaben in die Schleife.

                      LG

                      Kommentar


                      • #26
                        @wahsaga

                        Ah, danke - ich glaube jetzt hab ich Dich endlich verstanden :-)

                        Mit
                        PHP-Code:
                        if (isset($_POST['turnierteil'])) $turnierteil $_POST['turnierteil'];
                        if (empty(
                        $turnierteil)) {
                        $turnierteil 1;

                        Erscheint jetzt auch die "Undefined Index" - Fehlermeldung nicht mehr.

                        Jetzt hab ich eigentlich nur noch das Problem, dass mir in der Select-Box nicht der wirkliche aktuelle Eintrag, sondern immer nur der letzte, angezeigt wird.

                        Kommentar


                        • #27
                          Hallo kuddeldaddeldu

                          Danke für den Hinweis - hab $turnierteil jetzt in die while-Schleife (siehe unten) gebaut, damit das Abfragen am Anfang auch Sinn macht...


                          Original geschrieben von kuddeldaddeldu


                          Wenn Du den Fehler weg hast und die Vorselektion immer noch nicht passt, dann bau Testausgaben in die Schleife.

                          LG

                          Hab ich grad versucht, aber ich bekomme hierbei meine Testmeldungen nicht ausgegeben:

                          PHP-Code:
                          $sql="SELECT turnierteilID, turnierteil FROM turnierteile"
                          $ergebnis mysql_query($sql); 
                          while(
                          $row mysql_fetch_object($ergebnis)) { 
                              echo 
                          "<option"
                             if (
                          $row->turnierteilID == isset($turnierteil)){
                                  echo 
                          ' selected'
                              } 
                              echo 
                          ' value="' $row->turnierteilID '">'$row->turnierteil '</option>'
                            echo 
                          "aktuelle turnierteilID: ";
                            echo 
                          $row->turnierteilID;

                          echo 
                          '</select></p></form><br />'
                          seltsam...und

                          PHP-Code:
                          echo '<pre>';
                          print_r($turnierteil);
                          echo 
                          '</pre>'
                          hab auch nicht geklappt...
                          Zuletzt geändert von andi234; 20.06.2007, 12:29.

                          Kommentar


                          • #28
                            Hi,
                            Hab ich grad versucht, aber ich bekomme hierbei meine Testmeldungen nicht ausgegeben:
                            Heisst, Deine Selectbox wird auch nicht gefüllt? Dann die DB-Abfrage debuggen.
                            PHP-Code:
                            if ($row->turnierteilID == isset($turnierteil)){ 
                            Och man, jetzt denk doch mal nach, bevor Du irgendwas hin- und herkopierst (Herumgestocher). Was liefert isset? Du willst doch mit dem Inhalt von $turnierteil vegleichen.

                            Kommentar


                            • #29
                              Juhuuuuuuu, jetzt klappt es!!! Na klar, das isset muss weg...weiß garnicht mehr warum das da reingekommen ist, ist ja völliger Blödsinn so!

                              Naja, bin jedenfalls froh, dass es nach 5 Tagen Rumbasteln jetzt endlich funktioniert!!

                              Vielen, vielen Dank für euere Hilfe!!!! (und Geduld *g*)

                              Schönen Tag noch!!

                              Kommentar

                              Lädt...
                              X