Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mehrere Datensätze in Datenbank updaten

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Mehrere Datensätze in Datenbank updaten

    Hallo bin neu hier und habe ein großes Anliegen!

    Ich habe hier einen Screenshot gemacht:

    Darauf ist ein Formular zu erkennen, in das die Datensätze aus der MySQL-Datenbank ausgelesen werden. Mit einem Klick auf "In Datenbank speichern" sollen alle Datensätze aus dem Formular in die Datenbank mit einem UPDATE Befehl aktualisiert werden. Bei mir wird allerdings immer nur der letzte Datensatz eingetragen. Hier noch der Code:

    PHP-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Termine Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    <?php

        
    // Mit der Datenbank verbinden
        
    $connect mysql_connect"localhost""webuser""web_database" );
        
    $db mysql_select_db"web" );
        
        if( isset( 
    $_REQUEST['hidden'] ) && $_REQUEST['hidden'] == "send" ) {
            
            
    $que "UPDATE termine_neu SET Von='".$_REQUEST['form_von']."', Bis='".$_REQUEST['form_bis']."', Termin='".$_REQUEST['form_termin']."', Schueler='".$_REQUEST['form_schueler']."', Lehrer='".$_REQUEST['form_lehrer']."', RP='".$_REQUEST['form_RP']."' WHERE ID='".$_REQUEST['form_id']."'";
        
            
    $res mysql_query$que );

        }
        
        
    $query "SELECT * FROM termine_test ORDER BY Von asc";
        
    $result mysql_query$query );
        
    $num mysql_num_rows$result );
        
    ?>

    <form name="form_termine_<?php echo $datensatz['ID']; ?>" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <table width="775" border="0">

    <?php

        
    for( $i=0$i<$num$i++ ) {
            
    $datensatz mysql_fetch_array$result );

    ?>
        <tr>
          <td width="20">ID</td>
          <td width="107">Von</td>
          <td width="107">Bis</td>
          <td width="459">Termin</td>
          <td width="14">S</td>
          <td width="14">L</td>
          <td width="24">RP</td>
        </tr>
        <tr>
          <td><?php echo $datensatz['ID']; ?></td>
          <td><input name="form_von_<?php echo $datensatz['ID']; ?>" type="text" size="15" value="<?php echo $datensatz['Von']; ?>"></td>
          <td><input name="form_bis_<?php echo $datensatz['ID']; ?>" type="text" size="15" value="<?php echo $datensatz['Bis']; ?>"></td>
          <td><input name="form_termin_<?php echo $datensatz['ID']; ?>" type="text" size="64" value="<?php echo $datensatz['Termin']; ?>">
          <input name="form_id_<?php echo $datensatz['ID']; ?>" type="hidden" value="<?php echo $datensatz['ID']; ?>"></td>
          <td><input name="form_schueler_<?php echo $datensatz['ID']; ?>" type="text" size="2" value="<?php echo $datensatz['Schueler']; ?>"></td>
          <td><input name="form_lehrer_<?php echo $datensatz['ID']; ?>" type="text" size="2" value="<?php echo $datensatz['Lehrer']; ?>"></td>
          <td><input name="form_RP_<?php echo $datensatz['ID']; ?>" type="text" size="2" value="<?php echo $datensatz['RP']; ?>"></td>
        </tr>

        <?php ?>
        </table>
        

        <input name="form_save" type="submit" value="In Datenbank speichern">
        <input name="hidden" type="hidden" value="send">
    </form>
      
    </body>
    </html>
    Ich hoffe ihr könnt mir helfen.
    Liebe Grüße Thomas

  • #2
    du musst bei dem Updaten auch eine while(); bzw. for(); schleife einbauen. sonnst wird immer nur der letzte datensatz geändert.

    Kommentar


    • #3
      Und wie mach ich das, damit nicht zum Beispiel dreimal der selbe Datensatz geändert wird, sondern ID=1, ID=2, ID=3,...

      Kommentar


      • #4
        Weiß das keiner? Ich brauche das dringend...

        Kommentar


        • #5
          hier ein Muster, das ich mal irgendwo gefunden habe:
          Code:
          /* ---------------------------------------------------------------------------------------- */
          ein UPDATE für mehre Datensätze in 'einem Rutsch' ausführen lassen:
          
          $MUSTER-query =
          "
          UPDATE
            Tabelle
          SET     SpalteX = ELT(FIELD(id,'id1','id2','id3'),'WertX1','WertX2','WertX2')
                  SpalteY = ELT(FIELD(id,'id1','id2','id3'),'WertY1','WertY2','WertY2')
                  SpalteZ = ELT(FIELD(id,'id1','id2','id3'),'WertZ1','WertZ2','WertZ2')
          WHERE                 FIELD(id,'id1','id2','id3')
          ";
          
          Vorgehensweise:
          1. Baue eine $ID_Liste , welche die IDs der zu ändernden Datensätze aufnimmt:
             $ID_Liste = "id1','id2','id3";  // Achtung: die Kommas in '' einfassen !!!
          
          2. Baue eine $WertX_Liste,
             welche die Werte für die SpalteX in Reihenfolge der IDs von $ID_Liste aufnimmt:
             $WertX_Liste = "X1','X2','X3";  // Achtung: die Kommas in '' einfassen !!!
          
          2a. Gleiches Vorgehen für die SpalteY und SpalteZ !
          
          3. Alles zusammenbauen:
             $query = " UPDATE tabelle SET "
                    . " SpalteX = ELT(FIELD(id,'$ID_Liste'),'$WertX_Liste') "
                    . " WHERE FIELD(id, '$ID_Liste') ";
          
          4. Das ganze mit echo $query überprüfen!!!
          /* ---------------------------------------------------------------------------------------- */
          Dort wird gezeigt, wie man mehrere Datensätze 'in einem Rutsch' updaten kann.
          Es wird leider NICHT gezeigt,
          wie das entsprechende Eingabe-Formular gestaltet sein muss,
          und wie man aus einem Eingabe-Formular eine solche UPDATE-Anweisung generiert.

          Diesbezüglich bin ich zur Zeit überfragt,
          und habe leider auch nicht Zeit genug, mich weiter damit zu befassen.

          Verstehe dieses nur als einen Hinweis, daß das machbar ist.

          ~dilemma~

          Kommentar

          Lädt...
          X