sql-update aus while-schleife

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

  • sql-update aus while-schleife

    Hallo,

    lese schon lange mit und habe schon häufig von den Antworten hier profitieren können!
    Jetzt habe ich ein kleines Problem und noch keinen entscheidenden Tipp gefunden.

    Ich arbeite an einer Tiervermittlungsseite/-datenbank, wo unter anderem Bilder mit Bildunterschriften ausgegeben werden. Die Anzahl der Bildunterschriften kann zwischen 0 und 5 variieren (Die Bilder kommen aus einer eigenen Tabelle, die mit einer anderen Tabelle, wo die Details zum Vermittlungstier drin stehen verknüpft ist).

    Jetzt habe ich eine Edit-Seite erstellt, wo auch diese Bildunterschriften geändert werden können. Dort werden die Bildunterschriften mit einer while-Schleife in ein Textfeld ausgeben.

    <textarea name="subtext" style="width: 450px;"><?php echo $Image[$i]["subtext"];?></textarea><input name="picID" type="hidden" value="<?php echo $Image[$i]["picID"];?>">

    Jetzt möchte ich nach Bearbeitung wieder in die DB-zurückschreiben.

    So sah mein Versuch aus:

    PHP-Code:
    $i=0;
    while(
    $Image[$i]):

        
    $query="update _kreta_bilder SET ";
        
    $query.="subtext='".addslashes($HTTP_POST_VARS["subtext"])."'";
        
    $query.=" where picID=".$HTTP_POST_VARS[$i]["picID"];
        if (!
    mysql_query($query2)) die ("Datenbankproblem, Eingabe nicht erfolgreich!");
        
    $i++;
    endwhile; 
    Ist wahrscheinlich ziemlicher Quatsch...aber da habe ich jetzt zu wenig Ahnung von PHP...
    Das Problem ist, dass die picID`s bei jeder Seite anders sind (auto), sonst hätte mir der Thread "Update-Syntax" weiter unten schon sehr weitergeholfen.


    Gruß

    Bettina

  • #2
    nimm die textarea entsprechend auch in ein array rein. nur so kannst du ja eine verbindung zwischen dem text und der daten-id machen.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Hallo,

      hab ich jetzt gemacht
      PHP-Code:
      $i=0;
      while(
      $HTTP_POST_VARS[$i]["picID"]):

          
      $query="update _kreta_bilder SET ";
          
      $query.="subtext='".addslashes($HTTP_POST_VARS[$i]["subtext"])."'";
          
      $query.=" where picID=".$HTTP_POST_VARS[$i]["picID"];
          if (!
      mysql_query($query2)) die ("Datenbankproblem, Eingabe nicht erfolgreich!");
          
      $i++;
      endwhile; 

      hat sich aber nix getan. Komme nicht weiter...

      So sieht die DB-Abfrage der Bildunterschriften zum Bearbeiten für die Textfelder aus:

      PHP-Code:
      $query2="select picID,image,thumb,subtext from _kreta_bilder where rbID=".$rbID
      $result=mysql_query($query2);
      $i=0;
         while (
      $row mysql_fetch_array($result)) {
          
      $Image[$i]["picID"]=$row[0];
          
      $Image[$i]["image"]=$row[1];
          
      $Image[$i]["thumb"]=$row[2];
          
      $Image[$i]["subtext"]=stripslashes($row[3]);
          
      $i++;
          }
      ?> 
      Gruß

      Bettina

      Kommentar


      • #4
        Original geschrieben von Kreta
        PHP-Code:
        if (!mysql_query($query2)) die ("Datenbankproblem, Eingabe nicht erfolgreich!"); 
        das ist ziemlich sinnfrei, solange du noch in der testphase bist.

        dem anwender nachher eine allgemeine fehlermeldung zu servieren, ist legitim - was genau schief gelaufen ist, geht den gar nichts an.

        so lange du noch testest, solltest du dir allerdings immer die originale fehlermeldung von der Db anzeigen lassen.

        ausserdem nimmst du nirgends den rückgabewert der funktion mysql_query entgegen, auch nicht besonders ratsam.

        PHP-Code:
        $ergebnis mysql_query($query2) or die(mysql_error()); 
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Hallo,

          danke für den Hinweis.
          PHP-Code:
          $ergebnis mysql_query($query2) or die(mysql_error()); 
          habe es geändert.
          Es gibt aber keine Fehlermeldung, auch vorher hatte ich ein echo $query drin - aber keine Anzeige.

          Vielleicht sollte ich das Konzept des Bildsubtitel-Edits ändern. Aber mich interessiert schon, was hier falsch ist...

          Gruß

          Bettina

          Kommentar


          • #6
            es könnte helfen, wenn du im formular auch picID als array definierst:
            PHP-Code:
            <input name="picID[]" type="hidden" value="<?php echo $Image[$i]["picID"];?>">
            mit print_r($_POST); kannst du dir dann mal ausgeben lassen, was in $_POST enthalten ist.
            Kissolino.com

            Kommentar


            • #7
              Hallo,

              es könnte helfen, wenn du im formular auch picID als array definierst:
              PHP-Code:
              <input name="picID[]" type="hidden" value="<?php echo $Image[$i]["picID"];?>">
              mit print_r($_POST); kannst du dir dann mal ausgeben lassen, was in $_POST enthalten ist. [/B]
              klasse, jetzt blicke ich immer mehr durch...

              Ich habe jetzt beide Formulare als array definiert und mir die Inhalte der Arrays (direkt vor dem DB-Eintrag) ausgeben lassen und sie sind auch da *freu*.

              [subtext] => Array ( [0] => 11111111111 [1] => 222222222 [2] => 333333333333 [3] => 44444444 [4] => 555555555555555 ) [picID] => Array ( [0] => 4 [1] => 5 [2] => 6 [3] => 7 [4] => 8 )

              Jetzt ist es also sicher, dass irgendwas in der Update-Anweisung falsch ist.

              Also die Tabelle heißt definitiv _kreta_bilder.
              Ich habe auch mal eine andere Schleife probiert (Beispiel hier im Forum gefunden):
              PHP-Code:
              if (isset($HTTP_POST_VARS[$i]["picID"])) {
                  for (
              $i=0$i<count($HTTP_POST_VARS[$i]["picID"]); $i++) {
                      
              $query="UPDATE _kreta_bilder SET subtext=".$HTTP_POST_VARS[$i]["subtext"]." WHERE picId=".$HTTP_POST_VARS[$i]["picId"];
                      
              mysql_query($query);
                  }

              ...geht aber auch nicht. Die Schleifen sind nicht so mein Ding, da muss irgendwo der Fehler liegen...

              Gruß

              Bettina

              Kommentar


              • #8
                mach mal aus: $HTTP_POST_VARS[$i]["picID"] => $HTTP_POST_VARS["picID"][$i]
                bei den anderen analog dazu.
                Kissolino.com

                Kommentar


                • #9
                  mach mal aus: $HTTP_POST_VARS[$i]["picID"] => $HTTP_POST_VARS["picID"][$i]
                  bei den anderen analog dazu.
                  uups, das hatte ich übersehen.
                  So sieht es jetzt aus und funktioniert immer noch nicht...sorry...

                  PHP-Code:
                  if (isset($HTTP_POST_VARS["picID"][$i])) {
                      for (
                  $i=0$i<count($HTTP_POST_VARS["picID"][$i]); $i++) {
                          
                  $query2 "UPDATE _kreta_bilder SET subtext=".$HTTP_POST_VARS["subtext"][$i]." WHERE picID=".$HTTP_POST_VARS["picID"][$i];
                          
                  mysql_query($query2);
                          
                  $ergebnis mysql_query($query2) or die(mysql_error());
                          echo 
                  $ergebnis;
                      }
                  }
                  print_r($_POST); 
                  print... zeigt die korrekten Inhalte an.

                  Gruß

                  Bettina

                  Kommentar


                  • #10
                    eigentlich müsstest du auch einen mysql_error haben ... egal. probier das mal:
                    PHP-Code:
                    <?
                        for ($i=0; $i<count($_POST["picID"]); $i++)
                        {
                         if (isset($_POST["picID"][$i])) 
                         {
                            $query2 = "UPDATE _kreta_bilder SET subtext='".$_POST["subtext"][$i]."' WHERE picID=".$_POST["picID"][$i]." ";
                            mysql_query($query2);
                            $ergebnis = mysql_query($query2) or die(mysql_error());
                            echo $ergebnis;
                         }
                        }
                    ?>
                    und nutze besser $_POST statt $HTTP_POST_VARS (sind veraltet)
                    Kissolino.com

                    Kommentar


                    • #11
                      Hallo,

                      super - funktioniert!

                      Ich danke euch!

                      Gruß

                      Bettina

                      Kommentar

                      Lädt...
                      X