UPDATE geht nicht

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

  • UPDATE geht nicht

    Hallo,

    ich versuche gerade de sql update befehl hinzubekommen. jedoch klappts nich ganz:
    <?php
    $benutzer = "xxx";
    $passwort = "xx";
    $db = "xxxx";
    $host ="xxxx";
    $link = mysql_pconnect( $host, $benutzer, $passwort );
    if ( ! $link )
    die( "Keine Verbindung zu MySQL" );
    mysql_select_db( $db, $link )
    or die ( "Konnte Datenbank \"$db\" nicht öffnen: ".mysql_error() );
    if ( isset( $neu_interpret ) && isset( $neu_titel ) && isset( $song_id ) )
    {
    $anfrage = "UPDATE songs SET interpret='$neu_interpret', titel='$neu_titel' WHERE id=$song_id";
    $ergebnis = mysql_query( $anfrage );
    if ( ! $ergebnis )
    die ("Änderung fehlgeschlagen: ".mysql_error());
    print "<small>Erfolgreich geändert: ".mysql_affected_rows().
    " Datensätze/Datensatz geändert</small><p>";
    }
    $ergebnis = mysql_query( "SELECT * FROM songs ORDER BY id" );


    echo('<small><b>Songs ändern:</b></small>');
    echo('<form action="'.$PHP_SELF.'" method="POST">');
    while ( $datensatz = mysql_fetch_array( $ergebnis ) )
    {
    echo('<input type="text" size="5" CLASS="Eingabe" name="song_id" value="'.$datensatz[id].'"> &nbsp; <input type="text" name="neu_interpret" size="25" CLASS="Eingabe" value="'.$datensatz[interpret].'"> &nbsp; <input type="text" name="neu_titel" size="25" CLASS="Eingabe" value="'.$datensatz[titel].'"><br>');
    }

    ?>
    wenn ich die page nun anzeigen lass, hab ich zwar alles ausgefüllt, aber wenn ich versuche ein feld zu ändern, überschreibt es mir JEDES feld mit dem Wert ausm dem letzten feld.
    ich habe die vermutung, dass ich das mit der id angabe nicht ganz korrekt gelöst habe.

    einer ne idee für n php-anfänger?

  • #2
    wo ist denn das ende der Form???

    oder ist das nur ein Script auszug?

    Kommentar


    • #3
      ist nur ein auszug

      wird der rest auch benötigt?

      Kommentar


      • #4
        ging mir jetzt nur darum ob der form tag auch wirklich beendet ist
        haste schon mal versucht die Variablen nach dem Absenden auszugeben ohne das Update, dann weißt du ob sie wirklich übergeben wurden.

        Kommentar


        • #5
          jep, hab ich. Die Variablenübergabe funktioniert einwandfrei.
          Das Problem ist nur, dass es die Variablen nicht richtig ändert.

          Ich kann in der letzten SpaltenReihe, welche durch die Schleife ausgegeben wird die Werte ändern. Setze ich für $song_id einen fixen Wert wie z.B. 5 ein, ändert es mir auch genau die Spalte mit der id 5.

          Sobald jedoch dort die Variable drin ist, funktioniert es nicht mehr.

          Ich werd nun nochmal Variable für Variable ausgeben lassen. Vielleicht find ich dann den Fehler.

          Kommentar


          • #6
            ganz offensichtlich steht in Deiner Variable .$datensatz[id]. nicht das, was drinstehen soll.
            entweder so $datensatz["id"]
            oder $datensatz[$counter]

            Kommentar


            • #7
              bzw. ohne ' ' bei .$datensatz[id].

              Kommentar


              • #8
                änder mal $anfrage in:

                $anfrage = "UPDATE songs SET interpret='$neu_interpret', titel='$neu_titel' WHERE id='$song_id'";

                Kommentar


                • #9
                  Hallo,

                  eure Lösung bringen leider alls nix. Die id wird richtig ausgegeben. Hab hierfür ja auch ein Formularfeld angelegt, dass ich sehe ob sie auch richtig zugeordnet werden.

                  Hab nochmal alles getestet.
                  Es updatet jediglich das zuletzt (durch die schleife) ausgegeben feld!

                  hat denn keiner mehr ne idee?

                  Kommentar


                  • #10
                    hmm dann raten wir mal fröhlich weiter haste das && mal durch andere Operatoren ersetzt, vielleicht funktioniert das mit diesem Operatoren nicht ... habe die da noch nie benutzt...

                    Kommentar


                    • #11
                      hand hat idee.
                      Ist aber nicht getestet.

                      PHP-Code:
                      <?php 
                      $benutzer 
                      "xxx"
                      $passwort "xx"
                      $db "xxxx"
                      $host ="xxxx"
                      $link mysql_pconnect$host$benutzer$passwort ) or die( "Keine Verbindung zu MySQL" ); 
                      mysql_select_db$db$link ) or die ( "Konnte Datenbank \"$db\" nicht öffnen: ".mysql_error() ); 

                      // Gebildeter Array wird abgearbeitet
                      for ($i 0$i <= count($song_id); $i++) {
                          if (
                      $song_id[$i] > "" && $neu_titel[$i] > "" && $neu_interpret[$i] > "") { 
                              
                      $anfrage "UPDATE songs SET interpret='$neu_interpret[$i]', titel='$neu_titel[$i]' WHERE id=$song_id[$i]"
                              
                      $ergebnis mysql_query$anfrage ); 
                                 if (!
                      $ergebnis ) die ("Änderung fehlgeschlagen bei Datensatz $i mit id $song_id[$i]: ".mysql_error()); 

                                 print 
                      "<small>Erfolgreich geändert: ".mysql_affected_rows()." Datensatz $i mit id $song_id[$i] geändert</small><p>";
                          } 
                      }

                      $ergebnis mysql_query"SELECT * FROM songs ORDER BY id" ); 

                      echo(
                      '<small><b>Songs ändern:</b></small>'); 
                      echo(
                      '<form action="'.$PHP_SELF.'" method="POST">'); 
                      while (
                      $datensatz mysql_fetch_array($ergebnis)) { 
                          
                      // mit var[] wird ein Array gebildet
                          
                      print "
                          <input type='text' name='song_id[]'       size='05' CLASS='Eingabe' value='
                      $datensatz[id]'>
                          <input type='text' name='neu_interpret[]' size='25' CLASS='Eingabe' value='
                      $datensatz[interpret]'>
                          <input type='text' name='neu_titel[]'     size='25' CLASS='Eingabe' value='
                      $datensatz[titel]'>
                          <br>"


                      ?>

                      Kommentar

                      Lädt...
                      X