Hallo,
ich hoffe, dies ist nicht das falsche Unterforum, aber die MySQL-Probleme meines Anliegens sind eher die kleineren. Vielmher geht es mir um Arrays und Listen in PHP:
Ich habe vor, die einzelnen Stimmen eines beendeten Votings meines phpBB-Forums in (nicht ganz) zufälliger Reihenfolge in ein Array anzuordnen. Leider habe ich von PHP noch nicht viel Ahnung, von MySQL noch weniger. Der logische Aufbau, also die einzelnen Programmierschritte, kann ich aber formulieren. Vielleicht kann jemand das nach PHP "übersetzen".
1) Lies aus der SQL-Tabelle
vote_results die Spalte
vote_result aus.
Beginne in Zeile
$ANFANG und gehe bis Zeile
$ENDE
Die Tabelle könnte z.B. wie folgt aussehen
Code:
|vote_id|vote_option_id|vote_option_text|vote_result|
|-------|--------------|----------------|-----------|
| 1 | 1 | Erdbeer | 3 |
| 1 | 2 | Vanille | 13 |
| 1 | 3 | Schokolade | 7 |
| 2 | 1 | Peter | 3 |
| 2 | 2 | Gabi | 1 |
| 2 | 3 | Johannes | 5 |
| 2 | 4 | Sabrina | 0 |
| 2 | 5 | Julius | 2 |
| 3 | 1 | wunderschön! | 7 |
| 3 | 2 | naja, es geht | 2 |
| 3 | 3 | unerträglich! | 3 |
Entsprechend würde ich (von Hand)
$ANFANG=4 und
$ENDE=8 (ich gehe mal von Indizierung ab 1 aus) festlegen. Schöner wäre es natürlich, wenn ich dem Programm sagen könnte, es solle genau die Spalten mit
vote_id = 2 auslesen.
2) Schreibe die ausgelesenen Werte in ein Array $a[]
Dies sähe nun so aus: {3, 1, 5, 0, 2}
3) Fertige nun eine einfache Liste an, in der jeder Wert
i von [i]vote_option_id $a-mal wiederholt wird, also:
11123333355
Nachfolger des letzten Elementes soll wieder das erste Element sein, also eine Art "Kreis".
4) Diese Liste soll nun DETERMINISTISCH permutiert werden.
Dazu gebe ich eine bestimmte Zahl vor, um wie viele Schritte jeweils weitergegangen, der Wert in ein Array
$b[] geschrieben und das ausgelesene Element aus der Liste entfernt wird. Gebe ich z.B. die Zahl 7 vor und fange am Anfang der Liste an, so muss das Resultat bei JEDEM Aufruf der php-Seite folgendes Array anzeigen:
32153513133
Das wäre es eigentlich schon. Mir fehlt derzeit einfach jegliches Know-How, dies in php- und sql-Syntax zu übersetzen, und - auch wenn das wie eine doofe Ausrede klingt - ich habe leider gerade KEINE Zeit, mich da noch groß einzuarbeiten. Es ist aber trotzdem relativ dringend. Also, wenn von Euch jemand kurz das entsprechende Script anfertigen könnte, wäre ich verdammt froh!
Danke im Voraus!
Thomas