Ändern Sie die Anzeige eines Elements anhand von Kriterien

9

Ich möchte, dass Benutzer unterscheiden können, ob sie für etwas gestimmt haben (indem sie es fett gemacht haben) oder noch nicht dafür gestimmt haben (nicht fett gedruckt).

Zum Beispiel:

%Vor%

So wird meine Datenbank eingerichtet:

Einführung

Enthält Nachrichten

%Vor%

Abstimmung

Enthält Abstimmungen

%Vor%

Benutzer

Enthält Benutzernamen

%Vor%

Ich weiß nicht, wie ich die Datenbank richtig abfragen soll, und mache dann die richtige if statement , die zwischen "abgestimmt" und "nicht abgestimmt" für Beiträge unterscheidet.

Folgendes habe ich bisher:

%Vor%

Irgendwelche Ideen?

    
uneducatedguy 25.01.2013, 20:56
quelle

2 Antworten

4

Verbinde dich mit der Abstimmungstabelle und überprüfe, ob entsprechende Elemente gefunden wurden:

%Vor%

Dann in PHP:

%Vor%

Einige Erklärungen:

  • Spalten aus einer LEFT JOIN ed-Tabelle sind NULL , wenn keine übereinstimmenden Zeilen gefunden wurden
  • IF() ist eine Funktion, die den zweiten Parameter zurückgibt, wenn der erste Parameter true ergibt, andernfalls den dritten Parameter. Als eine Funktion kann es leicht in der SELECT -Klausel
  • verwendet werden
  • Ich habe SELECT * durch explizite Auswahl der benötigten Spalten ersetzt, was als Best Practice angesehen wird und in diesem Fall wegen mehrdeutiger Spaltennamen erforderlich ist
  • Natürlich müssen Sie das Literal 5 durch Ihre aktuelle Benutzer-ID ersetzen. Verwenden Sie vorbereitete Anweisungen oder verketten Sie die Abfrage wie folgt: "...Voting.user_id = " . intval($current_user_id) . "..."
Fabian Schmengler 28.01.2013, 10:33
quelle
1

Wenn Sie nur die Posts haben möchten, bei denen der aktuell angemeldete Benutzer (sagen wir der Benutzer mit user_id = 3) sie upvoted hat, könnten Sie diese Abfrage verwenden:

%Vor%

Verwenden Sie in Ihrem Code die richtige Prozedur, um die obigen 3 durch die user_id des aktuell angemeldeten Benutzers zu ersetzen.

SQL Fiddle

Wenn Sie diese Abfrage ausführen, werden Sie feststellen, dass ich dem Ergebnis eine Spalte hinzugefügt habe: voting_id.

Wenn der Nutzer diesen Beitrag hochgestuft , wird die ID der Abstimmung angezeigt. Wenn der Nutzer nicht hochlädt, wird NULL angezeigt.

Sie können dann dieses Feld in Ihrem Code für not null markieren und fertig!

    
Marty McVry 25.01.2013 21:16
quelle

Tags und Links