Ankündigung

Einklappen
Keine Ankündigung bisher.

Übergabe und Speicherung von Ergebnissen eines dynamisch erstellten Tests

Einklappen

Neue Werbung 2019

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

  • Übergabe und Speicherung von Ergebnissen eines dynamisch erstellten Tests

    Hallo,

    ich habe fogendes vor: aus einem pool von 250 Fragen möchte je nach Auswahl der Art des Tests (z.B. kurz (20 Fragen) oder lang (180 Fragen)) ein Fragenkatalog dynamisch erstellen lassen. Es sollen die Fragen und jeweils eine Antwortmöglichkeit mit sechs radio-buttons ausgegeben werden.

    ...Das klappt auch soweit...

    Problem ist nur die Speicherung: Da ich ja nicht von vornehinein weiß, wie viele Fragen ich habe und welche fragen_ids dazugehören, weiß ich nicht, wie ich die Antworten richtig in Variablen und in die DB einlesen kann.

    Versteht ihr, was ich meine?


  • #2
    So bekommst du alle $_POST Werte:

    PHP-Code:
      foreach ($_POST as $key => $value) {
        echo 
    "$key=$value";
      } 
    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Zitat von feeet Beitrag anzeigen
      Versteht ihr, was ich meine?
      Wo dein Problem liegt? Nein.


      Deine Fragen haben IDs, und wenn du die Fragen auswählst (wie auch immer), kannst du auch deren IDs mit auslesen. Die IDs übernimmst du mit ins Formular, so dass sie mit den Antworten zusammen übergeben werden.


      Das sollte alles kein Problem sein für jemanden, der sich mit den Grundlagen der Formularverarbeitung beschäftigt hat.

      Kommentar


      • #4
        Danke wolf29,

        wenn ich Deinen Vorschlag nutze, bkomme ich folgendes

        name_tester=sfsd
        date=sdfds
        name_kunde=jrzkrkz
        checktyp=Quick
        filtertopic=Risk Assessment
        language=English
        numrows=12
        tid=107
        answer_13=1
        answer_14=3
        answer_18=5
        answer_19=1
        answer_20=3
        answer_22=4
        answer_23=2
        answer_24=1
        answer_25=3
        answer_26=5
        answer_27=3
        answer_28=1

        nun möchte ich ab answer_13 die Werte in die Spalte CMMI schreiben
        versuche es wie folgt
        PHP-Code:
        foreach ($_POST as $key => $value) {
                            echo 
        "$key=$value<br>";
                            
                            
        $sqlupdate 'UPDATE results SET cmmi  = $value where tid='.$tid.' and content_id='.$row2 ['content_id'];
                            
        mysql_query($sqlupdate,$connection) or die( 'SQL Error in statment: ' $sqlupdate ': ' mysql_error( ) );
                        } 
        wie kriege ich das hin, dass 8 ignoriert werden?

        danke

        Kommentar


        • #5
          sorry, ich meinte mit dem letzten Satz:

          Wie kriege ich das hin, dass die ersten 8 Werte ignoriert werden?
          name_tester=sfsd
          date=sdfds
          name_kunde=jrzkrkz
          checktyp=Quick
          filtertopic=Risk Assessment
          language=English
          numrows=12
          tid=107

          Kommentar


          • #6
            @ChrisB: ja, da ich aber 36 verschiedene Arten von Tests und ich will nicht 36 verschiedene Abspeichermöglichkeiten vordefinieren.

            Kommentar


            • #7
              PHP: preg_replace - Manual

              oder

              PHP: strpos - Manual

              Wolf29
              while (!asleep()) sheep++;

              Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

              Kommentar


              • #8
                Danke Wolf29, aber ich hab keine Ahnung, wie ich es im meinem Fall nutzen soll.

                Kommentar


                • #9
                  HTML-Code:
                  <input type="radio" name="fragen[1]" /> rot
                  <input type="radio" name="fragen[1]" /> grün
                  <input type="radio" name="fragen[1]" /> blau
                  
                  <input type="radio" name="fragen[2]" /> hoch
                  <input type="radio" name="fragen[2]" /> tief
                  PHP-Code:
                  var_dump ($_POST['fragen']); 
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    ich lassen den Fragebogen wie folgt erstellen.

                    PHP-Code:
                    while ( $row2 mysql_fetch_assoc$result ) )
                                                    {
                                                    
                                                        echo 
                    '
                                                        <tr>
                                                          <td valign=top style=border-bottom:1px solid>'
                    .$row2'number' ] .'</td>
                                                          <td valign=top>'
                    .$row2'category' ] .'</td>
                                                          <td valign=top width=50px>'
                    .$row2'topic' ] .'</td>
                                                          <td valign=top>'
                    .$row2'subject' ] .'</td>
                                                          <td valign=top>'
                    .$row2'paragraph' ] .'</td>
                                                          <td valign=top>'
                    .nl2br$row2'content' ] ).'</td>
                                                          <td valign=top width=180px> 
                                                            <input type="radio" name="answer_'
                    .$row2 ['content_id'].'" value="0"> 0 Incomplete<br>
                                                            <input type="radio" name="answer_'
                    .$row2 ['content_id'].'" value="1"> 1 Performed<br>
                                                            <input type="radio" name="answer_'
                    .$row2 ['content_id'].'" value="2"> 2 Managed<br>
                                                            <input type="radio" name="answer_'
                    .$row2 ['content_id'].'" value="3"> 3 Defined<br>
                                                            <input type="radio" name="answer_'
                    .$row2 ['content_id'].'" value="4"> 4 Quantatively Managed<br>
                                                            <input type="radio" name="answer_'
                    .$row2 ['content_id'].'" value="5"> 5 Optimizing
                                                          </td>
                                                        </tr>
                                                        <tr><td colspan=8><hr></td></tr>
                                                        '
                    ;
                                                    } 
                    Es kann sein, dass der Test 80, 220 oder 250 (oder noch viele Weitere Kombinationen) hat. Ich möchte die Ergebnisse im nächsten schritt in eine Tabelle schreiben, die die Test-ID, die Content-ID und das jeweilige Ergebnis beinhaltet.

                    Wie müsste der PHP code für das Seichern aussehen?

                    Danke

                    Kommentar


                    • #11
                      Zitat von feeet Beitrag anzeigen
                      da ich aber 36 verschiedene Arten von Tests und ich will nicht 36 verschiedene Abspeichermöglichkeiten vordefinieren.
                      Was verstehst du unter „Abspeichermöglichkeiten“ - einzelne Spalten?

                      Klingt so, als ob dein Datenmodell untauglich wäre. Beschäftige dich mit dem Stichwort Normalisierung.

                      Kommentar

                      Lädt...
                      X