0

Voting Button mit zähler

Hat jemand eine brauchbare Idee wie man einen Voting Butten mit einem Zähler umsetzen könnte?

 

Voting sollte auch wider unvoting möglich sein, am besten halt eine Farbige Auswahl und eine Markierung das man gevotet hat.

10 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Sandro, wenn mehrere Nutzer für einen Datensatz voten sollen, dann müsste man das wohl mit einer Untertabelle machen. Diese Untertabelle, nennen wir sie 'Votes', bräuchte nur ein Textfeld namens 'User'. Dann erstellt man zwei Schaltflächen für "Vote" und "Unvote".

    Schaltfläche "Vote"

    Code:
    let me := this;
    let newV := (create Votes);
    newV.(Voting := me);
    newV.(User := user())

    Option "Nur anzeigen, wenn":
    let myUser := user();
    cnt(Votes[User = myUser]) = 0

    Schaltfläche "Unvote"

    Code:
    let myUser := user();
    delete Votes[User = myUser]

    Option "Nur anzeigen, wenn":
    let myUser := user();
    cnt(Votes[User = myUser]) > 0

    Je nachdem, ob der aktuelle User schon gevotet hat oder nicht, erscheint nun entweder die Schaltfläche "Vote" oder "Unvote". Die untertabelle selbst kann komplett ausgeblendet werden ("false" bei "Nur anzeigen, wenn"). Wieviele User gevotet haben, lässt sich mit einem Funktionsfeld berechnen und anzeigen: "cnt(Votes)".

    • GrischaMedia.ch
    • grischabock
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter

    Danke für deine Anleitung, ich habe diese mal so übernommen, ich musste jedoch noch ein Feld "Voting" erstellen in der Untertabelle da es der Code der Vote Schaltfläche fehlerhaft war in Zeile 3 Spalte 15.

     

    Nun kann ich die Vote Schaltfläche sehen und auch Voten, in der Untertabelle werden dabei aber komische Einträge gemacht (Siehe Bild)

     

    Nach dem Voten kommt die Unvote Schaltfläche aber nicht und das Berechnungsfeld zeigt immer noch 0 an.

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Sandro
    Die Einträge in der Untertabelle sind schon richtig.

    Es wird die von Ninox vergebene User-ID reingeschrieben.
    Wenn du den Klarnamen haben möchtest, must du user() mit userName() ersetzen oder besser ein weiteres Textfeld in der Untertabelle erstellen, nennen wir es 'Username'

    dann erweiterst du den Code bei der Schaltfläche 'Vote' um:  newV.(Username := userName())

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Erweiterung:

    Du musst in der Untertabelle Votes kein Feld 'Voting' erstellen.

    Statt newV.(Voting := me) musst du den Namen deiner Haupttabelle statt 'Voting' einsetzen. Wenn also deine Aufruftabelle mit den Buttons 'Pumuckl' heist, lautet die Zeile newV.(Pumuckl := me). Sonst hast du keinen Bezug des Records der Untertabelle zu dem Record der Haupttabelle und kannst keine Auswertungen vornehmen wieviel User diesen Record gevotet haben.

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ja, in meinem Beispiel hatte ich die Haupttabelle 'Voting' genannt, die Untertabelle 'Votes'. Hätte ich noch deutlicher machen können. Es muss also, wie Uwe schon richtig gesagt hat, nur der Name 'Voting' durch den tatsächlichen Namen der Haupttabelle mit den zu votenden Datensätzen ersetzt werden. Dann sollte der Code genau so funktionieren.

    • GrischaMedia.ch
    • grischabock
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ah ja da hätte ich ja auch drauf kommen können, teste das Abend.

     

    Danke euch beiden

    • GrischaMedia.ch
    • grischabock
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hat nun super geklappt, wäre es noch Möglich dass die Votes nur eine Ansicht wären und nicht eine Tabelle der Verknüpfung bei der man Datensätze erstellen kann?

    Die User sollen nur die Votes sehen können aber man soll halt keinen neuen Datensatz erstellen. Aus dem Grund kam mir die Idee mit der Ansicht.

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Sandro.

    Klar geht das. Wie Axel beschrieben hat, knnst du die Verknüpfung mit Anzeigen wenn = false oder null ausblenden.
    Dann kanst du dir eine Ansicht der Untertabelle erstellen, bei der du den Filter auf die Record-ID der Haupttabelle setzt.
    Damit bekommst du dann alle Votes zu dem Datensatz angezeigt.

    • GrischaMedia.ch
    • grischabock
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe

    Wie meinst du das mit dem Filter und der Record-ID ?

    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Gestaltungslement "Ansicht" erstellen und dort bei "Funktion" eintragen:

     

    let me := this;
    select Votes where Voting = me

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 10Antworten
  • 781Ansichten