Dropdown

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

  • #16
    du solltest ein solches select + hidden input feld aufbauen:
    bsp id 20 / also 20te select-box

    Code:
    <select id="sel_20" onchange="DeineFunctionImHeader(document.getElementById('hid_20').value,this.value)">
       <option value="neu">....</option>
       <option value="gebraucht">....</option>
       ...
    </select>
    <input type="hidden" id="hid_20" value="neu"></input>
    <!-- neu = istzustand aus db -->
    damit müsste deine function beide werte bekommen.
    func im header ungefähr so:
    Code:
    function DeineFunctionImHeader(originalwert,neuwert)
    {
     alert ("original: "+originalwert+" , neu: "+neuwert);
    }
    **********
    arkos
    **********

    Kommentar


    • #17
      SOOOO DANKESCHÖN... ich habe mein Ziel fast erreicht.
      Habe das ganze nun mit einer ConfirmBox in JS gelöst.

      PHP-Code:
      <script type="text/javascript">
      function 
      Box(status) {
      var 
      answer confirm("Sind Sie sich sicher, dass Sie den Status auf " status " ändern möchten?");
      if (
      answer)
      [
      B]HIER MUSS WAS HIN[/B
      else
      location.reload()
      }
      </
      script
      Reload muss sein, damit wenn der Userabbrechen drück, der Ursprungsstatus wieder steht. (Also wenn jemand auswählt von Neu auf Gebraucht, würd ja beim Abbrechen drücken trotzdem noch Gebraucht da stehen.)

      Nun kommt die Frage der Fragen. Wie komme ich von JS wieder zu meiner PHP UPDATE Funktion? Die den Status dann wirklich in der DB ändert?!

      Kommentar


      • #18
        Wenn du false zurückgibst sollte der alte Wert wiederhergestellt werden. Ansonsten gibst du true zurück und sendest das Formular nach allen Änderungen wieder ab (ein einfaches return confirm ( ... ) reicht eigentlich schon).
        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

        Kommentar


        • #19
          Original geschrieben von Revolverheld
          PHP-Code:
          <script type="text/javascript">
          function 
          Box(status) {
          var 
          answer confirm("Sind Sie sich sicher, dass Sie den Status auf " status " ändern möchten?");
          if (
          answer)
          [
          B]HIER MUSS WAS HIN[/B
          else
          location.reload()
          }
          </
          script
          allerdings hast du in der lösung nun nicht den aktuellen status beachtet. siehst du davon nun ganz ab?
          **********
          arkos
          **********

          Kommentar


          • #20
            Wieso das ganze mit einem hidden Field lösen? Einfacher geht es doch, wenn der Funktion 2 Parameter übergeben werden.
            PHP-Code:
            function Box(status,oldStatus) {
            var 
            answer confirm("Sind Sie sich sicher, dass Sie den Status von "+oldStatus+" auf " status " ändern möchten?");
            if (
            answer) {
             
            document.getElementById('Formularname').submit(); //Hier wird das Formular abgeschickt
             
            return true//Der Vollständigkeit halber :-)
            }
            else {
             return 
            false;

            Den ersten kann er dann mit php direkt reinschreiben...wieso kompliziert....

            Der Ablauf ist dann wie folgt:
            Der Benutzer ändert einen Wert
            1. Wird bestätigt
            - Formular wird mit dem neuen Wert abgeschickt und kann dann mit deiner PHP UPDATE Funktion ausgewertet werden
            - Seite wird mit den neuen Werten geladen, da der neue Wert nun in der DB steht
            2. Wird nicht bestätigt
            - formular wird nicht abgesendet
            - Wert wird nicht geändert, da return false...(s. tontechnikers Beitrag)

            Es bleibt jetzt dir überlassen, ob du für jedes Select ein eigenes Formular machst, oder ob du ein Formular für alle Selects machst...
            letzterer Fall wäre etwas redundant, da alle Selects bearbeitet werden, im ersten Fall müsstest du halt die Id übergeben, die geändert werden muss.

            Der Aufruf der JavaScript Funktion erfolgt in jedem Fall über:
            PHP-Code:
            <?php
            //...
            echo '<select onchange="return Box(this.value,\''.$db->line['status'].'\')">';
            //...
            ?>

            Kommentar


            • #21
              du hast vollkommen recht. auf die einfache lösung, den istzustand gleich in den js-aufruf zu schreiben bin ich zu diesem zeitpunkt gar nicht gekommen... tze
              **********
              arkos
              **********

              Kommentar


              • #22
                Super ich habe es nun ergänzt.
                Mein Problem ist nun bei dem Formular, wie überge ich erstens den Wert Status und zweitens wie ordne ich es nun wieder dem Artikel zu? Wenn ich ein globales Formular habe in der ich das update vornehme?

                PHP-Code:
                document.getElementById('Formularname').submit(HIER DIE WERTE REIN ID STATUS); 
                Wenn es fertig ist stelle ich das Script dann online (also zum downloaden) (=
                Zuletzt geändert von Revolverheld; 19.09.2007, 11:09.

                Kommentar


                • #23
                  mal ehrlich. hier wurden dir nun ziemlich gute hilfen gegeben. es wäre nun schön, wenn du dir das, was dir hier geliefert wurde, solange anschaust und nachvollziehst, bis du es verstehst.

                  wenn du es verstanden hast, wird dein jetziges problem keins mehr sein.

                  das is nicht bös gemeint, aber meiner meinung nach bringt es dir auch nichts, wenn wir dir hier alles "fertigschreiben"...
                  **********
                  arkos
                  **********

                  Kommentar


                  • #24
                    So...ich werd mal ein paar Links posten, die dir hoffentlich helfen, das ganze abzuschließen...

                    Schau nach, wieso dein PseudoCode nicht funktionieren kann:
                    JavaScript submit() Funktion

                    Mach dich damit vertraut, wie Formulardaten - insbesondere Auswahllisten - übertragen werden:
                    Formularverarbeitung

                    Wenn du dein Formular erst einmal soweit hast, dass es sich absendet, gib dir z.B. über var_dump($_POST) die übermittelten Daten aus, um zu sehen, wie du damit umgehen kannst.

                    Ich empfehle dir bei einem "globalen" Formular, allen Selects den selben Namen als Array mit der ID als Index zu geben. z.B.
                    PHP-Code:
                    <?php
                    //...
                    echo '<select name="Auswahl['.$db->line->id.']" ...>';
                    //...
                    ?>
                    Mit den Links und Tips sollte es lösbar sein. Falls nicht, wird deine nächste Frage sicher konkreter ausfallen und nicht mehr darauf abzielen, fertigen Code serviert zu bekommen...
                    Das Forum sollte wirklich nur die Fragen klären, die nicht in angemessener Zeit über Goggle und Manual zu klären sind...

                    Kommentar


                    • #25
                      So ich habe nun wieder weiterversucht das ganze hinzubekommen, bisher erfolgslos!

                      Es hapert noch erheblich bei der übergabe der Werte in onchange

                      '<select id="'.$selcounter.'" onchange="return Box(this.value,'.$line->status.')">';

                      Wenn ich nur this-value übergebe dann gehts, aber das ist ja nicht mein Ziel!
                      '<select id="'.$selcounter.'" onchange="return Box(this.value)">';

                      Auch mit dem Formular bin ich noch nicht wirklich weitergekommmen. Da ich bis jetzt noch nicht geschafft habe von JS-Teil die Werte weiter zu bekommen. Klar ist eine fertige Lösung nicht immer da richtige, aber ich komm hier einfach weiter und brauch einfach mal was woran ich mich orientieren kann.

                      Kommentar


                      • #26
                        Original geschrieben von Revolverheld


                        '<select id="'.$selcounter.'" onchange="return Box(this.value,'.$line->status.')">';

                        Wenn ich nur this-value übergebe dann gehts, aber das ist ja nicht mein Ziel!
                        '<select id="'.$selcounter.'" onchange="return Box(this.value)">';
                        [/B]

                        was geht nicht??? ordentliche fehlerbeschreibungen sind das a und o...
                        hab nämlich heute frei, und glaskugel und kartenlege-set hab ich in deer firma
                        **********
                        arkos
                        **********

                        Kommentar


                        • #27
                          Du musst bei der JavaScript Variablenübergabe Strings ebenfalls als solche maskieren:

                          '<select id="'.$selcounter.'" onchange="return Box(this.value,\''.$line->status.'\')">';

                          sonst würde er eine Variable annehmen, die es nicht gibt...

                          btw.: Schau bitte immer erst in die JavaScript Fehler-Konsole und gib den Inhalt als Fehlerbeschreibung an. Wenn nichts drin steht, darfst du das natürlich auch mitteilen...das erleichtert hier allen die Arbeit und spart Zeit.
                          Zuletzt geändert von ZombieChe; 26.09.2007, 11:05.

                          Kommentar

                          Lädt...
                          X