Hallo, Gast! (Registrieren)

Wir wünschen allen Besuchern frohe Ostern!

Letzte Ankündigung: MyBB 1.8.37 veröffentlicht (04.11.23)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Laufende Umfrage
#11
(02.05.2019, 12:48)Schnapsnase schrieb: Schau mal hier
Evtl. bietet ja dieses Plugin das, was Du suchst.

Das sieht gut aus! Das könnte was sein. Ich werde es mal installieren und berichten. Vielen Dank!

@itsmeJAY: Sorry, ich kann verstehen, wenn du deine Arbeit nicht wertgeschätzt fühlst, daher hier ein paar Richtigstellungen:

1. Die Worte "Ich halte dich bei deiner Idee nicht auf. Wink Du bist gerne jederzeit willkommen zu helfen. Smile" waren als Witz gemeint. Ich hätte nicht wirklich gedacht, dass du dich wirklich ran machst. Ich dachte, ich war auf mich alleine gestellt.

2. Ich hatte dann eine Lösung gefunden, indem ich einfach die Benutzergruppen kopiert habe, aber ohne PN-Rechte. Normal berichte ich immer ein Fazit im Thread. Mache ich vielleicht auch noch. Aktuell habe ich nur viel zu tun. Mein Forum fordert viele Todo-Punkte.

3. Ich habe deine Antworten simpel übersehen. Es ist untergegangen. Ich habe nicht mal gewusst, dass du dafür extra ein Plugin programmiert hast. Ich werde es gerne mal testen, wenn ich zu komme.

4. Mir war nicht im geringsten bewusst, dass du der selbe Nutzer bist, wie aus dem anderen Thread. Ich merke mir die Namen nicht und kann mir überhaupt schlecht Namen merken.

5. Mir war daher auch nicht bewusst, dass du die Sinn-Frage in dem Zusammenhang stellst, gleich ein ganzes Script zur Lösung zu programmieren. Das habe ich weder hier, noch im anderen Thread ernsthaft erwartet.

Daher erübrigt sich alles andere, finde ich. Eine Diskussion über Programmiererei mit dir würde ich mir auch nicht zutrauen. Wink
(02.05.2019, 12:48)Schnapsnase schrieb: Schau mal hier
Evtl. bietet ja dieses Plugin das, was Du suchst.


Das Plugin hilft leider doch nicht. Es löscht die Abstimmungen der gesamten Umfrage raus. Mit anderen Worten, sind dann alle Abstimmungen aller Antwortmöglichkeiten weg. Es sei denn, ich übersehe was?

Was wir benötigen ist, die Abstimmungen von nur einer Antwortmöglichkeit zu entfernen. Die restlichen Stimmen sollen vorhanden bleiben.

Sinn: Das brauchen wir, weil wir eine Top 5 durch die Community bestimmen lassen wollen. Doch dabei variieren diverse Kandidaten der Umfrage. Hierfür müssen nicht nur welche ergänzt, sondern auch entfernt oder ersetzt werden, derweil andere Punkte davon unberührt bleiben.

Ein Neustarten der Umfrage ist, auf egal welche Art, daher leider keine Lösung - auch nicht durch Reset der ganzen Umfrage.
Zitieren
#12
Moin,

ich muss mal schauen, ob ich da demnächst Zeit zu finde. Ich habe mir das gerade angeguckt, ist etwas komplizierter (zumindest zu entwickeln, manuell geht es recht schnell). Zuerst müssen in der Tabelle mybb_pollvotes alle Datensätze gelöscht werden, die PID (Poll-ID)  = aktueller Umfrage sind UND zusätzlich voteoption = ausgewählter Option sind.

Beispiel:

Hast du also eine Umfrage "Welcher Tag ist heute?" und die Optionen "Montag, Dienstag, Mittwoch, Donnerstag, Freitag" und du möchtest ALLE Votes für Mittwoch löschen, müsste folgender Query ausgeführt werden:

Code:
DELETE FROM `mybb_pollvotes` WHERE pid = 1 AND voteoption = 3;

Wie bereits geschrieben ist pid die ID der Umfrage und voteoption wäre im Grunde die 3 Position/Option der Umfrage, also Mittwoch. Die pid findest du heraus, indem du dir die Ergebnisse einer Umfrage anguckst. Oben in der URL/im Link steht die pid dann (z. B. showresults&pid=1).

Zusätzlich müsste in der Tabelle mybb_polls die Spalte "votes" und "numvotes" abgeändert werden. Die Spalte "votes" hat folgenden Inhalt:

Code:
0||~|~||0||~|~||1||~|~||1||~|~||0

Bedeutet, es wurde bis jetzt 1x für Mittwoch und 1x für Donnerstag gevotet. Die dritte Stelle müsste also zu 0 geändert werden und anschließend in der Spalte "numvotes" die abgezogene Anzahl subtrahieren. Steht dort also bspw. 10 - dann wurden 10 Votes abgegeben - dort müsste man in dem Fall -1 rechnen und zu 9 ändern.

Das war es eigentlich schon. Solltest du es manuell machen wollen, dauert es evtl. 3 Minuten. Bezüglich Entwicklung ist das einzig schwierige eigentlich, wie man folgenden Inhalt verwerten kann:

Code:
0||~|~||0||~|~||1||~|~||1||~|~||0
Zitieren
#13
Gerade paar Minuten gehabt. Ich weiß zwar nicht, weshalb die MyBB Entwickler dies so in die DB gepackt haben, verwertet werden könnte das im Plugin allerdings so (vielleicht kommt ja jemand anderes vorher dazu, dazu ein Plugin zu schreiben oder ein Script). 

