Mehrere Daten auf einmal updaten?

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

  • Mehrere Daten auf einmal updaten?

    Hi,
    ich bin neu hiere und hoffe ihr könnt mir helfen.

    Ich möchte mehrere Daten aus einer MySQL-Datenbank auf einmal updaten (ändern).
    Dafür habe ich zwei scripte geschrieben:

    Das erste Script:
    PHP-Code:
        <?php
        $query 
    " SELECT id, forname, lastname
        FROM kunden_tb
         "
    ;
        
        
    $result mysql_query$query$connect ) OR die( mysql_error() );
        
    $row=mysql_fetch_object($result);
        
    ?>
        
        <form action="update.php" name="editfrm" enctype="text/plain" method="post">
        
        <?php
        
    while ( $row=mysql_fetch_object($result) )
        {
        echo 
    "<table>
                <tr>
                
                <td>
                <input type='text' name='id' value='
    $row->id' >
                </td>
                
                <td>
                <input type='text' name='forname' value='
    $row->forname' >
                </td>

                <td>
                <input type='text' name='lastname' value='
    $row->lastname' >
                </td>
                
                </tr>"
    ;
        }
        
    ?>
        <tr>
        <td colspan="3" align="center">
        <input type="submit" name="submit" value=" Make Changes " />
        </td>
        </tr>
        </table>
        </form>
    Die aus der Datenbank ausgelesenen Werte werden mittels der Formular an die Datei update.php weitergeleitet:

    Update.php:
    PHP-Code:
    $id[x] = $_POST['id'];
    $forname[x] = $_POST['forname'];
    $lastname[x] = $_POST['lastname'];

    $query " SELECT id, forname, lastname
    FROM kunden_tb
     "
    ;
        
    $result mysql_query$query$connect ) OR die( mysql_error() );
        
    $number mysql_num_rows($result);

    echo 
    mysql_error();

      for(
    $x=0;$x<$number;$x++)
      {
          
    $query2 " UPDATE kunden_tb 
          SET forname='
    $forname[$x]', lastname='$lastname[$x]'
          WHERE id='
    $id[$x]'
          "
    ;
          
            
    $result2 mysql_query$query2$connect ) OR die( mysql_error() );
      }    

    echo 
    mysql_error();

    ?> 
    Es werden aber keine Daten in der Datenbank aktualisiert.
    Warum?
    Zuletzt geändert von ffjj; 13.03.2010, 20:23.

  • #2
    PHP-Code:
    $id[x] = $_POST['id'];
    $forname[x] = $_POST['forname'];
    $lastname[x] = $_POST['lastname']; 
    Kannst du mal erklären, was dieser Code bewirken soll?
    Sieht nach absolutem Blödsinn aus.


    Hast du das error_reporting vernünftig eingestellt, wie es in den Regeln steht?
    Das sollte dir deinen Code ordentlich um die Ohren hauen ...
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ja, du hast recht.
      Das ist auch absolouter Unsinn.

      Lass mich bitte Schritt für Schritt vorgehen.

      PHP-Code:
      <input type='text' name='name[$x]' value='$row->name' 
      Da in der Variablen "name" mehrere Namen (jeweils aus einer Datensatz bzw row) gespeichert werden, versuche ich die Werte in einer Array nämlich "name[]" zu speichern.
      Die Werte in dem Array name[] übergebe ich die Dati update.php.

      Hier versuche ich die Werte wie folgt benutzen:

      PS: $number ist die Anzahl der ausgelesenen Datensätze.

      PHP-Code:
          for($x=0;$x<$number;$x++)
            {
              
      $id[$x] = $_POST['id'][$x];
      $name[$x] = $_POST['name'][$x];
            
                
      $query2 " UPDATE kunden_tb SET name='$name[$x]' WHERE id='$id[$x]'
                "
      ;
                
                    
      $result2 mysql_query$query2$connect ) OR die( mysql_error() );
            } 
      Ist diese Vorgehenweise überhaupt richtig?

      Kommentar


      • #4
        Also Ansatz ist generell richtig. Ein paar Feinheiten kann an verbessern:

        $number ist die Anzahl der ausgelesenen Datensätze.
        Und wer sagt dir, dass $_POST['name'] genauso viele Elemente enthält?

        $name[$x] = $_POST['name'][$x];
        Ist ja nur ein Alias, also eigentlich erstmal überflüssig.

        Enthält $query2 das, was du erwartest? (Warum eigentlich Query2? Brauchst du $query noch mal?

        $result2 = mysql_query( $query2, $connect ) OR die( mysql_error() );
        Funktionierst?

        Hilft dir das weiter, oder hast du noch eine konkrete Frage?

        Kommentar

        Lädt...
        X