Ankündigung

Einklappen
Keine Ankündigung bisher.

mySql Datensatz mit Textfeld und Button löschen

Einklappen

Neue Werbung 2019

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

  • mySql Datensatz mit Textfeld und Button löschen

    Hi, ich habe da mal eine kleine Frage. Ich habe gestern eine Datenbank erstellt in der ich über ein Formular automatisch neue Datensätze eintragen kann. Diese werden anschlißend auf einer neuen Seite in einer Tabelle ausgegeben. Die IDs verteilen sich von alle die einzigen beiden Felder die durch mein Formular ergänzt werden sind Status und Fehlermeldung.

    Ich habe nun auf der Seite wo meine Datensätze ausgegeben werden ein Textfeld und einen Button erstellt und möchte nun das wenn man z.B. in das Textfeld 35 eingibt und dann auf den Button klickt das dann der Datensatz mit der ID 35 gelöscht wird.

    Kann mir da einer helfen?

    Mein code auf der Ausgabeseite sieht so aus:

    PHP-Code:
    <!DOCTYPE html>
    <html>

        <head>
                <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
                <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
                <meta http-equiv="refresh" content="10">
                <meta name="viewport" content="width=320, initial-scale=1">
                <link href="style.css" rel="stylesheet" type="text/css">

                <title>Fehlermeldungstracker Steag</title>
                <style type="text/css">
                    body{
                        background-color:black;
                        
                        }
                    table {
                        border:10px white solid;
                        }
                </style>
        </head>

        <body>

        <form action="" method="POST">
                                <input name="idnummer" type="text" placeholder="id hier eingeben">
                                <input name="erledigt" type="submit" value="Erledigt">
                            <form>

            <?php

                
    include('module.php');
            
                    
        
                    
    mysql_connect('localhost','root') or die(mysql_error());
                    
    mysql_select_db('fehlermeldung') or die(mysql_error());

                    
    $sql "SELECT * FROM fehlermeldung";
                    
    $query mysql_query($sql) or die(mysql_error());
        
                    echo 
    '<center><table class="tabelle_error_site">';
                        while(
    $fetch mysql_fetch_assoc($query))
                        {
                            echo 
    '<tr>';
                            echo 
    '<td style="width:100px">'.$fetch['id'].'</td>';
                            echo 
    '<td style="width:800px">'.$fetch['meldung'].'</td>';
                            echo 
    '<td style="width:300px">'.$fetch['status'].'</td>';
                            echo 
    '</tr>';
                        
                        }
     
                    echo 
    '</table></center>';

            
    ?>
        </body>

    </html>


  • #2
    Hallo!

    Generell: Textfeld im Form, das frägst du nach submit ab, und wenn dies gesetzt dann bau die entsprechende query und führe sie aus.

    Achtung! Achte darauf das die Seite nicht öffentlich erreichbar ist (also Login etc..), sonst kann man dir so ganz leicht die DB ausleeren. Und natürlich die üblichen Sicherheitsthemen nicht vergessen, je nachdem welche Schnittstelle du verwendest (und bitte nicht mysql_ die ist nämlich veraltet und fliegt bald aus PHP raus).

    http://php.net/manual/en/mysqlinfo.api.choosing.php
    http://php-de.github.io/jumpto/sql-injection/

    LG
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Naja, das Textfeld befindet sich ja sicher in einer Form, dann in dem Ziel der action:
      PHP-Code:
      DELETE FROM tabelle WHERE id = {DeineId
      und unbedingt beachten, was hausl geschrieben hat.
      Competence-Center -> Enjoy the Informatrix
      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

      Kommentar


      • #4
        die Datenbank soll auch nur in dem Netzwerk laufen in dem ich gerade arbeite über xampp. Und in diesem Netzwerk sind keine Sicherheitslücken. Gibt es nicht die Möglichkeit das ich einfach eine function erstelle die eine Datenbanksatz löschen soll und wenn ich dann diese mit dem Formular ausführe und dann dort einfach steht z.B. Datensatz 3 wurde abgehackt.

        Kommentar


        • #5
          Gibt es nicht die Möglichkeit das ich einfach eine function erstelle die eine Datenbanksatz löschen soll und wenn ich dann diese mit dem Formular ausführe und dann dort einfach steht z.B. Datensatz 3 wurde abgehackt.
          Öhm, ja, natürlich steht die Frei "das Löschen" in eine Funktion auszulagern/zusammenzufassen. Den Code dafür brauchst du trotzdem, ob du den dann "direkt" im Source hast oder in eine Funktion "auslagerst" ist dann deine Entscheidung.

          PHP macht (meistens ) das was du programmierst, so einfach ist das. Also fang einfach mal an damit und wenn du dann noch konkrete Fragen hast und alleine nicht weiterkommst, dann kannst du ja wieder kommen.
          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Ich bin noch wirklicher PHP Anfänger deswegen muss ich versuchen das erstmal alles so richtig zu verstehen und zusammen zu setzten

            Kommentar


            • #7
              Schau mal hier vorbei, da gibt es viel interessantes ... zB das "EVA-Prinzip" empfehle ich dir, wenn ich mir deinen Code oben ansehe..

              http://php-de.github.io/

              Dann noch .. nutze nicht mysql_ Erweiterung die ist veraltet - hier ganz unten auf der Seite: http://php-de.github.io/jumpto/faq/#deprecated-mysql

              nutze mysqli_ oder PDO mit prepared Statements.
              zB ganz gute Seite dazu: http://www.peterkropff.de/site/php/mysqli.htm

              LG
              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Kannst du mir vielleicht mal schreiben wie ich das mit dem DELETE so schreibe das ich das in dem Formular ausführen kann ich kriege das einfach nicht hin

                Kommentar


                • #9
                  wie ich das mit dem DELETE so schreibe das ich das in dem Formular ausführen kann
                  Das SQL hat doch Arne oben schon geschrieben.

                  Mach dir mal klar wie Formlulare funktionieren, lies die Links dazu, der PHP Code gehört ganz rauf (EVA! - Eingabe, Verarbeitung), nicht in mitten des HTML (= Ausgabe).

                  Weiters mach mal ganz oben ein print_r($_POST) und schick das form mal ab. Da siehst du dann welche Werte vom Form übertragen wurden. Und genau mit denen kannst dann weiter arbeiten und diese in dem SQL-Statment verwenden um den SQL-String dann an die DB zu schicken. Achtung nochmals der Hinweis du hast derzeit eine veraltette Schnittelle und SQL-Sicherheitslücken (siehe wieder die Links!).

                  Ohne diesen Grundlagen wird das nichts, daher nochmals.. ließ die Links, wenn du das verstehst geht alles einfacher von der Hand.
                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    mir kommt jetzt diese Fehlermeldung
                    Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\site_steagtracker\error_site.php on line 36
                    DELETE FROM fehlermeldung WHERE idnummer =

                    PHP-Code:
                    <!DOCTYPE html>
                    <html>

                        <head>
                                <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
                                <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
                                <meta http-equiv="refresh" content="10">
                                <meta name="viewport" content="width=320, initial-scale=1">
                                <link href="style.css" rel="stylesheet" type="text/css">

                                <title>Meldungen</title>
                                <style type="text/css">
                                    body{
                                        background-color:white;
                                        
                                        }
                                    table {
                                        border:10px white solid;
                                        }
                                </style>
                        </head>

                        <body>

                                            <form action="error_site.php" method="POST">
                                                <input name="idnummer" type="text" placeholder="id hier eingeben">
                                                <input name="erledigt" type="submit" value="Erledigt">
                                            <form>


                        <?php
                                
                    include('module.php');    
                                        
                                        function 
                    loeschen()
                                        {
                                            
                    $query "DELETE FROM fehlermeldung WHERE idnummer = " mysqli_real_escape_string($_POST['idnummer']) . "";

                                            echo 
                    $query;
                                        }
                                        if(isset(
                    $_POST['idnummer']))
                                        {
                                              
                    loeschen();
                                        }
                                        
                                        
                    //"DELETE FROM fehlermeldung WHERE id = '$_GET['idnummer']'";                    
                                                
                            
                                    
                    mysql_connect('localhost','root') or die(mysql_error());
                                    
                    mysql_select_db('fehlermeldung') or die(mysql_error());

                                    
                    $sql "SELECT * FROM fehlermeldung";
                                    
                    $query mysql_query($sql) or die(mysql_error());
                        
                                    echo 
                    '<center><table class="tabelle_error_site">';
                                        while(
                    $fetch mysql_fetch_assoc($query))
                                        {
                                            echo 
                    '<tr>';
                                            echo 
                    '<td style="width:100px">'.$fetch['id'].'</td>';
                                            echo 
                    '<td style="width:800px">'.$fetch['meldung'].'</td>';
                                            echo 
                    '<td style="width:300px">'.$fetch['status'].'</td>';
                                            echo 
                    '</tr>';
                                        
                                        }
                     
                                    echo 
                    '</table></center>';

                            
                    ?>
                        </body>

                    </html>

                    Kommentar


                    • #11
                      Man könnte ja einfach mal in der Doku nachsehen, oder?

                      http://php.net/manual/en/mysqli.real-escape-string.php
                      Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                      Kommentar


                      • #12
                        Ja, steht doch da.. mysqli_ braucht - wenn du es prozedual verwendest - als ersten Parameter die connection. Die musst du als Parameter in deine Funktion loeschen() rein übergeben, dann kann diese auch an die real_esacpe Funktion übergeben werden. Und auf jeden Fall die ID auch als Parameter in die Funktion übergeben! Alles was eine Funktion/Methode braucht sollte man ihr von aussen sichtbar als Parameter übergeben .. keine "Magie"!

                        Und bitte gibt den Verarbeitungs-PHP-Code und die Funktion ganz rauf, nicht mitten in die HTML Ausgabe reinquetschen, das ist pfui!

                        EDIT: und . "" hinten am String ist sinnlos.

                        LG
                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar

                        Lädt...
                        X