Löschen bei 3 Verwanungen

  • Guten Tag,


    ich bin grad dabei ein Verwarnungssystem zu machen.


    Meine Idee war das ich in die Datenbank eine Spalte "Verwarnung" mache.


    Sobald den Wert auf 3 steht, soll der User welcher diese 3 Verwarnungen hat gelöscht werden.



    Jeder User hat eine eigene ID



    Angefangen habe ich so:


    Code
    if($userData["strikes"] == "3") {
    $deleteUser = $dbv->prepare("DELETE FROM users WHERE userId = :userId")
    }



    Dies klappt jedoch nicht.


    Kann mir jemand dabei helfen?

  • Code
    if($userData["strikes"] === "3") {
                $deleteStrike = $dbv->prepare("DELETE FROM users WHERE userId = :userId");
                $result = $deleteStrike->execute(array(":userId" => $userId));
        }

    Grandiose Problembeschreibung! :wacko:


    Für deine "Problembeschreibung"


    "Es passiert nichts dabei"

  • Ich kann dir nicht viel helfen,weil ich bekomme die sachen gerade selbst so auf der Kette. Mit den kurzen Code kann man sowieso nicht viel anfangen.

    Aber meißt wird auch gerne ein doofer fehler gemacht und die if bedingung passt überhaupt nicht.

    Hat $userData["strikes"] überhaupt eine 3 in der Datenbank stehen ? Wenn nein ist ja klar das es nicht geht ,wenn ja kann ich ohne den ganzen Code auch nix testen weil dazu bin ich noch nicht gut genug in den Thema

  • Ohne Fehlermeldung keine Lösung.


    Aber Du stellst 2 Varianten von Code:

    Code
    if($userData["strikes"] == "3") {
    // und
    if($userData["strikes"] === "3")

    === vergleicht Wert und Typ.

    == vergleicht nur den Wert - versucht zB String "3" zu Integer 3 umzuwandeln


    Ich empfehle:

    Code
    if((int)$userData["strikes"] === 3) {
        // (int) zwingt den inhalt von $userData["strikes"] zu einem integer.
    }


    Hinweis:

    Ich empfehle dringend LIMT 1 bei einem DELETE zu nutzen, welches nur eine Zeile löschen soll.

    DELETE FROM users WHERE userId = :userId LIMIT 1;

    So vermeidest Du durch einen "Unfall" alle|mehrere Zeilen zu löschen.

  • Wie genau soll ich das also machen?



    Code
    if((int)$userData["strikes"] === 3) {
        // (int) zwingt den inhalt von $userData["strikes"] zu einem integer.
    }


    Das verstehe ich grad nicht ^^

  • Also es muss so sein:


    Jeder User hat eine eigene "userId".


    Sobald ein Benutzer 3 Strikes hat soll dieser gelöscht werden. Also die UserId mit 3 Strikes.

    ----------------------------------------------------------------------------------------------------------------------------------------------


    Aktuell ist es so, das wenn ich eingeloggt bin und mir selber 3 Strikes gebe werde ich entfernt. Aber wenn der andere Account der nicht angemeldet ist 3 Strikes hat passiert nichts.



    Es muss also die userId mit den 3 Strikes gelöscht werden. Egal ob diese userId eingeloggt ist oder nicht.

  • Und wie mache ich das dann?


    Ich hab's von dieser Seite


    https://www.php-einfach.de/mysql-tutorial/daten-loeschen/

    Von dieser Seite genommen:

    SQL Erklärung:

    SQL
    DELETE FROM `users` 
    WHERE 
        userId = :user_id -- diesen user - klar
        AND strikes >= 3  -- falls er (noch) 3 oder mehr strikes hat
        LIMIT 1           -- auf jeden fall nur einen user löschen (falls an der query mal gearbeitet wird ... siehe meinen vorigen post ...)
    ;


    Notes:

    Ich empfehle die Tabelle `user` zu nennen (Einzahl).

    Würde auch kein camelcase (userId) in SQL verwenden. Alles klein und Leerzeichen als Unterstrich. zB user_id.

    Ist aber nicht wichtig.

  • Fang doch erstmal an zu debuggen!


    1. Steht in $userId das drin, was Du erwartest?! ( var_dump )
    2. Setz die Query auf Datenbankebene manuelle ab und schau, ob ein Fehler kommt ( bspw. phpMyAdmin )


    Alles andere ist nur rumgerate.

  • Are you kidding me???


    Zu 1: Die Frage war etwas erweitert darum, ob das was darin steht, dem entspricht, was Du erwartest?!

    Zu 2: Und was ist dabei rausgekommen?!


    Wenn Du weiterhin wichtige Informationen nur auf Rückfrage hergibst, bin ich hier raus.

  • Bei der UserId steht immer die ID von dem User drin. Jeder Benutzer hat seine eigene ID


    Ich habe wie gesagt die Verwarnungen direkt in der Datenbank auf 3 Gesetzt und habe geguckt ob der Benutze aus der Datenbank entfernt wurde. Dies war nicht der Fall.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!