Mehrere Zeilen gleichzeitig überschreiben?! [SQL]

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

  • Mehrere Zeilen gleichzeitig überschreiben?! [SQL]

    Hallo Leute,

    hab ein Problem und zwar möcht ich auf einer Seite mehrere Datensätze gleichzeitig ausgeben, eingeschlossen mit Checkboxen, Textfeldern etc... und diese dann alle samt mit einem Button überschreiben in der jeweiligen Zeile versteht sich.

    Das Problem an dem ganzen ist das übergeben der Datensätze an den nächsten Query.

    Wenn ich die Daten in einer While bzw. For Schleife auslese, und diese dann per Submit Button übergebe werden ja nur die Daten der letzten Zeile aussgegeben.

    Wie kann ich das also am besten realisieren?
    Muss ich die Daten die ausgelesen wurden zuerst in ein Array zusammenfassen und das dann weiterschicken im Script?
    Steh da echt vor nem Baum...

    Hoffe es kann jemand helfen, kann doch nicht so schwer sein.

    Mfg
    Run

  • #2
    1)du liest die datensätz und gibst sie alle in einer schleife als formularelemente.
    dabei nennst du ab bestens der checkboxen alle mit namen z.b.s

    name='id[]' value='".$sqlergebnis['id'].'"
    ich gehe natürlich dafon aus, dass die id einmalig ist.
    andere datensatz zugehörige Felder nennst du mit dem zusatz von id.
    z.b.s
    echo "<input type=\"text\" name=\"vorname_".$sqlergebnis['id']."\"
    value=\"".$sqlergebnis['vorname']."\" />";
    u.s.w
    2)
    wenn formular angekommen ist
    PHP-Code:
    foreach($_POST['id'] as $id){
    $vorname="vorname_".$id;
    $name="name_".$id;//auf diese weise weiter
    .......
    $query="update table set vorname='".$_POST[$vorname]."' 
    name='"
    .$_POST[$name]."' .......
    where id=
    $id";
    mysql_query($query);
    ...

    Slava
    bituniverse.com

    Kommentar


    • #3
      Danke für die Antwort, allerdings wars nicht ganz das was ich gemeint hatte. Hab mich oben etwas unpräzise ausgedrückt.
      Also ums nochmal zu verdeutlichen.
      Ich möchte mehrere "Datenzeilen" auf einmal speichern/aktualisieren/updaten.. wie immer mans nennen will.

      Bsp: eine Tabelle mit 3 Feldern

      id name email
      1 test1 test1@test2.de
      2 lala lala@lala.com

      Dann will ich diese 2 Zeilen in Textfeldern auslesen, was ich mit einer for-schleife bewirke, und dann möcht ich einen zentralen Submit Button am Ende der Page der ALLE Änderungen auf einmal speichert.

      Das Problem an der Sache... wie mach ich das?

      Ich kann die einzelnen Änderungen in ein Array Speichern:

      mysql_query("SELECT * FROM ...");
      $name = array();
      ...
      for..... {
      $name[] = $row->name
      ...
      //daten auslesen
      }

      echo "$name[0]"; wäre dann "test1", wies oben steht.

      so nun hab ich also aus den Änderungen bzw. aus den Daten die entsprechenden Variablen gemacht, nur wie schreib ich nun ALLE Datensätze auf einmal wieder in die DB rein, so dass aber die Form erhalten bleibt.

      id name email
      1 [gurke] test1@test2.de
      2 lala [mops@gurke.de]

      (die in den [] sind die Änderungen!)

      Hoffe nun jeder kennt sich aus ^^
      Run

      Btw: Rechtschreibfehler und extreme Gramatikfehler sind am Fundamt abzugeben!

      Kommentar


      • #4
        lese bitte aufmerksam was ich dir geschrieben habe.
        das kannst du leicht an deine bedürfnisse anpassen.

        <<nur wie schreib ich nun ALLE Datensätze auf einmal wieder in die DB rein, so dass aber die Form erhalten bleibt.>>

        genau so wie ich dir beschrieben habe, nur
        name='id[]' value='".$sqlergebnis['id'].'"
        schtreibst du in (input type='hiddn' ) und nicht in checkbox
        Slava
        bituniverse.com

        Kommentar


        • #5
          Z.B. die Felder im Formular mit name[0], email[0],name[1], email[1] usw. benennen (name="name[0]") usw.)... und je ein hidden feld id[0], id[1] usw. zufügen.

          Das ermöglicht, die UPDATES in einer Schleife zu machen, auf einen SUBMIT-Knopfdruck.

          http://se2.php.net/manual/en/faq.htm...aq.html.arrays
          http://se2.php.net/manual/de/faq.htm...aq.html.arrays

          Kommentar


          • #6
            Die Namen der Felder/Dropdowns etc. mit [] zum Array hinzuzufügen ist die eine Sache, allerdings funktioniert nichtmal das bei mir.

            Angenommen ich hab ein Dropdown Menü:

            <select name="farben">
            <option value="$ausgabe">$ausgabe</option
            <option ... weitere optionen</option>
            </select>

            Angenommen ich möchte dieses Dropdownmenü nun zum Array hinzufügen bzw in ein Array übergeben, wie mach ich das?

            Habs mit <select name="farben[]"> versucht, ging aber leider nicht.
            Und eine hidden bringt in dem Fall wohl nix, weil wie übergebe ich den Formularwert Farben weiter, solangs nicht abgesendet wurde?

            <input type="hidden" name="farben[]" value="????Farben????">

            Das is doch echt kompliziert..

            Kommentar


            • #7
              sende deine kode als ANHANG
              und bitte kommentare nicht vergessen.
              Slava
              bituniverse.com

              Kommentar


              • #8
                Jetzt funktionierts endlich, zumindest scheints so.

                Wenn ich das Formular absende und die Werte mit

                foreach($_POST['kalenderwoche'] as $kw) {
                echo "$kw<br>";
                }

                auslese, werden die jeweiligen Daten der Zeilen ausgegeben.

                Kann ich die $_POST auch direkt irgendwie ansprechen,
                weil mit $_POST['kalenderwoche[1]'] gehts zB nicht.

                Wobei das nebensächlich ist, wie schreib ich nun die Daten wieder in die Tabelle rein, also richtig!

                $sql = UPDATE.....
                while/for {
                mysql_query($sql);
                }
                oder umgekehrt?

                Lg
                Run

                Kommentar


                • #9
                  rtfm:
                  $_POST['kalenderwoche'][0]

                  worüber soll die schleife iterieren?

                  Kommentar


                  • #10
                    Also mit dem $_POST['kalenderwoche'][COLOR=orange][0][/COLOR] tut sich mal gar nix, also es wird nix ausgegeben.

                    Und wenn ich endlich wissen würde, wie ich nun die Variablen ansprechen kann, als Array, ohne für jedes $_POST eine Whileschleife zu schreiben, wär ich schon weiter...

                    Könnts ja mit einer For schleife probieren und die [] per $count hochzaehlen, würd das gehen?

                    also

                    for($count=1; $count<=$_POST['id']; $count++) {
                    .......$_POST['kalenderwoche'][$count] WHERE id = $_POST['id'][$count]
                    }

                    bleibt aber immer noch die fragen, wo das SQL hin und wo das QUery hinschreiben, habs eben mit

                    SQL
                    FOR {
                    QUERY
                    }

                    probiert, fazit: endlosschleife und sql server im arsch

                    also wie gehts???

                    Kommentar


                    • #11
                      [...] würd das gehen?
                      probiers mal aus.
                      bleibt aber immer noch die fragen, wo das SQL hin und wo das QUery hinschreiben [...]
                      wozu soll die schleife denn dienen? query zusammenzustellen? dann mach das in der schleife - ausgeführt wird dann ein mal außerhalb der schleife.

                      das denken kann ich für dich nicht übernehmen.

                      Kommentar


                      • #12
                        Isses so unverständlich was ich vorhabe mit dem Script?
                        Ich will mehrere Einträge aus verschiedenen Zeilen wieder gleichzeitig in die DB schreiben.

                        Wozu ne Schleife? Tja weils sonst unmöglich ist.

                        $_POST['id'] [COLOR=orangered]!=[/COLOR] Array!

                        Wenn ich bei der Variable ein Echo mache wirds die ID des letzten ausgelesenen Datensatzes wiedergeben.

                        Wenn ich das SQL in eine Schleife stecke und ausserhalb ein Query mache, wirds wohl wieder nur den LETZTEN Datensatz bearbeiten, oder lieg ich da falsch?

                        Wieso kannst mirs nicht einfach erklären wies geht, seit 2 Tagen schei*** mit dem dreck herum und ich komm nicht auf die Lösung, das einzige was ich jetzt hab, dass durch die Endlosschleife vorhin mein Server jetzt im A* is!!!!

                        Kommentar


                        • #13
                          wie sieht deine _korrekte_ query für ein/zwei einträge aus?

                          Kommentar


                          • #14
                            Man hätte Dir schon längst den fertigen Code hinschreiben können, aber dann lernst Du nichts dabei und es ist nicht üblich.

                            Ich kann Dir aber gerne bestätigen, dass es klar ist, was du willst, sogar dass Du drei Themen gebracht hast: name/email, select und Kalenderwoche.

                            Kommentar

                            Lädt...
                            X