Dropdown

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

  • Dropdown

    Hallo,

    also ich habe folgendes Problem und zwar habe ich eine DB in der Artikel drin sind. Zu jedem Artikel gibt es einen Zustand: Neu, Gebraucht, Alt. Nun werden bei meiner Abfrage alle Artikel schön angezeigt. Jetzt möchte ich gerne, dass der Status nicht mehr in Textform angezeigt wird, sondern in einem DropDown-Menü.
    Und zwar möchst ich gerne, dass das DropDown-Menü auf der Zustand steht, in dem sich der Artikel grad befindet. Zudem soll man den Status ganz leicht ändern können und zwar stelle ich mir das wie folgt vor. Man wählt aus dem Menü einen anderen Punkt aus (Bsp: Zustand ist akt. gebraucht und soll als defekt gemeldet werden) wählt aus und wenn man die Maus dann loslässt kommt eine Box ("Wollen Sie wirklich ändern" ABBRECHEN | OK), beim OK klick wird das dann in der DB übernommen.

    PHP-Code:
    <p><select name="Status" size="1">
    <
    option value="neu">neu</option>
    <
    option value="gebraut">gebraucht</option>
    <
    option value="defekt">defekt</option>
    </
    select></p

  • #2
    http://de.selfhtml.org/html/referenz...nte.htm#option
    messagebox geht nich in php
    status ändern in der DB: UPDATE

    Kommentar


    • #3
      und wo ist nun das Problem? Du musst schon genau sagen wo dein Problem liegt. Ich glaube nicht das hier jemand dir den Code reincodet.

      Kommentar


      • #4
        Nein ich brauche einen fertigen Code.
        Also ich versuche es mal anders zu erklären ;-)

        Also mein Problem ist zu jedem Datensatz wird ein Status gespreichert (Neu, Gebraucht, usw). Nun gebe ich alle Datensätze in einer Tabelle aus. Alles kein Problem! Mein Problem ist nun nur, dass ich den Status nicht in Textform ausgeben möchte. Sondern stelle ich mir das so vor, dass es das Dropdown-Menü gibt (1. <option>Neu, 2. <option>Gebraucht). In der Datenbank ist der Status in Textform gespeichert. Nun möchte das aktuelle Status oben im Dropdown-Menü steht (Zum Beispiel bei einem gebrauchten Artikel soll das Menü wie folgt aussehen 1. <option>Neu, 2. <option selected="selected">Gebraucht. Wenn der neu wäre sollte 1. <optionselected="selected">Neu, 2. <option>Gebraucht) stehen.

        Wenn das klappen würde dann wäre ich schonmal einen großen Schritt weiter. Im Moment versuche ich es mit einer IF-Else, aber das klappt nicht =(

        Kommentar


        • #5
          "... das klappt nicht" ist keine Fehlerbeschreibung, zeig doch mal deinen Versuch, fertigen Code ohne Grundlage wirst du hier sicher nicht bekommen.
          Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

          Kommentar


          • #6
            Hallo,

            ich glaube was Du suchst sind Event-Handler von Auswahllisten. Dort gibt es z.B. "onchange" mit dem Du bei einer Änderung der Auswahl, ohne weiteren Code, ein Javascript oder eine URL aufrufen kannst.

            So in der Art: <input type="....... onchange="{CODE|URL}" />

            Schau mal in einer HTML-Referenz nach. Über die aufgerufene URL wird dann z.B. der Datensatz aktualisiert.

            Kommentar


            • #7
              PHP-Code:
                  if(Gebraucht == $line->status) { $status_1 'selected="selected"'; }
                  elseif(
              Neu == $line->status) {$status_2 'selected="selected"'; }
                  elseif(
              Defekt == $line->status) {$status_3 'selected="selected"'; }
                  
              echo 
              '    <td><select>    <option value="Gebraucht" '.$status_1.'>Gebraucht</option>';
              echo 
              '    <option value="Neu" '.$status_2.'>Satz / Neu</option>';
              echo 
              '    <option value="Defekt" '.$status_3.'>Defekt</option></select></td>'
              Sooo der Code, leider klappt es so NICHT!

              Kommentar


              • #8
                1. Da der Status wohl als String aus der DB kommt, solltest du auch den Vergleich auf einen String machen ("...").
                2. Lass dir $line->status doch mal ausgeben
                3. Schau, was dir der Quelltext sagt.

                Das ist kein Problem, das man mit einer einfachen Testausgabe nicht alleine lösen könnte...bzw. könnte der Terminus "klappt...nicht" durch eine für uns weitaus präzisere Aussage ersetzt werden.

                Hier noch ein kleiner Schnipsel für dich (nicht getestet), falls du mit deinem Code unzufrieden sein solltest^^:

                PHP-Code:
                <?php
                $status 
                = array("Gebraucht"=>"Gebraucht",
                                
                "Neu"=>"Satz / Neu",
                                
                "Defekt"=>"Defekt");
                //...
                    
                echo '<td>';
                // echo $line->status; //Testausgabe könnte hier stehen...
                    
                echo '<select>';
                    foreach (
                $status as $dbstatus => $display) {
                        echo 
                '<option value="'.$dbstatus.'"';
                        if (
                $dbstatus == $line->status) echo ' selected="selected"';
                        echo 
                '>'.$display.'</option>';
                    }
                    echo 
                '</select>';
                    echo 
                '</td>';
                ?>
                für dein zweites Problem, schau - wie erwähnt - beim onchange event Handler nach (z.B. SelfHTML). Der könnte z.B. das Formular abschicken, wodurch du den neuen Status verarbeiten kannst...
                Zuletzt geändert von ZombieChe; 17.09.2007, 12:02.

                Kommentar


                • #9
                  Original geschrieben von tontechniker
                  "... das klappt nicht" ist keine Fehlerbeschreibung, ...
                  Original geschrieben von Revolverheld
                  Sooo der Code, leider klappt es so NICHT!
                  grrr... beschreib deinen fehler besser....!!!

                  zum beispiel könntest du folgendes machen. den leuten hier

                  a) eine php-fehlermeldung geben (falls vorhanden)

                  oder b) den vom code produzierten quelltext posten - also das ergebnis.

                  so.
                  mahlzeit!
                  **********
                  arkos
                  **********

                  Kommentar


                  • #10
                    So mit dem Codeschnipsel von ZombieChe hat Teil 1 geklappt.
                    WUNDERBAR - DANKESCHÖN!

                    Nun probiere ich grad mit der Java Script Confirmbox rum. Das klappt bisher auch!
                    Rufe im Moment über über Onchange eine JS-Funktion die ich im Head definiert habe.
                    Nun haben sich wieder zwei neue Probleme aufgetan (-;

                    1) Werteübergabe: Ich möchte gerne den aktuellen Wert und den ausgewählten Wert übergeben.

                    PHP-Code:
                    confirm("Sind Sie sich sicher, dass Sie den aktuellen Status von NEU auf GEBRAUCHT ändern möchten?"); 
                    nun sollen natürlich NEU und GEBRAUCHT Variablen sein und vom Dropdownmenü übergeben werden.

                    2) Da ich ja eine Confirmbox habe werd ich wohl mit IF arbeiten. Bei false (also abbrechen) wird alles abgebrochen und bei true soll die DB geändert werden (update).

                    Kommentar


                    • #11
                      Ich möchte gerne den aktuellen Wert und den ausgewählten Wert übergeben.
                      Dann musst du wohl eine Var einführen, worauf du den alten Wert speicherst (weil im Moment des Events des onchange exisitert dieser Wert dann nicht mehr)
                      Den ausgewählten Wert kriegst du z.B.
                      Code:
                      var wert = document.getElementById('DeinSelect').value;
                      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
                        PHP-Code:
                        var wert document.getElementById('DeinSelect').value 
                        Das ist ja das Problem. Ich habe nun ca. 20 Dropdowns untereinander, welche ja auch alle den gleichen Namen und zum Teil die gleichen Werte haben.

                        Ich lese ja die Datensätze aus der DB in Form einer Tabelle aus.
                        Dort werden dann alle Artikel angezeigt (Textausgabe) und ich möchte nun dem User ermöglichen direkt in der Tabelle via dem Dropdown-Menü den Status der einzelnen Artikel zu ändern.

                        Kommentar


                        • #13
                          Ich habe nun ca. 20 Dropdowns untereinander, welche ja auch alle den gleichen Namen und zum Teil die gleichen Werte haben.
                          20 Optionen oder 20 Selects ? Du musst einfach jedem Select ne ID verpassen und im jeweiligen onchange auf die entsprechende ID zugreifen.
                          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


                          • #14
                            Das sind ja ca 20 Artikel und jeder Artikel hat einen eigenen Status. Also auch 20 <selects>.
                            Wie soll ich die ID dann zum JS übergeben?

                            Kommentar


                            • #15
                              Original geschrieben von jahlives
                              20 Optionen oder 20 Selects ? Du musst einfach jedem Select ne ID verpassen und im jeweiligen onchange auf die entsprechende ID zugreifen.
                              dennoch wird er dabei nur den neuen wert bekommen. also muss er wohl noch jede selectbox mit zb nem hidden-field ausstatten, um auch den original-zustand als variable zu bekommen...
                              **********
                              arkos
                              **********

                              Kommentar

                              Lädt...
                              X