Ankündigung

Einklappen
Keine Ankündigung bisher.

mehrere Datensätze gleichzeitig bearbeiten

Einklappen

Neue Werbung 2019

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

  • mehrere Datensätze gleichzeitig bearbeiten

    Hallo Zusammen,

    ich habe eine Tabelle mit mehreren Datensätzen, diese Bearbeite ich über ein Formular. Es werden mir alle werte angezeigt, und hinter jeden Zeile ist ein Button mit dem ich die jeweilige Zeile abspeichern kann.

    Das ist aber langsam müssig!

    kann ich alle Daten erst eingeben, in die jeweiligen zeilen, und dann nur einmal auf den button speichern klicken um alle Datensätze zu speichern!

    Kann mir einer sagen wie das geht?

    DANKE für eure Mühe
    skywalkerluk

  • #2
    Hallo skywalkerluk

    Du könntest ein Array erstellen lassen, indem du die Werte änderst...

    so zum beispiel:
    Code:
    <input type="text" name="edit[ #datensatz id ][ #feldname ]" value="keine Ahnung was" />
    und die dann mittels PHP auswerten:
    PHP-Code:
    $edit = ( isset( $_POST'edit' ] ) ) ? $_POST'edit' ] : array( );

    foreach( 
    $edit as $id => $row )
    {
      
    $sql '';
      foreach( 
    $row as $fieldname => $value )
      {
        
    $sql .= ( ( $sql ) ? ', ' '' ) . $fieldname ' = ' $value;
      }
      
    $sql 'UPDATE table SET ' $sql ' WHERE ID = ' . (int) $id;
      
    mysql_query$sql ) or die ( 'Bearbeiten des Datensatzes [#' $id '] fehlgeschlagen' );

    Das ist wie gesagt nur ne Denkhilfe und ist nicht getestet

    Edit: Hab den Php Code ein wenig geändert weil die alte sache nicht funktioniert hätte...

    Kommentar


    • #3
      ja danke, das mit dem arry habe ich mir schon fast gedacht.

      gibt es ne seite die das anständig von, also von anfang an, erklärt.
      muss mich da wohl erst einarbeiten!

      Ceck im moment nur nichts!

      Kommentar


      • #4
        Such Dir einfach ein Tutorial zur Formualrverarbeitung mit php raus. Das Verhalten entspricht in etwa der Verarbeitung einer Multi-Selection oder eines Checkboxfeldes.

        Kommentar


        • #5
          Wofür ein Tutorial? Wenn du dem Feldnamen eckige Klammern mitgibst, wird in PHP ein Array draus - und das willst du ja auch, eine Liste deiner Einträge.


          PHP-Code:
          <html>
          <body>

          <?php if (array_key_exists("username"$_POST)) { print_r($_POST); } ?>

          <form action="" method="post">
          eins: <input name="username[eins]" value="1oneEins"/>

          zwei: <input name="username[zwei]" value="2twoZwei"/>
          <input type="submit"/>
          </form>

          </body>
          </html>
          Ausgabe nach dem Abschicken etwa sowas:
          Code:
          array("username" => array("eins" => "1oneEins", "zwei" => "2twoZwei"))
          Jetzt musst du das nurnoch auf deine Aufgabe umschreiben, ich bin sicher das schaffst du.

          Kommentar


          • #6
            ja danke ihr habt schon recht, aber muss ich das nicht irgendwie dynamisch gestalten.

            Also ich muss doch dann erst die anzahl der Datensätze auslesen, dann mithilfe einer schleife ausgeben uns sowas oder???

            Kommentar


            • #7
              dafür gibts die foreach () Schleife

              Kommentar


              • #8
                Hallo zusammen
                Ich kapere mal diesen Thread, dann muss ich keinen neuen erstellen und das Thema scheint auch zu passen, ergo:

                Ich will mehrere Datensätze, sagen wir mal n Datensätze per Formular in die Datenbank eingeben.

                Ergo mach ich mir im Eingabeformular ein script, dass mir n Datenmasken untereinander ausgibt und die Variable jeweils mit n durchnummeriert (item_ID1,item_NAME1 ; item_ID2,item_NAME2 ; item_IDn,item_NAMEn).

                Soweit sogut.

                Meine Frage lautet nun, wie ich jetzt mein Script bastel ,das mit den Kram in die Datenbank schreibt.

                Ich nehme mal an mit ner Durchzählvariblen und der Schleife, zb while $DZV < n.

                Aber klappt das dann auch das ich als item_ID dann $_POST[item_ID1] oder 2 oder 3 bekomme ?



                Wenn ichs mir recht überlege ist die Frage glaube ich , wie ich meine schöne Durchzählvariable $DZV in das Array reinbekomme.

                Hilfe

                Kommentar


                • #9
                  Falscher Ansatz.

                  Benutze statt dessen Formelemente mit mehrdimensionalen Namen. Im Resultat findest Du ein nettes Array im $_POST, das man mit foreach verarbeiten kann.

                  Weiterer Vorteil: Willst Du Datensätze bearbeiten (statt neu eingeben) kann als Schlüssel des name Attributs auch die unique DB ID des Datensatzes herhalten...

                  Kommentar


                  • #10
                    Da muss ich nikosch recht geben. Ein Beispiel habe ich bereits in diesem Thema gepostet. Guck es dir einfach mal an.

                    Kommentar


                    • #11
                      okay ich denke, ich verstehe das einspeißen in die Datenbank, aber nicht mehr das Formular, so komisch das auch klingt.

                      was muss ich jetzt bei der formularerstellungsschleife bei name='' eintragen?

                      [$DZV]item_ID ?

                      Kommentar


                      • #12
                        Hallo Das Devil,

                        das steht auch in meinen Posting.

                        Am einfachsten ist es, wenn es um Datensatz änderung geht, ein Formular so aufzubauen:

                        Code:
                        <form action="edit.php" method="post">
                        <input type="text" name="edit[#ID][#feldname]" value="Test" />
                        <input type="submit" name="send" value="Änderungen speichern" />
                        </form>
                        #ID musst du mit der Datensatz id austauschen und
                        #feldname ersetzt du einfach mit dem Tabellen-Feld namen.

                        Dann kannst du das Script, was ich gepostet habe, verwenden.

                        Kommentar


                        • #13
                          Hier muß aber u.U. doppelt auf SQL Injection geachtet werden.

                          Kommentar


                          • #14
                            Hey Leute,

                            ich hab immer noch das selbe Problem.

                            hier noch die details und Struktur meiner Dateien:

                            Datei Spieler:
                            PHP-Code:
                            <form action="../tests/erfassen.php" method="post"> 
                            <table  width="600" border="0" align="left" cellpadding="0" cellspacing="0"> 
                            <?PHP
                                $sql 
                            "SELECT * FROM tests";
                                
                            $result mysql_query($sql) OR die(mysql_error());
                                while(
                            $row mysql_fetch_assoc($result)) 
                                { 
                            ?>
                                <tr>
                                  <td width="100"><input name="id"             size="1"  value="<?PHP echo $row['id'];?>" type="text"/></td>
                                  <td width="100"><input name="name"         size="20" value="<?PHP echo $row['name'];?>"/></td>
                                  <td width="100"><input name="vorname"     size="20" value="<?PHP echo $row['vorname'];?>"/></td>
                                  <td width="100"><input name="spielminuten"size="10" value="<?PHP echo $row['spielminuten'];?>"/></td>
                                  <td width="100"><input name="bild"         size="20" value="<?PHP echo $row['bild'];?>"/></td>
                                  <td width="100"><input type="submit"         name="eintragen" value="aendern" /> </td>
                                </tr>

                            <?PHP ?>

                            </table>
                            </form>
                            und nun die Datei erfassen:
                            PHP-Code:
                            <?php
                            $eintragen
                            =$_POST['eintragen'];
                            $id=$_POST['id'];
                            $vorname=$_POST['vorname'];
                            $name=$_POST['name'];
                            $spielminuten=$_POST['spielminuten'];
                            $bild=$_POST['bild'];

                            //Verbindung mit DB

                            if ($eintragen=='aendern'){
                            $sql="UPDATE tests SET name = '$name', vorname ='$vorname', spielminuten ='$spielminuten', bild='$bild' WHERE id = '$id' ";
                            echo 
                            "Der Beitrag wurde geändert! 
                            "
                            ;
                            }
                            echo 
                            $sql;

                            mysql_query($sql);
                            mysql_close();
                            ?>
                            das ganze seht ihr übrigens hier: http://www.we-believe.de/tests/spieler.php

                            nach meiner Art muss ich jetzt aber jeden spieler einzeln bearbeiten und dann auf ändern klicken.

                            mit dem array check ich das nicht um alles auf einmal zu machen.

                            wer hat einen tipp? Ich hab schon das array studiert komm aber nicht dahinter?

                            Danke für eure Hilfe!
                            Luk

                            Kommentar

                            Lädt...
                            X