Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Datensatz löschen per php (mysql)

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Datensatz löschen per php (mysql)

    Hallo irgendwie klappt mein Löschlink nicht.

    Hauptdatei:

    (Teilauschnitt da sonst alles funktioniert da ausgabe der daten aus der tabelle etc)

    Hauptdatei:
    <td><a href='loeschen.php?id=".$row["user_id"]."'>DELETE USER</a></td>

    Die Datei die aufgerufen wird:

    (loeschen.php)
    <?php
    include 'header.php';
    include "config.php";
    $id=$_POST["user_id"];
    $loesch = mysql_query("DELETE FROM ech.user WHERE user_id='.$id.'") OR DIE(mysql_error());
    if($loesch)
    {echo 'Datensatz erfolgreich gelöscht!';}else{echo 'Datensatz nicht erfolgreich gelöscht!';}
    ?>


    Der Link wird immer aufgerufen und er gibt auch immer "Datensatz erfolgreich gelöscht aus" jedoch passieren tut sich nichts.
    Datenbankname: ech
    Tabellennamen: user
    Feldname: user_id


    Danke im Vorraus.

  • #2
    PHP-Code:
    $_POST["user_id"
    Eine URL (= Link) überträgt Daten per GET.
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Hi,

      - PHP Code Tags im WYSIWYG Editor hier nutzen
      - mysql_* ist veraltet. PDO oder mysqli nutzen
      - SQL Injection Problem. Parameter maskieren
      - ist "ech.user" der Name deiner Tabelle??
      - usw.

      mfg Wolf29
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        Und dein (GET-)Parameter heißt auch "id" und nicht "user_id".
        [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

        Kommentar


        • #5
          Danke für die Antworten:
          Istegelitz wo soll ich den Get Befehl den einsetzen.

          wolf29:
          Ich weiss das mit mysqli aber habe folgendes Problem wenn ich das auf mysqli umändere schreibt der sofort raus "wurde nicht übertragen" und wenn ich das I halt wegmache kommt halt erfolgreich übertragen

          Kommentar


          • #6
            Danke aber ich weiss nicht genau wo ich den Get befehl jetzt änderen müsste, könntest du des kurz in dem script

            Kommentar


            • #7
              ech = name der datenbank
              user = name der tabelle in der datenbank

              Kommentar


              • #8
                PHP-Code:
                " ... <a href='loeschen.php?id=".$row["user_id"]." ... 
                PHP-Code:
                $id=$_POST["user_id"]; 
                -> GET statt POST (wurde schon erwähnt)
                -> id statt user_id (wurde auch schon erwähnt)

                PHP-Code:
                $id $_GET['id']; 
                Und ich hoffe das ist abgesichert durch ein Login oder so, sonst kann dir jeder über simple URL-Aufrufe alle Einträge aus der DB Löschen. Das geht dann ohne weiteres ganz leicht, nur als Info!
                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
                  <?php
                  include 'header.php';
                  include "config.php";
                  $id = $_GET['id'];
                  $loesch = mysql_query("DELETE FROM ech.user WHERE user_id='.$id.'");
                  if($loesch)
                  {echo 'Datensatz erfolgreich gelöscht!';}else{echo 'Datensatz nicht erfolgreich gelöscht!';}
                  ?>

                  hab es jetzt so umgeändert.. aber passieren in der Tabelle selbst tut sich immernoch nichts

                  <td><a href='loeschen.php?id=".$row["user_id"]."'>DELETE USER</a></td> wieso hattest du diese Zeile eigentlich mitkopiert ist da auch was falsch.

                  Ja die seite ist mit htaccess und einem login/session script gesichert

                  Kommentar


                  • #10
                    Richtig debuggen

                    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
                    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
                    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
                    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
                    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
                    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
                    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
                    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
                    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
                    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


                    • #11
                      1. ich weiss
                      2. hab ich jetzt drin
                      3. des auch aber er gibt mir eine fehlermeldung mit meinem include also in ner anderen datei, hab die dann im kommentar gesetzt also den include befehl aber funktionieren tuts trotzdem nicht(danach keine fehlermeldung mehr).
                      4. Jo hab schon weiss ja das die verlinkung klapptt, hab schon fast alles in kommentare gesetzt.
                      5.mysqli verträge mein editor nicht so oder so wird sofort als fehler erkannt, weiss mysql ist veraltet aber hab bis jetzt immer geklappt.
                      6. ...
                      7 ... hab 2stunden gesucht bis ich etwas hier gepostet habe.
                      8. deshalb frag ich ja hier jetzt.
                      9. bis jetzt noch nicht aber danke

                      Kommentar


                      • #12
                        hattest du diese Zeile eigentlich mitkopiert ist da auch was falsch
                        Damit du es selbst siehst und auch kapierst (das ist das wichtigste), das du im Link den GET-Parameter id übergibst, aber weiter unten den POST-Parameter user_id abgefragt hast was beides was unterschiedliches.
                        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
                          Zitat von hausl Beitrag anzeigen
                          Damit du es selbst siehst und auch kapierst (das ist das wichtigste), das du im Link den GET-Parameter id übergibst, aber weiter unten den POST-Parameter user_id abgefragt hast was beides was unterschiedliches.
                          Okay danke. Leider hat es nicht gebracht, habe irgendwo noch n fehler _._

                          Kommentar


                          • #14
                            Okay danke. Leider hat es nicht gebracht, habe irgendwo noch n fehler _._
                            ...dann debugge!! Lass dir die einzelnen, zu erwartenden Werte ausgeben. Kommen alle Werte da an wo du sie haben willst? usw.
                            while (!asleep()) sheep++;

                            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                            Kommentar


                            • #15
                              PHP-Code:
                              <?php
                                error_reporting 
                              (E_ALL);
                                
                              ini_set("display_errors"true);
                                
                                include 
                              'header.php';
                                include 
                              "config.php";
                                
                                if (isset(
                              $_GET['id']))
                                {
                                   
                              $query "DELETE 
                                               FROM 
                                                `ech.user`
                                               WHERE 
                                                `user_id`= " 
                              mysql_real_escape_string($_GET['id']);
                                  
                                   
                              mysql_query($query)
                                     or die (
                              "MySQL-Fehler: " mysql_error());
                                     
                                   if (
                              mysql_affected_rows() > 0)
                                     echo 
                              'Datensatz erfolgreich gelöscht!';
                                   else
                                     echo 
                              'Datensatz nicht erfolgreich gelöscht!';
                                }
                                else
                                  echo 
                              "Parameter fehlt";   
                              ?>
                              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

                              Lädt...
                              X