Form ohne Submit Button

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

  • Form ohne Submit Button

    Hallo,
    ich habe folgendes Problem:
    Ich würde gerne den submit Button ausblenden und ein onclick submit über den radio Button machen.
    Soweit so gut funkt alles, nur das Problem ist, die Seite ladet sich zwar neu bei klick auf den radio Button, aber er gibt mir nicht die ID für zB. die nächste Frage aus und ich bleib immer auf der gleichen Seite hängen.

    Ich hoffe mir kann wer helfen wie ich dieses Problem behebe.
    Danke & LG

    Code:
    $id = $_GET['id']; 
    // Wieviele Fragen / Seite ? 
    $anz_fragen = 1; 
    // Soll ein bestimmter Test ausgegeben werden? 
    if($id != "") { 
        if (file_exists("tests/".$id.".php")) { 
            include("tests/".$id.".php"); 
        } else { 
            die("Fehler - Falsche Id"); 
        } 
    } 
         
    // Funktion für die Formlarerstellung: 
    function formular($start,$endwert=0) { 
        global $id; 
        global $anz_fragen; 
        global $test; 
        global $PHP_SELF; 
        $formular = javascript($start); 
        $formular .= "<form action=\"".$PHP_SELF."?id=".$id."\" method=\"post\" name=\"formular\" "; 
        $formular .= "onsubmit=\"return checkForm();\">\n"; 
        $formular .= "<input type=\"hidden\" name=\"endwert\" value=\"".$endwert."\">\n"; 
        $formular .= "<input type=\"hidden\" name=\"naechste_frage\" value=\"".($start+$anz_fragen)."\">\n"; 
        $counter = 0; 
        while (($counter+$start) < ($start+$anz_fragen)) {          
            // Nur Ausgabe falls passende Frage vorhanden: 
            if (($start+$counter) <= (count($test)-1)) { 
                $formular .= $test[($counter+$start)]['frage']."<br />\n"; 
                while(list($bezeichner,$wert) = each($test[($counter+$start)]['antworten'])) { 
                    $formular .= "<input type=\"radio\" name=\"f".($counter+$start)."\" onclick=\"javascript: submit()\"  "; 
                    $formular .= "value=\"".$bezeichner."\"> <label for=\"radio3\">".$wert."</label> <br />\n"; 
                $counter++;    } 
            }           
         
        } 
        $formular .= "<input name=\"submit\" type=\"submit\" value=\"Senden\">\n";                                 
        $formular .= "</form>\n";                                                          
        return $formular; 
    }

  • #2
    global ist böse und sollte nicht verwendet werden. Funktionen sollten außerdem keine Ausgaben (echo, etc.) machen.

    Das, was du willst, hat nichts mit PHP zu tun. Also bist du im PHP-Unterforum falsch und der PHP-Code ist auch uninteressant.

    Kommentar


    • #3
      Danke für deine Antwort!
      Doch es ist PHP da das ganze Script(weiterführend) eine PHP Ausgabe hat die wichtig ist.
      Leider hilft mir deine Antwort nicht weiter.
      Dennoch hoffe ich das mir jemand, helfen kann.
      Danke.

      Kommentar


      • #4
        Würde man sich den HTML-Code betrachten, würde man auch eher den Fehler finden. Also wie gesagt, lass mal den ganzen PHP-Code weg und schau was wirklich beim Server ankommt (HTTP-Request betrachten).

        Kommentar


        • #5
          Ich stell mal das ganze Script hier rein, vielleicht kann man mir so eher helfen.
          Es ist ein Script von hier was ich gefunden habe.

          test.php
          PHP-Code:
          <?php              
          $id 
          $_GET['id']; 
          // Wieviele Fragen / Seite ? 
          $anz_fragen 1
          // Soll ein bestimmter Test ausgegeben werden? 
          if($id != "") { 
              if (
          file_exists("tests/".$id.".php")) { 
                  include(
          "tests/".$id.".php"); 
              } else { 
                  die(
          "Fehler - Falsche Id"); 
              } 

               
          // Funktion für die Formlarerstellung: 
          function formular($start,$endwert=0) { 
              global 
          $id
              global 
          $anz_fragen
              global 
          $test
              global 
          $PHP_SELF
              
          $formular javascript($start); 
              
          $formular .= "<form action=\"".$PHP_SELF."?id=".$id."\" method=\"post\" name=\"formular\" "
              
          $formular .= "onsubmit=\"return checkForm();\">\n"
              
          $formular .= "<input type=\"hidden\" name=\"endwert\" value=\"".$endwert."\">\n"
              
          $formular .= "<input type=\"hidden\" name=\"naechste_frage\" value=\"".($start+$anz_fragen)."\">\n"
              
          $counter 0
              while ((
          $counter+$start) < ($start+$anz_fragen)) {          
                  
          // Nur Ausgabe falls passende Frage vorhanden: 
                  
          if (($start+$counter) <= (count($test)-1)) { 
                      
          $formular .= $test[($counter+$start)]['frage']."<br />\n"
                      while(list(
          $bezeichner,$wert) = each($test[($counter+$start)]['antworten'])) { 
                          
          $formular .= "<input type=\"radio\" name=\"f".($counter+$start)."\" onclick=\"javascript: submit()\"  "
                          
          $formular .= "value=\"".$bezeichner."\"> <label for=\"radio3\">".$wert."</label> <br />\n"
                      
          $counter++;    } 
                  }           
               
              } 
                                         
              
          $formular .= "</form>\n";                                                          
              return 
          $formular
          }          

          // Funktion für Js-Teil zur Formularüberprüfung: 
          function javascript ($start){ 
              global 
          $anz_fragen
              global 
          $test
              
          $js .= "<script language=\"JavaScript\">\n"
              
          $js .= "<!--\n"
              
          $js .= "function checkForm() {\n"
              
          $js .= "    Fehler=false;\n"
              while ((
          $counter+$start) < ($start+$anz_fragen)) { 
                  
          // Nur Ausgabe falls passende Frage vorhanden: 
                  
          if (($start+$counter) <= (count($test)-1)) { 
                      
          $js .= "    if(document.formular.f".($start+$counter)."[0].checked==false"
                          for (
          $i=1;$i<count($test[($counter+$start)]['antworten']);$i++) { 
                          
          $js .= " && document.formular.f".($counter+$start)."[".$i."].checked==false"
                      } 
                      
          $js .= "){\n        Fehler=true;\n    }\n"
                  } 
                  
          $counter++; 
              } 
              
          $js .= "    if(Fehler) {\n        alert('Fehler!"
              
          $js .= "\\nSie müssen erst bei allen Fragen eine Antwort waehlen');\n"
              
          $js .= "        return false;\n    } else {\n        return true;\n    }\n}\n"
              
          $js .= "// -->\n"
              
          $js .= "</script>\n"
              return 
          $js
          }       
                       
          if (!isset(
          $_POST['submit'])) { 
              if (isset(
          $test)) { 
                  
          // FORMULAR AUSGABE: 
                  
          echo "<h1>Test: ".$test[0]['name']."</h1>"
                  echo 
          "<p>".$test[0]['beschreibung']."</p>"
                  echo 
          "<p>Seite 1 von ".ceil(count($test)/$anz_fragen)."</p>"
                  echo 
          formular(1); 
              } else { 
                  
          // ÜBERSICHT AUSGEBEN: 
                  
          echo "<h1>Tests - &Uuml;bersicht</h1>"
                  
          $handle opendir(tests); 
                  while (
          $file readdir ($handle)) { 
                      if (
          $file != "." && $file != "..") { 
                          include (
          "tests/".$file); 
                          echo 
          "<p><a href=\"".$PHP_SELF."?id=".str_replace('.php','',$file)."\">"
                          echo 
          $test[0]['name']."</a><br />"
                          echo 
          $test[0]['beschreibung']."</p>"
                      } 
                  }               
                  
          closedir($handle); 
              } 
          } else { 
              
          // FORMLAR HAT DATEN ÜBERMITTELT: 
              // Endwert erreichnen: 
              
          echo "<h1>Test: ".$test[0]['name']."</h1>"
              echo 
          "<p>Seite ".(($_POST['naechste_frage']-1+$anz_fragen)/$anz_fragen)." von "
              echo 
          ceil(count($test)/$anz_fragen)."</p>"
              while (
          $counter <= (count($test)-1)) { 
                  
          $endwert += $_POST['f'.$counter]; 
                  
          $counter++; 
              } 
              
          $endwert += $_POST['endwert']; 
              
          // Anm.: Forumlar bereits per JS überprüft - Wer kann JS hat, hat Pech 8-) 
              
          if ($_POST['naechste_frage'] > (count($test)-1)) { 
                  
          // ERGEBNIS ANZEIGEN: 
                  // Auswertungen absteigend sortieren: 
                  
          ksort ($test[0]['auswertung'],SORT_NUMERIC); 
                  
          // Auswertung suchen: 
                  
          while(list($bezeichner,$wert) = each($test[0]['auswertung'])) { 
                      if (
          $endwert >= $bezeichner) { 
                          
          $auswertung $wert
                      } 
                  } 
                  
          // Auswertung anzeigen: 
                  
          echo $auswertung
              } else { 
                  
          // WEITERES FORMULAR ANZEIGEN: 
                  
          echo formular($_POST['naechste_frage'],$endwert); 
              } 
          }         

          ?>
          2.php
          PHP-Code:
          <? 
          $test = array( 
              // Allgem. Daten zum Test: 
              array( 
                  // NAME 
                  "name" => "Name", 
                  // BESCHREIBUNG 
                  "beschreibung" => "Beschreibung", 
                  // AUSWERTUNG Bezeichner == Anfangswert 
                  "auswertung" => array( 
                      0 => "Punktezahl bis 10", 
                      11 => "Punktezahl bis 20", 
                      21 => "Punktezahl über 21")), 
              // FRAGEN: 
              array( 
                  "frage" => "Frage", 
                  "antworten" => array( 
                      1 => "Antwort 1", 
                      15 => "Antwort 2", 
                      2 => "Antwort 3")), 
              array( 
                  "frage" => "Frage", 
                  "antworten" => array( 
                      1 => "Antwort 1", 
                      2 => "Antwort 3")), 
              array( 
                  "frage" => "Frage", 
                  "antworten" => array( 
                      1 => "Antwort 1", 
                      15 => "Antwort 2", 
                      2 => "Antwort 3")) 

          ); 
          ?>

          Kommentar


          • #6
            Zitat von georgzed Beitrag anzeigen
            Ich stell mal das ganze Script hier rein, vielleicht kann man mir so eher helfen.
            Du gehst überhaupt nicht auf die Hinweise ein. Wie soll man dir da helfen?

            Kommentar


            • #7
              Sorry, aber ich hab leider keine Ahnung was an dem HTML Code nicht passen würde. Außerdem hab ich ja einen Fehler in der Weitergabe und mit submit Buton funkt ja alles, nur ich hätte es nur gerne ohne submit button. So wie hier zB.:
              HTML-Code:
                         <html>
              <body>
              
              <form action="" method="post">
              Select Your Favourite Color:
              <input type="radio" name="color" onclick="javascript: submit();" value="red"> Red
              <input type="radio" name="color" onclick="javascript: submit()" value="green"> Green
              </form>
              </body>
              </html>

              Kommentar


              • #8
                Zitat von georgzed Beitrag anzeigen
                Sorry, aber ich hab leider keine Ahnung was an dem HTML Code nicht passen würde.
                Dann zeig ihn her.

                Zitat von georgzed Beitrag anzeigen
                Außerdem hab ich ja einen Fehler in der Weitergabe und mit submit Buton funkt ja alles, nur ich hätte es nur gerne ohne submit button. So wie hier zB.:
                HTML-Code:
                           <html>
                <body>
                
                <form action="" method="post">
                Select Your Favourite Color:
                <input type="radio" name="color" onclick="javascript: submit();" value="red"> Red
                <input type="radio" name="color" onclick="javascript: submit()" value="green"> Green
                </form>
                </body>
                </html>
                Ich tippe mal darauf, dass du im Formular auch die Parameter "id" und "naechste_frage" übergeben musst. Aber ganz genau blick ich da auch nicht durch, da das Script sehr gruselig geschrieben ist. Ich würde es entsorgen und neu schreiben. Bringt deutlich weniger Kopfschmerzen und Aufwand.

                Kommentar


                • #9
                  Danke für deine Antwort.
                  Ich suche leider schon seit tagen ein ähnliches Script, da PHP nicht wirklich meine stärke ist, kann ich es leider nicht selber schreiben. :/

                  Fazit, ich suche ein Script wie dieses wo User antworten(per Button und nicht wieder per Radio mit submit) auswählen können und je nachdem wieivele Punkte ein User hat, bekommt er eine bestimmte Ausgabe am Schluss.

                  Hast du vielleicht eine Idee woher ich so ein Script bekomme?

                  Kommentar


                  • #10
                    Also das Script sollte so ähnlich wie dieses sein: http://bitecharge.com/play/innerage?sess=q3#q3.6e6e
                    Zuletzt geändert von wahsaga; 06.09.2014, 14:25.

                    Kommentar

                    Lädt...
                    X