Der erste Schritt war ja klar, Query ausführen. Wenn Option 3 (also Mittwoch) zurückgesetzt werden soll:

Code:
DELETE FROM `mybb_pollvotes` WHERE pid = 1 AND voteoption = 3;

Anschließend kann Tabelle mybb_polls wie folgt verwertet werden:

PHP-Code:
// Kommt so aus der DB in mybb_polls, Spalte "votes"
$string "0||~|~||0||~|~||1||~|~||1||~|~||0";
// Kommt so aus der DB in mybb_polls, Spalte "numvotes" - also insgesamt abgegebene Stimmen
$numvotes "2";

// Hole nur die Zahlen aus dem String mit explode:
$array explode("||~|~||"$string);

// Welcher Option der Umfrage soll auf 0 gesetzt werden?
$wert "3";

//Setze die Option 3 (siehe oben) der Umfrage auf Wert 0
//-1 rechnen weil Array bei 0 beginnt und Option 3 im Index 2 steht
//numvotes minus die Anzahl die zurückgesetzt wird
$numvotes -= $array[$wert-1];
$array[$wert-1] = "0";

//Füge das Array wieder als String zusammen
$string implode("||~|~||"$array);

//Zeige Resultat
echo $string;
//Ergebnis: 0||~|~||0||~|~||0||~|~||1||~|~||0
echo $numvotes;
//Ergebnis: 1

// Nächster Schritt: $string und $numvotes wieder zurück in die DB und mit alten Werten ersetzen! 

PS: Brauchst du dazu unbedingt ein MyBB Plugin oder würde auch ein schneller, simpler PHP Script gehen? 
Zitieren
#14
Hier mal als simples PHP Script - keine Ahnung ob es dir weiterhilft. Einfach in das Forumverzeichnis legen und aufrufen über www.beispiel.de/resetoption.php (wichtig: musst in deinem Forum eingeloggt sein als Admin - sorry aber derzeit keine Zeit um daraus nen Plugin zu machen) (ps: wie immer: Vorher in eigener Testumgebung testen - Code kann geändert werden bei Bedarf)

gute Nächtle


Angehängte Dateien Thumbnail(s)
                   

.php   resetoption.php (Größe: 2,42 KB / Downloads: 3)
Zitieren
#15
Zu deinem ersten Beitrag: Die Zahl der Beispieloption "Mittwoch" könnten wir ja noch selber auf 0 ändern. Das Problem ist, wenn wir das tun, dann bleiben die vorherigen Stimmen vorhanden. Verändern wir den Punkt nun also zu "Samstag" und jemand votet dafür, derweil jemand seine Stimme zurückzieht, die noch vorhanden war, als wir die Option auf 0 setzten, dann bekommt der Punkt sozusagen -1.

Und das ist einfach mal total schlecht geregelt von Mybb.^^

Ich glaube sogar, du meinst das selbe.

(06.05.2019, 14:47)itsmeJAY schrieb: PS: Brauchst du dazu unbedingt ein MyBB Plugin oder würde auch ein schneller, simpler PHP Script gehen? 

Ein PHP-Script würde vollkommen ausreichen. Wenn man dort die jeweilige Option auswählen kann und das Script dann alle Stimmen von der rauswirft, perfekt.
Zitieren
#16
Ist bereits oben das Script. Teste es mal und schau ob es so läuft.
Zitieren
#17
(06.05.2019, 21:02)itsmeJAY schrieb: Hier mal als simples PHP Script - keine Ahnung ob es dir weiterhilft. Einfach in das Forumverzeichnis legen und aufrufen über www.beispiel.de/resetoption.php (wichtig: musst in deinem Forum eingeloggt sein als Admin - sorry aber derzeit keine Zeit um daraus nen Plugin zu machen) (ps: wie immer: Vorher in eigener Testumgebung testen - Code kann geändert werden bei Bedarf)

gute Nächtle

Kein Ding, du hast da schon, wie gesagt, mehr Zeit eingesetzt, als ich jemals erwartet hätte.

Ich teste mal das Script und berichte dann.

(07.05.2019, 08:58)itsmeJAY schrieb: Ist bereits oben das Script. Teste es mal und schau ob es so läuft.

Jau, grad gelesen.^^

Scheint zu funktionieren!

Falls noch jemand das Script nutzen will:

Habe mich gerade noch gefragt, wo ich die Umfrage ID finde, aber einfach auf "Umfrage bearbeiten" klicken und in der Browserzeile oben die letzte Nummer nehmen.

Die Nummer der Option ist natürlich die, die man dort bei "Umfrage bearbeiten" auch sieht.

Das Script wird nun bei mir in Aktion treten. Smile

Vielen Dank!
Zitieren
#18
Freut mich, dass es so läuft wie vorgestellt. Vielleicht (aber auch nur vielleicht) werde ich dazu noch ein Plugin schreiben, momentan aber eher nicht. Der Zeitaufwand bei Plugins ist immer so hoch (inkl. Übersetzungen, etc).

Genau richtig, einfach in einer Umfrage auf "Ergebnisse ansehen" oder halt eben "Umfrage bearbeiten" klicken und oben erscheint in der URL die pid. Die Option-ID ist korrekt beschrieben von dir. 

Sollte es Schwierigkeiten geben, einfach melden hier.  Toungue
Zitieren