Buttons und Eingabefelder in einer Schleife

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

  • Buttons und Eingabefelder in einer Schleife

    Hi also zunächst hab ich die Such Funktion benutzt und hab nix passendes gefunden.

    Also ich hab da Formular der Datensätze aus der Datenbank ausliest und je nachdem wieviele in der DB sind werden dementsprechend die Datensätze auf der Seite in Eingabefeldern ausgegeben. Dazu habe ich noch die Buttons die ich zum Löschen der Datensätze benutzen möchte.

    Frage1: Wie kann ich, wenn ich die Eingabefelder verändere, ein Update an die Datenbank schicken. Wenns geht am besten mit dem "onchange".
    Kann ich irgendwie den value Wert ansprechen, weil dort steht was aktuell geändert wurde.

    Frage2: Ist im Prinzip das gleiche wie die Frage 1, aber wie geht das, wenn ich den Löschen Button anklicke dass der entsprechende Datensatz gelöscht wird.
    Irgendwie geht das in der Schleife nicht, denn da werden alle Datensätze gelöscht.

    Falls jemand sowas ähnliches mal gemacht hat am besten mal den Code posten


    PHP-Code:
    while($ds mysql_fetch_assoc($result)) { 
     echo

       <input type=\"button\" name=\"button"
    .$ds["ID"]."\"      value=\"Löschen\" onClick=";/*$sql = "Delete FROM tebelle where ID =".$ds["ID"].";";mysql_query($sql) OR die(mysql_error());*/echo" > 
              
      <input name=\"eingabefeld"
    .$ds["ID"]."\" size=\"50\" value= \"".$ds["title"]."\"   type=\"text\" onchange="; echo"> 
              
     "

              
    $i++; 
              

    Ich bedanke mich schonmal im Voraus!

  • #2
    also sorry aber ich versteh dein problem nicht so wirklich

    Kommentar


    • #3
      Es geht einfach dadrum dass ich Buttons und Eingabefelder in einer Schleife habe und diese auch benutzen wil.
      Die schleife gibt, jenachdem wieviele Datensätze es gibt, Eingabefelder und Buttons aus.

      Das Problem dabei ist dass ich die Buttons nicht benutzen kann, das heisst wenn ich auf einen der Buttons klicke werden alle Datensätze gelöscht und nicht der einzelne.

      Der Sinn bei der ganzen Sache ist dass ich auf der Webseite ein Datensatz verändern und löschen möchte


      Also ganz einfach gesagt ich brauche sowas wie
      if Button1 = angeklickt then Lösche datensatz mit der ID 1
      if Button2 = angeklickt then Lösche datensatz mit der ID 2
      das geht nicht weil sich das in der schleife befindet
      Zuletzt geändert von PHPhans; 03.04.2006, 16:07.

      Kommentar


      • #4
        Original geschrieben von PHPhans
        Das Problem dabei ist dass ich die Buttons nicht benutzen kann, das heisst wenn ich auf einen der Buttons klicke werden alle Datensätze gelöscht und nicht der einzelne.
        Dann übergebe die ID des Datensatzes, so dass du den "richtigen" Löschen kannst - z.b. im value-Attribut des Buttons.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Das mache ich ja mit dem name-Attribut.

          Also gut nehmen wir an in der Datenbank sind 4 Satensätze:

          "statisch":ich mach mir 4 Buttons mit 4 Eingabefeldern. Hirbei ist es kein Problem onClick bzw. onchange zu benutzen.

          dynamisch:weil jetz das ganze in der schleife ist kann ich diese onclick sachen net nutzen, weil er biem Löschen alle Datensätze löschen würde.


          Button Eingabefeld vorbelgt mit Datensatz aus der Datenbank
          ----------- ------------------------------------------------------
          |Löschen| |eins |
          ----------- ------------------------------------------------------
          ----------- ------------------------------------------------------
          |Löschen| |zwei |
          ----------- ------------------------------------------------------
          ----------- ------------------------------------------------------
          |Löschen| |drei |
          ----------- ------------------------------------------------------
          ----------- ------------------------------------------------------
          |Löschen| |vier |
          ----------- ------------------------------------------------------
          ...


          am besten wärs wenn ich außerhalb der schleife diese onclick bzw. onchange Sachen ansprechen könnte, damit ich dann sagen kann z.B:
          if Button1.onclick then loeschen();
          if Button2.onclick then loeschen();
          ...
          So würde nur der Datensatz gelöscht werden den man auch will.

          In der Schleife geht das aber nicht.

          Ich kann mir nicht vorstellen dass ich der erst bin der Datensätze dynamisch verwalten möchte.

          Habt ihr vieleicht andere Ideen oder Vorschläge wie man das lösen könnte, sicher gibt es eine elegantere Art das zu machen.
          Zuletzt geändert von PHPhans; 03.04.2006, 16:38.

          Kommentar


          • #6
            du musst eben die namen deiner buttons richtig vergeben - dann geht das auch.

            vergeb einfach nen array
            $name[$i]

            dann kannst du auf die zugreifen.

            am besten suchst du mal danach im forum - gibt es mehrere beitrage dazu

            Kommentar


            • #7
              Original geschrieben von PHPhans
              dynamisch:weil jetz das ganze in der schleife ist kann ich diese onclick bzw. onchange sachen net nutzen.
              Wieso das denn nicht?
              "Dynamisch" erzeugst du mit PHP auf dem Server HTML- und ggf. Javascript-Code.
              Der Browser interessiert sich für diese Art von Dynamik aber kein bisschen.

              am besten wärs wenn ich außerhalb der schleife diese onclick bzw. onchange Sachen ansprechen könnte, damit ich dann sagen kann z.B:
              if Button1.onclick then loeschen();
              if Button2.onclick then loeschen();
              ...
              So würde nur der Datensatz gelöscht werden den man auch will.
              Bist du dir sicher, dass du den Unterschied zwischen server- und clientseitig schon verstanden hast ...?
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                also wenn du kein ajax einsetzt, mußt du die seite eh neu aufrufen. also kein onclick, bzw. onchange.

                mach bei form action ein $_SERVER['PHP_SELF'] und aus type=button ein submit. dann überprüfst du mit name, welcher button gedrückt wurde und löschst den datensatz

                gruß
                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  Also vielen Dank jetz bin ich viel schlauer !

                  Hm ok also ich probier mal die "selbstaufruf methode" nochmal aus, aber
                  muss ich mir doch JavaScript noch reinziehen. Falls jemand schnell ein ajax Lösung parat hat wäre ich sehr Dankbar. ajax scheint da sehr viel komfortabler zu sein.

                  Kommentar


                  • #10
                    Original geschrieben von wahsaga
                    Bist du dir sicher, dass du den Unterschied zwischen server- und clientseitig schon verstanden hast ...?
                    Das war nur um zu verdeutlichen was genau ich machen will, das ist klar dass das so net geht.

                    Kommentar


                    • #11
                      Lösung mit "Selbstaufruf":

                      PHP-Code:
                      //tabelle = hans
                      //attribut(spalte) = wurst

                      //Prüft of beim Selbstaufruf der Update oder Delete Button gedrückt wurde und führt das entsprechende Statement aus
                         
                      if  ( isset($_POST['delete']) ) {
                         
                      $sql "delete from hans where ID = " $_POST["index"]. ";";
                         
                      $result mysql_query($sql) OR die(mysql_error());
                         }
                         if  ( isset(
                      $_POST['update']) ) {
                         
                      $sql "update hans set wurst = '"$_POST["eingabefeld"] ."' where ID = " $_POST["index"]. ";";
                         
                      $result mysql_query($sql) OR die(mysql_error());
                         }
                      //-------------------------------------------------------------------------------------------------

                      //holt sich die Datensätze aus der DB
                      $sql "SELECT * FROM hans order by 1 asc;"
                      $result mysql_query($sql) OR die(mysql_error());
                      //-----------------------------------------

                      if(mysql_num_rows($result)) { //prüft ob Datesätze vorhanden sind
                        
                      while($ds mysql_fetch_assoc($result)) {    //holst sich ein Satz von result in $ds
                      //----Ausgabe der Eingabefelder(vorgelgt mit dem Satz aus der DB) und Buttons     
                          
                      echo "<form method=\"post\" action=\"" $_REQUEST["SELF_PHP"] . "\"  name=\"Schleife\">
                          <tr>
                           <INPUT TYPE=\"hidden\" NAME=\"index\" VALUE=\""
                      .$ds["ID"]."\">
                           <input name=\"eingabefeld\" size=\"50\" value=\""
                      .$ds["wurst"]."\" type=\"text\">
                           <input type=\"submit\" name=\"update\" value=\"updatebutton\" class=\"block_button\">
                           <input type=\"submit\" name=\"delete\" value=\"deletebutton\" class=\"block_button\">
                         </tr>
                         </form>"
                      ;
                        
                      //das form in der schleife ist nötig weil der bestimmte datensatz bearbeitet werden soll
                      //-----------------------------------------------------------------
                        
                      }//while
                      }//if 

                      Kommentar

                      Lädt...
                      X