DB-Ausgaben ins Formular (DropDown)

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

  • DB-Ausgaben ins Formular (DropDown)

    Hallo,

    ich habe folgendes Problem:
    In einer DropDown Box möchte ich die Daten (z.B. Name, Vorname) aus meiner Datenbank anzeigen lassen und dies soll dann zur jeweiligen Detailansicht der entsprechenden Person führen (nach id). Allerdings bekomme ich die Datenübergabe in das Optionsfeld nicht hin.

    Hier der Code des Optionfeldes:

    PHP-Code:
    echo
    "<option selected=\"selected\" value=\"detailansicht.php?id=".$row["id"]."\">"$row['Name'], ", "$row['Vorname'], "</option>"
    Nun erhalte ich aber dummerweise nur folgende Anzeige im Optionsfeld (nur ein Feld):
    ", $row['Name'], ", ",$row['Vorname'],"

    Was ist hier flasch?

  • #2
    Da wirst du deine Zeichenkette wohl irgendwo falsch escapen. Hier im Forum siehts ok aus. Wie das mit den Kommata ist, weiß ich jetzt nicht genau, meine aber, das sieht gut aus.

    Kommentar


    • #3
      Davon bin ich ja auch ausgegangen. Habe sogar noch mal meine While usw. überprüft. Stimmt alles (meines Wissens nach)

      Kommentar


      • #4
        Und die Kommas, die nicht in " und " stehen sollen richtig sein??? Du willst Strings verknüpfen und das macht man nicht mit , sondern .
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          KOMMAS?????

          PHP-Code:
          echo
          "<option selected=\"selected\" value=\"detailansicht.php?id=".$row["id"]."\">
          "
          $row['Name'], ", "$row['Vorname'], "
          </option>"

          Sollten doch wohl eher punkte sein

          PHP-Code:
          echo "
          <select name=\"user\">
          <option value=\""
          .$row['id']."\">".$row['Name'].", ".$row['Vorname']."</option>
          </select>
          "

          und danach bei der überprüfung der eingaben (wird ja irgendwo im <form action=""> stehen)

          PHP-Code:
          header("Location: detailansicht.php?id=".$_POST['user']); 
          Gruß
          Uzu

          private Homepage

          Kommentar


          • #6
            Ich habe mal folgenden Versuche gemacht:

            PHP-Code:
            {
            echo 
            "<option selected=\"selected\" 
                      value=\"detailansicht.php
                      ?id="
            .$row["id"]."\">";     
                                    
            echo 
            $row['Name'];     
                        
            echo 
            "</option>"

            Folgende Ausgabe (im Optionsfeld):
            "; echo $row['Name']; echo "
            Zuletzt geändert von ACRDF; 15.05.2008, 11:41.

            Kommentar


            • #7
              Sorry...

              Kommentar


              • #8
                Und die Kommas, die nicht in " und " stehen sollen richtig sein??? Du willst Strings verknüpfen und das macht man nicht mit , sondern .
                Versuch es doch mal, echo arbeitet mit den Kommas so, als wären es mehrere Funktionsparameter. Es handelt sich hierbei um keine Zeichenkettenverknüpfung.

                @ACRDF: Brich doch bitte mal deinen Code um!

                Kommentar


                • #9
                  von PHP-Desaster
                  Versuch es doch mal, echo arbeitet mit den Kommas so, als wären es mehrere Funktionsparameter.
                  ich sollte wiedermal an mich selber
                  Trotzdem ist mir diese Schreibweise echt noch nie untergekommen
                  Es handelt sich hierbei um keine Zeichenkettenverknüpfung.
                  <klugscheiss>
                  echo gibt diese einzelnen Parameter garantiert mittels Stringverkettung aus
                  </klugscheiss>

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Original geschrieben von jahlives
                    echo gibt diese einzelnen Parameter garantiert mittels Stringverkettung aus
                    Nö. Aus zend_language_parser.y:
                    Code:
                    T_ECHO echo_expr_list ';'
                    //...
                    echo_expr_list:
                    		echo_expr_list ',' expr { zend_do_echo(&$3 TSRMLS_CC); }
                    	|	expr					{ zend_do_echo(&$1 TSRMLS_CC); }
                    ;
                    Wenn die einzelnen Kommateile Strings sind, wird jeder einzeln durch die Mangel gedreht (Variablenerstzung etc.). Wenn man statt Komma Stringverkettung benutzt, geschieht das nur einmal. Das und der Overhead durchs mehrfache Aufrufen von zend_do_echo() machen die Kommaschreibweise langsamer.

                    Kommentar


                    • #11
                      @onemorenerd
                      Wenn ich das richtig verstehe, dass wird für jeden Parameter intern ein echo gemacht?
                      -Erklärung übrigens...

                      Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        Original geschrieben von jahlives
                        Wenn ich das richtig verstehe, dass wird für jeden Parameter intern ein echo gemacht?
                        Genau. Das interne echo heißt zend_do_echo().
                        Ich versuche das Gemoppel da oben mal zu erklären.

                        T_ECHO echo_expr_list ';'

                        sagt dem PHP-Parser, wie ein echo-Ausdruck auszusehen hat. Er besteht aus "echo" (das ist der Wert von T_ECHO), einer echo_expr_list und dem Literal ";".
                        Was eine echo_expr_list ist, wird hiermit beschrieben.

                        echo_expr_list:
                        echo_expr_list ',' expr { zend_do_echo(&$3 TSRMLS_CC); }
                        | expr { zend_do_echo(&$1 TSRMLS_CC); }
                        ;

                        So eine echo_expr_list ist also
                        entweder eine echo_expr_list gefolgt von einem literalen Komma und einer expr
                        oder nur eine expr.
                        Wie man leicht sieht, ist das eine rekursive Definition. Deswegen kann man beliebig viele Expressions mit Komma getrennt auf einmal ausgeben.
                        Wenn der Parser nun so eine echo_expr_list findet, ersetzt er sie mit dem was in geschweiften Klammern dahinter steht. Das &$3 und &$1 referenziert den 3. bzw. 1. Teil des vorstehenden Ausdrucks, also in beiden Fällen expr.

                        Kommentar

                        Lädt...
                        X