Bearbeiten/löschen nur für Poster

  • Hallo Leute,
    ich hab mir nen kleines Forum gebastelt. Der User loggt sich ein und kann dann Posts schreiben. Dabei wird eine Post-ID und eine User-ID in eine Datenbank gespeichert.
    Mit einer Blätterfunktion werden dann 10 Einträge pro Seite ausgegeben. Mein eigentliches Problem:
    überall, wo ein Post von z.b. User-ID 2 erscheint, sollen Buttons mit Bearbeiten und Löschen erscheinen
    kurzum: der User darf nur seine Posts bearbeiten und löschen

    Code
    $ergebnis = safe_query("SELECT * FROM tabelle ORDER BY date usw...");
    while ($ds = mysql_fetch_array($ergebnis)) {
                 if ($ds[userID] == $userID) $action = "Hier die Buttons";
                 echo "Datenausgabe"; }
       Script schließen usw....

    die Variable $userID ist mit dem Login gespeichert und hat immer dieselbe ID (aus der Datenbank)
    Mit dieser Variante hab ich jetzt aber trotzdem überall Buttons...also bei jedem Post... :(
    Was mach ich da falsch?

    mFg
    K. R. Eyden

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress, WoltLab & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

    Wenn du Fragen hast, kannst du dich gerne jederzeit an @Maximilian Rupp wenden

    Hinweis:

  • Du prüfst ja nirgends die UserID 2 die du doch fest haben wolltest? Da müsstest du die Bedingung so abändern, falls ich es richtig verstanden habe:

    Code
    if ($ds[userID] == 2) $action = "Hier die Buttons";

    weil in $UserId ja scheinbar die ID des aktuell eingeloggten Users steht (die nicht immer "2" ist).

  • ja :D
    klar, das war auch nur ein Beispiel
    es schreiben ja viele User (ID 1 bis 83 momentan)
    und da soll eben bei jedem Post des eingeloggten Users diese Buttons erscheinen...sorry, war nicht gut ausgedrückt, kanns aber auch irgendwie nicht gescheit erklären -.-

    mFg
    K. R. Eyden

  • Hi, ich denke mal dein Prob ist ganz simple.
    Ich geh mal davon aus das dir ständig egal von welcher userid immer das Wort "Datenausgabe" ausgegeben wird. Das erklärt sich dadurch das du deiner IF-Abfrage keinen Rumpf gegeben hast! Deine if-Abfrage macht nur die Aktion $action zu fillen. Da ein If ohne Rumpf (if(){rumpf}) generell nur die EINE Zeile danach ausführt alles andere was danach kommt ist immer allgemein wieder gültig. Hoffe das war etwas verständlich. Hier nochmal an deinem Beispiel wie es richtig sein müsste:

    Code
    $ergebnis = safe_query("SELECT * FROM tabelle ORDER BY date usw..."); 
    while ($ds = mysql_fetch_array($ergebnis)) { 
                 if ($ds[userID] == $userID) {
                       $action = "Hier die Buttons"; 
                        echo "Datenausgabe";
                }
    }
       Script schließen usw....


    Das sollte schon des Rätsels Lösung sein, da ansonsten dein Codeschnipsel soweit völlig korrekt ist.

  • Ups, hab mein Topic schon wieder vergessen :oops:
    Hab inzwischen auch die Lösung und zwar hing es an der Reihenfolge! Es muss

    Code
    if ($userID == $ds[userID])...

    heißen und nicht anders herum, dann funktioniert es :)

    In diesem Sinne, allen Abiturienten nächste Woche viel Erfolg, ich schau mir jetzt auch nochmal Mathe an :lol:

    mFg
    K. R. Eyden

Jetzt mitmachen!

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