Daten mit while-Schleife in Datenbank

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

  • Daten mit while-Schleife in Datenbank

    Hallo !

    Ich stehe grad vor folgendem Problem:
    Wenn ich beispielsweise 3 Datensätze aus einer MySQL-Datenbank mit Hilfe einer while-Schleife in einer Tabelle mit Textfeldern auf einer Webseite ausgeben lasse, soll der User diese Datensätze ändern können. Problem bei dem Abschicken des Formulars: Wie füge ich diese Datensätze wieder in die Datenbank ein? Müsste ja auch mit einer while-Schleife geschehen, da ja z.B. nicht immer nur 3 Datensätze da sind, sondern auch mal 4 oder 5, d.h. das ganze müsste variabel und nicht statisch sein.....

    Datensatz sieht z.B. so aus:
    ID, Farbe, Beschreibung
    1, grün, blablablabla

  • #2
    Hi espiritu

    Dies lässt sich ganz eifach klären.
    Da php einfach mal ne geile Programmiersprache ist, musst du den query-befehl nur so formulieren

    PHP-Code:
    mysql_query("UPDATE table (beschreibung='idiot') WHERE farbe='grün'"
    Da sorgt dafür, das alle beschreibungen der Einträge auf 'idiot' geändert werden wo die farbe blau ist...

    Also nix mit whgile schleife.
    Lan in Berlin??

    www.berlin-lan.net

    Kommentar


    • #3
      Original geschrieben von Fritz
      Da sorgt dafür, das alle beschreibungen der Einträge auf 'idiot' geändert werden wo die farbe blau ist...
      erstens scheinst du eine grün/blau farbsehschwäche zu haben ;-)
      und zweitens lese ich aus der anfrage nicht heraus, dass er in allen drei datensätzen den gleichen wert setzen will beim updaten, sondern dass dies pro spalte auch durchaus unterschiedliche werte sein können.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        du nennst die felder in deinem formular statt "email" einfach "email[<id>]".

        jetzt hast du nämlich ein array, dass du einfach durchgehen kannst

        html:
        Code:
        <input type="text" name="email[35]" value="a@b.com" />
        <input type="text" name="email[39]" value="sod@off.org" />
        php:
        PHP-Code:
        foreach ($_POST['email'] as $key => $value)
        {
          
        $sql="UPDATE tabelle SET email='".$value."' WHERE id=".$key;
          
        mysql_query($sql);

        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          @ Fritz
          Ich denke mal du willst mich verarschen...!

          @mrhappiness
          D.h. ich könnte meine ID aus der Datenbank nehmen, diese in der Ausgabe-while-Schleife einfach als name="status_id" im Formular ausgeben lassen (die wird ja dann automatisch hochgezählt), und dann anhand dieser wieder wie du es beschrieben hast updaten.
          Probier ich gleich morgen mal, danke!

          Kommentar


          • #6
            nein, nicht name="id" sondern name="email[id]" und name="plz[id]"
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Ich hab das jetzt so gefriemelt:

              Code Ausgabe:
              PHP-Code:
              <form action="update_admin_sb_fehler.php" method="post">
                                  <tr>
                                      <td align="center" width="50">&nbsp;Farbe</td>
                                      <td>&nbsp;Beschreibung</td>
                                  </tr>
                                  <?php 
                                  $abfrage 
              mysql_query("SELECT * FROM fehlerlevel");
                                  while(
              $data mysql_fetch_array($abfrage))
                                  {
                                      echo 
              "<tr>";
                                      echo 
              "<td><img src=\"images/".$data['farbe']."\"></td>";
                                      echo 
              "<td><textarea name=\"beschreibung[id]\" rows=\"3\" cols=\"80\">".$data['sta_beschreibung']."</textarea></td>";
                                  }
                                  
              ?>
              Und hier die Auswertung nach Absenden des Formulars:
              PHP-Code:
              foreach ($_POST['beschreibung'] as $key => $value)
              {
                
              $sql="UPDATE fehlerlevel SET sta_beschreibung='".$value."' WHERE status_id=".$key;
                
              mysql_query($sql);

              Der $key ist doch mein Zähler, also muss ich doch schreiben "WHERE status_id=" weil ja die status_id praktisch die laufende Nummer ist in der Datenbank. Aber ich bekomme "Unknown coloumn"-Fehlermeldung von SQL.

              Kommentar


              • #8
                du sollst doch auch nicht den text id in den namen des formularelementes schreiben,sondern die id des entsprechenden datensatzes...
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Ach du meinst so:

                  PHP-Code:
                  <textarea name=\"beschreibung[".$data['status_id']."]\" 

                  Kommentar


                  • #10
                    sieht doch gleich viel besser aus
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      Funzt auch gleich viel besser......THANX!

                      Kommentar


                      • #12
                        Jetzt muss ich doch nochmal nachfragen, ich dacht eigentlich ich hätte den Code verstanden, ist aber wohl doch nicht so:
                        Wenn ich nun mehrere Spalten habe, die ich ausgeben lasse, wie bau ich das dann ich die "foreach"-Schleife rein ???
                        Momentan werden ja nur 2 Werte übergeben, die ID und die Beschreibung. Nur wo genau wird denn die Beschreibung übergeben ??

                        Was genau macht denn diese Zeile:
                        PHP-Code:
                        $_POST['beschreibung'] as $key => $value 

                        Kommentar


                        • #13
                          foreach hast du gelesen?
                          was verstehst du nicht?`

                          was meinst du mit "mehrere Spalten"?
                          beschreibung und email?
                          PHP-Code:
                          foreach ($_POST['beschreibung'] as $key => $value)
                          {
                            
                          $sql="UPDATE fehlerlevel 
                            SET 
                              sta_beschreibung='"
                          .$value."',
                              email='"
                          .$_POST['email'][$key]."'
                             WHERE status_id="
                          .$key;
                            
                          mysql_query($sql);

                          ich denke, es sollte sich alles klären, wenn du mal immanual nachschaust
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            Ich meinte halt mehrere Spalten in der Ausgabe (Formular-Textfelder), denen ich ja alle einen Namen zuweisen müsste um sie mit $_POST in der Auswertungsdatei ansprechen zu können. Wie mit "sta_beschreibung"....

                            Kommentar


                            • #15
                              Momentan sieht meine Ausgabe so aus:

                              PHP-Code:
                              <?php 
                                              $abfrage 
                              mysql_query("SELECT * FROM server");
                                              while(
                              $data mysql_fetch_array($abfrage))
                                                  {
                                                  
                              $abfrage2 mysql_query("SELECT * FROM applikation WHERE applikation_id = $data[applikation_id]");
                                                  
                              $data_app mysql_fetch_array($abfrage2);
                                                  
                                                  echo 
                              "<tr>";
                                                  echo 
                              "<td align=\"center\">".$data['server_id']."</td>";
                                                  echo 
                              "<td>&nbsp;<input type=\"text\" size=\"15\" name=\"sername[".$data['server_id']."]\" value=\"".$data['ser_name']."\"</td>";
                                                  echo 
                              "<td>&nbsp;<input type=\"text\" size=\"30\" name=\"sysname[".$data['server_id']."]\"value=\"".$data['ser_sysname']."\"</td>";
                                                  echo 
                              "<td>&nbsp;<input type=\"text\" size=\"15\" name=\"appname[".$data['server_id']."]\"value=\"".$data_app['app_name']."\"</td>";
                                                  echo 
                              "<td align=\"center\"><a href=\"javascript:idnummer.ser_id.value=$data[0];idnummer.submit();\">System l&ouml;schen</a></td>";
                                                  echo 
                              "</tr>";
                                                  }
                                                  
                              ?>

                              Kommentar

                              Lädt...
                              X