Ankündigung

Einklappen
Keine Ankündigung bisher.

Datensätze per Script aus SQl Datenbank löschen

Einklappen

Neue Werbung 2019

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

  • Datensätze per Script aus SQl Datenbank löschen

    Hallo,

    ich möchte mir aus einer mySQL DB den Inhalt einer Tabelle aufliesten lassen und nach auswahl bestimmt Datensätze löschen.
    Dazu Habe ich 2 PHP Datein erstellt loeschen.php und loeschen1.php

    Das auflisten und auswählen funktioniert.
    Das Skript in loeschen1.php wird auch ausgeführt mit der richtigen ID, er schreibt aber, das er den Datensatz nicht gelöscht hat.

    loeschen.php
    PHP-Code:
    <?php
    $db
    =mysql_connect("localhost","DB","PW");
    $ergebnis=mysql_db_query("DB""select * from TABELLE order by Nummer");
    $anzahl=mysql_num_rows($ergebnis);
    mysql_close($db);
    print 
    $anzahl "Eintr&auml;ge";
    ?>
    <form name="form1" method="post" action="loeschen1.php">
    <input type="submit" name="submit" value="Abschicken!">

    <table border="1" width="100%">
    <tr>
    <th></th>
    <th>Datum</th>
    <th>Tag-Name</th>
    <th>Uhrzeit</th>
    <th>Kirche</th>
    <th>extras</th>
    <th>Pfarrer</th>
    <th>K-GD</th>
    <th>Nummer</th>
    </tr>
    <?php
    for ($i=0;$i<$anzahl;$i++) {
    $id mysql_result($ergebnis$i"Nummer");
    $check "<input type=\"checkbox\" name=\"del[]\" value=\"$id\">";
    $dat mysql_result($ergebnis$i"Datum");
    $tag mysql_result($ergebnis$i"Tag-Name");
    $zeit mysql_result($ergebnis$i"Uhrzeit");
    $kirche mysql_result($ergebnis$i"Kirche");
    $extras mysql_result($ergebnis$i"extras");
    $pfr mysql_result($ergebnis$i"Pfarrer");
    $kgd mysql_result($ergebnis$i"K-GD");

    print 
    "<tr><td>".$check."<td>".$dat."</td><td>".$tag."</td><td>".$zeit."</td><td>".$kirche."</td><td>".$extras."</td><td>".$pfr."</td><td>".$kgd."</td><td>".$id."</td></tr>\n";
    }
    ?> 
    </form>
    <?php
    loeschen1.php
    PHP-Code:
    <?php
    $db
    =mysql_connect("localhost","DB","SPW")OR die(mysql_error());
    mysql_select_db("DB"); 

    if(isset(
    $_POST['del'])) 

    foreach(
    $_POST['del'] as $id

    $sql =("DELETE FROM tabelle WHERE id = $id");
    if (
    mysql_query($sql)){
    echo 
    "Datensatz mit der ID {$id} gel&ouml;scht!<br>\n";} 
    else {
    echo 
    "Datensatz mit der ID {$id} konnte nicht gel&ouml;scht werden!<br>\n";}

    mysql_close ($db);
    }
    ?>

    <?php
    Ich verzweifle gerade ein wenig daran, vor allem weil mein scribt zum eintragen der Gottesdienste einwandfrei funktioniert, und das ist viel komplexer aufgebaut als das zum löschen bzw. in einem anderen Thema (post822998) das zum ändern, wo ich ebenfalls hänge.

    Vielen Dank im Voraus!

    MfG
    René Kindermann

    P.S.: Wie steht es schon in den Regeln: Ich will kein Experte werden!

  • #2
    Das Feld Nummer wird sehr wahrscheinlich nicht dem Feld id entsprechen.

    PS: die mysql_ Erweiterung ist veraltet und wird in zukünftigen PHP Versionen entfernt. Alternativen sind PDO oder mysqli_. Benutzereingaben müssen escapt und/oder geprüft werden wenn sie in einem Query verwendet werden. (sql injections)

    Kommentar


    • #3
      Kern des Problems: Du sendest mit dem Formular nichts ausser der id... eine Tabelle ist kein Formfield!
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        SQL-Injection sollte noch mal genannt sein.

        Kommentar


        • #5
          Hallo,

          erstmal Danke für die hilfe.

          Wenn ich das richtig verstanden habe, nutze ich in meinem script ein php was in der nächsten Version nicht mehr funktioniert? Die DB kann auch weiterhin MySQL bleiben?

          Dann benötige ich noch mehr Hilfe als ich dachte!

          Kann mir jemand aktiv helfen den code umzubauen und auf den neusten stand zu

          DANKE.

          MfG
          René Kindermann

          Kommentar


          • #6
            Wow, der gleiche Post wie im anderen Thread? Und die Problematik ist auch die gleiche, nur mit delete statt update.

            Streng dich mal n bisschen an!
            [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
            [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

            Kommentar


            • #7
              Nur eine Anmerkung. Delete sollte nur in den seltesten Fällen verwendet werden. Ein Datensatz der bereits einmal wirklich gültig war, wird nach Möglichkeit niemals gelöscht. Inaktiv geschaltet ja, aber vom löschen würde ich erstmal abraten. Ist zumindest meine persönliche Meinung

              Wenn du bei Facebook deinen Account löscht, was ja schon recht schwer ist, werden deine Daten mit großer Wahrscheinlichkeit "Invisible" geschaltet, aber die Informationen, werden nicht gelöscht.

              Ist wie mit Krams den du in den Keller stellst. Aus den Augen aus dem Sinn. Du siehst es nicht, weißt aber das es da ist
              Die Jatravartiden auf Viltwodl VI können den Kram von dir auch nicht nachvollziehen

              Kommentar


              • #8
                PHP-Code:
                if(isset($_POST['del']))  
                {  
                foreach(
                $_POST['del'] as $id)  
                {  
                $sql =("DELETE FROM tabelle WHERE id = $id"); 
                Ich hoffe deine Seite hat ein Login oder ist "versteckt", denn so kann dir jeder per einfachem Post-Request jede beliebige ID aus deiner DB "einfach so" löschen.

                Wenn ich das richtig verstanden habe, nutze ich in meinem script ein php was in der nächsten Version nicht mehr funktioniert? Die DB kann auch weiterhin MySQL bleiben?
                Ja, es geht um die mysql_ Erweiterung in PHP und nicht die Datenbank selbst.
                Und am besten mit Prepared Statements verwenden, dann ist die oben erwähnte die SQL-Injection auch gegessen.

                http://php.net/manual/en/migration55.deprecated.php

                http://www.peterkropff.de/site/php/mysqli.htm

                http://www.peterkropff.de/site/php/pdo.htm

                LG
                The string "()()" is not palindrom but the String "())(" is.

                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


                • #9
                  Ich hoffe deine Seite hat ein Login oder ist "versteckt", denn so kann dir jeder per einfachem Post-Request jede beliebige ID aus deiner DB "einfach so" löschen.
                  Immerhin nutzt er POST, GET wäre noch fataler.
                  Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                  Kommentar


                  • #10
                    Zitat von Geromel Beitrag anzeigen
                    Immerhin nutzt er POST, GET wäre noch fataler.
                    Aber nur geringfügig besser. Einen Post-Request kann man auch von einer anderen Seite aus starten. Nennt sich CSRF.

                    Kommentar


                    • #11
                      Zitat von rkr Beitrag anzeigen
                      Aber nur geringfügig besser. Einen Post-Request kann man auch von einer anderen Seite aus starten. Nennt sich CSRF.
                      Und bei GET löscht dir google deine Daten
                      Current Projects: http://www.welten-buch.de, http://neu.zooadoo.de

                      Kommentar


                      • #12
                        Einen Post-Request kann man auch von einer anderen Seite aus starten
                        Und wenn ich zu Faul bin ein form dafür zu bauen, dann nehm ich halt jquery oder cURL, ...
                        The string "()()" is not palindrom but the String "())(" is.

                        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


                        • #13
                          Hallo,

                          ich dachte der Hinweis ich will kein Experte werden und die Tatsache das ich im Einsteiger Bereich poste reicht aus um mitzuteilen das ich von php keine Ahnung habe.
                          Ich habe mich das letzte mal vor 7 Jahren mit php befasst und wollte es eigentlich nie wieder.
                          Nun haben wir einen neuen Pfarrer und er hat mich gebeten neben dem script zum einfügen von Terminen in die DB, auch eine Möglichkeit zum änderen und löschen zu schaffen.

                          Ich habe es mit meinem Rest wissen versucht und habe da meine probleme.

                          Habe mit Absicht beide Sachen nicht in ein Thema gesteckt, da es ja verschiedene Skripte sind, was ich mit Absicht so gestalten will.
                          Alle php Dateien auf der Seite sind pw gesichert und mit verschiedenen berechtigungen (nicht jeder soll löschen können).

                          Nun musste ich lesen das meine rangehensweise veraltet ist, hatte gerade erklärt warum. Verstehe zwar nicht warum man die Programmierung so umbauen muss das bewährte Sachen nicht gehen aber gut so ist es halt.

                          Ich benötige also Hilfe die scripte zum löschen und ändern so umzubauen das sie
                          1. dem neuen Standard entsprächen
                          und 2. funktionieren.
                          Wenn das dann so ist, muss ja das alte script auch noch kommplet umgeschrieben werden, damit es weiter funktioniert.

                          Ich mache das ganze ehrenamtlich und hoffe hier jemanden zu finden der mir helfen kann und auch etwas Geduld mitbring. Gerne auch per PN oder mail.

                          Also erster schritt, was muss wie verändert werden, damit es dem neuen standard entspricht??

                          MfG
                          René Kindermann

                          P.S.: Ich will niemanden zu nahe treten und verärgern, bin ja auf eure Hilfe angewiesen.

                          Kommentar


                          • #14
                            Verstehe zwar nicht warum man die Programmierung so umbauen muss das bewährte Sachen nicht gehen aber gut so ist es halt.
                            Weil die veralteten Sachen irgendwann aus dem PHP-Standard entfernt werden, bei mysql_* ist das ab PHP5.5!
                            Solltet ihr also irgendwann mal ein Update der PHP-Version bekommen, war's das mit bewährt!

                            Ich mache das ganze ehrenamtlich und hoffe hier jemanden zu finden der mir helfen kann und auch etwas Geduld mitbring.
                            Genau wie wir hier...

                            Also erster schritt, was muss wie verändert werden, damit es dem neuen standard entspricht??
                            Du hast die Möglichkeit, Hilfe in der Scriptbörse hier im Forum zu bekommen.
                            Alles andere dient nur der Hilfe zur Selbsthilfe, Du mußt schon die Grundlagen selbst erlernen oder zumindest mehr Eigeninitiative zeigen, ansonsten sind wir das falsche Forum für Dich.
                            Das ist nicht böse gemeint, aber alles, was wir Dir hier dann noch genauer erklären, macht die Doku und andere Quellen der Grundlagensammlung bereits meist ausführlicherer Beispielen.
                            Competence-Center -> Enjoy the Informatrix
                            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                            Kommentar


                            • #15
                              Zitat von rene.kindermann Beitrag anzeigen
                              Nun musste ich lesen das meine rangehensweise veraltet ist, hatte gerade erklärt warum. Verstehe zwar nicht warum man die Programmierung so umbauen muss das bewährte Sachen nicht gehen aber gut so ist es halt.
                              Du kannst ja für die alten, aber bewährten Schnittstellen beten. Vielleicht hilft etwas göttlicher Beistand dich vor den Qualen des Erlernens neuer Herangehensweisen zu schützen. Also ich drücke dir beide Daumen

                              Kommentar

                              Lädt...
                              X