Ankündigung

Einklappen
Keine Ankündigung bisher.

Zufällige Fragenausgabe

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zufällige Fragenausgabe

    Hallo,
    für die Website meines Vereins entwickle ich grade ein Quiz. Man soll einstellen können, wie viele Fragen man angezeigt bekommen möchte und diese Anzahl an fragen soll dann zufällig aus dem Verzeichnis geladen werden. So weit so gut. Zum Problem (1): Auch wenn man auf Auswertung klickt werden die Fragen zufällig ausgewählt, es werden also andere Fragen bewertet als die bearbeiteten. Hat dafür jemand ne Lösung?


    PHP-Code:
    <body>
        <?php 
            
    include ("header.php");
            
    //Voreinstellung für inkaktives Quiz
            
    $quiz false;
            
    $farbe false;    
            
    $einfachefragen true;
            
    $mittlerefragen true;
            
    $schwerefragen true;    

            
    //Quiz wird aktiviert
            
    if (isset($_POST['quiz'])){ $quiz true;}
            
    $punkte 0;    
            
    $wievielefragen 3;
            
    $fragenbremse 0;
            
    $fragensatz = array("quiz/arraystartinhalt.txt");   //Arraysetzung damit man ihm was anhängen kann
        
    ?>
        <main>
            <section id=Fechten>
                <h1 id=topping >Quiz für Fechter</h1>
                <article style="width:80%;margin:auto;">
                    <form action="quiz.php#auswertung" method="post">

                    <?php 

                    
    if ($einfachefragen == true){
                        
    $alle_a_fragen scandir('quiz/a'); //A-Fagen auslesen 
                        
    foreach ($alle_a_fragen as $a_fragen) { // Ausgabeschleife                
                            
    if ($a_fragen != "." AND $a_fragen != ".."){ //den "Müll" rauslassen 
                            
    $a_pfad "quiz/a/".$a_fragen//Fragendateipfad
                            
    array_push($fragensatz$a_pfad);//Einfügen in den Fragensatzdateipfadarray
                    
    }}}
                    if (
    $mittlerefragen == true){
                        
    $alle_b_fragen scandir('quiz/b'); //B-Fagen auslesen 
                        
    foreach ($alle_b_fragen as $b_fragen) { // Ausgabeschleife                
                            
    if ($b_fragen != "." AND $b_fragen != ".."){ //den "Müll" rauslassen 
                            
    $b_pfad "quiz/b/".$b_fragen//Fragendateipfad
                            
    array_push($fragensatz$b_pfad);//Einfügen in den Fragensatzdateipfadarray
                    
    }}}
                    if (
    $schwerefragen == true){
                        
    $alle_c_fragen scandir('quiz/c'); //A-Fagen auslesen 
                        
    foreach ($alle_c_fragen as $c_fragen) { // Ausgabeschleife                
                            
    if ($c_fragen != "." AND $c_fragen != ".."){ //den "Müll" rauslassen 
                            
    $c_pfad "quiz/c/".$c_fragen//Fragendateipfad
                            
    array_push($fragensatz$c_pfad);//Einfügen in den Fragensatzdateipfadarray
                    
    }}}

                    
    //Entgültige Reihenfolge und Ausgabe nach Zusammenstellung aller Fragen

                    
    if ($quiz == false) {shuffle($fragensatz);}
                    foreach (
    $fragensatz as $fragenausgabe){ //Endprozess der Fragen startet hier
                        
    if ($fragenbremse <=  $wievielefragen){ //Begrenze Fragenanzahl gemäß Einstellung
                        
    include ($fragenausgabe);
                        ++
    $fragenbremse;
                    }}
                    
    ?>

                    <input type=submit value="Auswerten">
                    <input type=hidden name="quiz" value="quizA"> 
                </form>
                </article>

                <?php if ($quiz == true) {include ("quiz/auswertung.php"); } ?>

            </section>
        </main>

    Problem (2): Es werden mal drei Fragen angezeigt und mal vier, obwohl lich eindeutig angegeben habe dass die Fragenanzahl <= 3 sein soll. Woran liegt das?

    Vielen Dank schonmal
    LG

  • #2
    Dein Grundproblem ist, dass Du dafür keine Datenbank verwendest.
    In einer Datenbank hat jede Frage idealer Weise eine ID. Wenn 3 Fragen per Zufall herausgesucht wurden, hast Du die entsprechenden IDs und kannst die Beantwortung in Abhängigkeit dieser speichern.
    Die Auswertung ist dann am Ende nur noch eine simple Datenbankabfrage.

    Auf Datei-Ebene macht das wirklich nicht viel Sinn, daher nutze die Gelegenheit, Dich mit Datenbanken zu beschäftigen.
    Das macht es am Ende nur einfacher und sinnvoller.
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Arne Drews okay, dann sollte ich mich wohl mal damit auseinander setzen... Aber hast du nicht trotzdem vielleicht eine Idee woran es liegen könnte?
      Und Problem 2 löst ja auch eine Datenbank nicht oder?

      Kommentar


      • #4
        Und Problem 2 löst ja auch eine Datenbank nicht oder?
        Doch weil du dir dann einfach nur 3 Fragen aus der DB holst.
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Zitat von Molocho Beitrag anzeigen
          Arne Drews okay, dann sollte ich mich wohl mal damit auseinander setzen... Aber hast du nicht trotzdem vielleicht eine Idee woran es liegen könnte?
          Naja Problem 1 ist klar, weil er sich bei jedem Neu laden neue Zufallsfragen zieht. Auch hier müsstest Du Dir die Fragen merken.
          Aber glaub mir, das ist alles viel zu umständlich, nimm eine Datenbank.

          Zitat von Molocho Beitrag anzeigen
          Und Problem 2 löst ja auch eine Datenbank nicht oder?
          Ich denke, dass Du dies Problem mit einer DB gar nicht erst hättest.

          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

          Kommentar


          • #6
            Habe mir den Code jetzt nicht so im Detail angesehen, aber du solltest den sowieso neu schreiben und PHP von der HTML Ausgabe trennen.
            Es empfiehlt sich hier eine Datenbank zu nehmen. Wenn du bisher keine Verwendest, kannst du immer noch auf SQLite zurückgreifen, die ist bei PHP dabei.
            Zudem solltest du den Kontextwechsel beachten.

            Wenn du das alles vernünftig umsetzt, sollte dein Problem auch nicht mehr auftauchen.
            Schau dir zudem den Abschnitt debugging an.

            Kommentar


            • #7
              Okay, vielen Dank für die schnellen Antworten... Ich führe mir dann gleich wohl mal die Datenbanksache zu Gemüte

              Kommentar


              • #8
                Du hast so schnell geantwortet, dass ich mich Frage ob du die Seiten alle schon gelesen und verstanden hast?
                Wir wollen uns ja nicht immerzu wiederholen.

                Kommentar


                • #9
                  protestix nein, natürlich nicht, deshalb schrieb ich ja, dass ich mir das jetzt zu Gemüte führen werde^^ Da das natürlich dauern wird, wollte ich mich nur schonmal für die Antworten bedanken

                  Kommentar


                  • #10
                    Achte beim DB-Design auf die richtige Normalisierung der Daten, sonst kannst du später Probleme beim einfachen, performanten Abfragen/Handling der Daten bekommen.

                    https://www.peterkropff.de/site/mysq...alisierung.htm

                    http://www.sqldocu.com/nine/normalfo...m#beschreibung
                    The string "()()" is not palindrom but the String "())(" is.

                    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                    PHP.de Wissenssammlung | Kein Support per PN

                    Kommentar

                    Lädt...
                    X