Vorgehensweise Anfängerfrage

sparky3

Grünschnabel
Ich möchte gerne mehrere Fragen auf einer Seite z.B. 10 Fragen plazieren.
Diese 10 Fragen sollen aus einem Pool (ca. 500 Fragen) jedesmal wenn die Seite neu aufgerufen wird per Zufall neu ausgewählt werden.
Da ich nicht für jede Frage eine Datei schreiben möchte, wäre mein Ansatz jetz:
Diese Fragen in einer Datenbank abzuspeichern, und sie per Zufall aus der Datenbank auszulesen, den Text der Fragen einer Variablen zu übergeben und so in einer Datei auszugeben.
Meine Frage, ist mein Ansatz vielleicht falsch oder gibt es noch eine elegantere Lösung?
Bsp. mit Klassen?
Kennt dazu jemand zufällig ein Tutorial?
Erst mal vielen Dank fürs lesen und die eventuellen Kommentare.:)
 
Tja werde das wohl dann mal mit einer Datenbank lösen, dachte nur vielleicht geht es mit noch weniger Aufwand.
vielen Dank erstmal :)
 
Irgendwoher müssen die Daten kommen, und wenn du sie nicht hart eingebettet in einer PHP einfügen willst, ist eine datenbankbasierende Lösung mitunter am schnellsten, saubersten und vor allem einfachsten:
SQL:
SELECT
        `question`
FROM
        `table`
ORDER BY
        RAND()
LIMIT
        10

Mal ganz ohne Schnickschnack wie das Ausschließen bereits gestellter Fragen (Sessionbasierende Speicherung eines ValueSts, WHERE NOT IN (valueset)) oder das Vorgeben von Antworten. Solltest du letzteres doch noch gerne einbauen und einen sinnvollen Ansatz suchen, gäbe es eine In-Variante über ein Query oder eine zweite Variante mit zwei Queries, die relativ effizient funktionieren würden. Habe aber jetzt keine Lust einfach auf Verdacht zwei Pseudoqueries zu schreiben.
 
Vielen Dank für die Antwort, hab mir schon gedacht das es wohl am einfachsten mit einer DB ist, ist halt viel langweilige Schreibarbeit. Mit Klassen das wär auch Quatsch, da die DB nicht komplex ist und ohnehin nur ganz einfach gestrickt sein soll.
Vielen Dank auch für den Codeschnippsel.
 
Man könnte auch einfach alle Fragen in ein Array schreiben (wenn Anworten mit rein sollen, dann halt ein mehrdimensionales Array) und dann per Random-Funktion 10 daraus auswählen und ausgeben. Wie das jetzt vergleichsweise zu einer DB-Lösung abschneidet, kann ich nur mutmaßen. Das müsste man testen.
 
Nochmal herzlichen Dank, das ganze in einem Array zu speichern ist sicher auch eine Idee allerdings denke ich wird das dann doch noch komplizierter.
Aber vielen Dank!

Jetzt hab ich leider ein neues Problem (schäme mich wirklich, da ich das Einfachste vom Einfachen nicht mehr hinbekomme)

Habe mich also für eine DB entschieden, möchte nun über ein Eingabeformular die Datensätze in eine DB einlesen. Leider funktioniert das nicht, sodaß ich erst mal ausprobiert habe ob ich in der Lage bin in einer DB mit nur einer Tabelle und nur zwei Feldern (ID und JokeText) einen Datensatz zu speichern. Aus Verzweiflung über meine Dum.... habe ich sogar ein Skript aus einem Buch abgeschrieben, dennoch es funktioniert nicht.
Woran kann es liegen? Die Auswahl der DB funktioniert (immerhin...)

Die DB heißt jokes und die Tabelle text die Felder ID und JokeText


$sql="INSERT INTO jokes SET
JokeText='$jokeText'";
if (@mysql_query($sql)){
echo("<p>die Daten wurden hinzugef&uuml;gt.</p>");
}else{
echo("<p>Fehler beim hinzuf&uuml;gen" .
mysql_error() . "</p>");
}
} ?>
<form action="<?=$PHP_SELF?>" method="post">
<p>Frage:&nbsp;<textarea name="jokeText" rows="10" cols="40" wrap>
</textarea>
<br><br>
<input type="submit" name="submitjoke" value="Speichern"></p>
</form>

Nochmal vielen Dank
 
Sofern die Variable $jokeText im Buch erwähnt wurde, verbrenn selbiges - Wahrscheinlich arbeitet man dort mit register_globals aktiviert :eek: , was man nicht tun sollte, und was dein Host wohl auch nicht hergibt.
Deshalb ist eventuell Folgendes besser:
PHP:
$sql="INSERT INTO jokes SET
JokeText='" . mysql_real_escape_string( $_POST['jokeText'] ) . "';";

Statt einer einzelnen Variable wird ein Feld im Array $_POST (Superglobal) erstellt, das funktioniert auch mit $_GET, etc.
 
Zurück