Ankündigung

Einklappen
Keine Ankündigung bisher.

Buttons und Eingabefelder in einer Schleife ?

Einklappen

Neue Werbung 2019

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

    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!

    Sorr wegen dem Code einrücken scheint irgendwie net zu klappen

  • #2
    Hi,

    also mit deinem onChange wirst du nicht weit kommen, da dies nur auf dem Client ausgefuehrt wird und der Server nie was davon mitbekommen wird.

    Du musst den jeweiligen Button erkennen koennen um etwas zu aktualisieren oder zu loeschen, gib deinen Buttons namen, dann weisst du welcher betaetigt wurde und kannst je nach Button deinen Datensatz loeschen/updaten.

    Du kannst auch Checkboxen an jede Zeile machen, hier kann man dann auswaehlen ob ein Datensatz geloescht werden soll etc.

    Kommentar


    • #3
      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


      • #4
        Wenn du dieses Skript online verwenden willst, solltest du, um auf der sicheren Seite zu sein, gesendete POST Daten erst überprüfen ob diese auch keine gefährlichen Inhalte besitzen.
        Hierbei meine ich MySQL Syntax, welcher letztendlich allein durch ein kleines * deine ganze Tabelle löschen kann.
        Mit POST fühlt man sich immer relativ sicher, wobei es allerdings keines Wegs unfälschbar ist.
        Ich will nicht deine Lösung streitig machen, soll eine Art Tip sein, für einen lokalen Gebrauch wirst du dir den Aufwand auch sicher nicht machen wollen/müssen .

        Kommentar

        Lädt...
        X