Ankündigung

Einklappen
Keine Ankündigung bisher.

Ausführing von functions in function

Einklappen

Neue Werbung 2019

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

  • Ausführing von functions in function

    Ich habe Funktionen für die Wiedergabe von verschiedenen Sorten Fragen geschrieben. Die Wiedergabe funktioniert problemlos. Nun will ich aber eine Funktion schreiben (q_questionnaire()) in der die anderen Funktionen aufgerufen werden. Ich dachte erst, dass einfach so zB schreiben kann:

    function q_questionnaire()
    { q_question_open ();
    usw
    }

    aber das funktioniert anscheinend nicht. Hab es jetzt so, dass die functions als einen string zurückgebe. Dann wird zumindest bei q_question_open() das textfeld wiedergegeben. Aber warum muss ich dann nochmal extra den $stam echoen, obwohl dieser schon in der ursprünglichen function von der Frage deklariert wurde.... verstehe gerade gar nichts mehr.
    Soweit, so gut, also q_question_open() functioniert, aber bei den anderen Fragen passiert überhaupt nichts, da wird noch nicht einmal die Fragestellung ($stam) wiedergegeben.
    Hoffe jemand kan mir erklären, warum dass so nicht funktioniert und vielleicht Ideen geben, wie man es anders machen könnte!!!!

    fatsurfer

    ach ja, hier der php-code (im ersten Teil stehen die functions für die verschiedenen Fragen und dahinter die function zur Wiedergabe vom Fragebogen)

    PHP-Code:
    <?php
     
    // generates html for open question
    function q_question_open(
    $name,
    $stam
    $value False 
    )
    {
        
    $r htmlspecialchars($stam)."<br />\n";
        
    $r .= "<input type=\"text\" size=\"50\" ".
        
    "name=\"$name\" value=\"".htmlspecialchars($value)."\" />\n";
        return 
    $r;
    }
    // generates html for multiple choice question with one possible answer
    function q_question_mc_one(
    $name,
    $stam
    $options
    $value False 
    )
    {
        
    $r htmlspecialchars($stam)."\n";
        foreach(
    $options as $option)
        {
            
    $r .= "<br /><input type=\"radio\" name=\"$name\" value=\"".++$count."\" ";
            if (
    $count == $value)
            {
                
    $r .= "checked=\"checked\" ";
            }
            
    $r .= "/>$option\n";
        }
        return 
    $r;
    }
    // generates html for multiple choice question with one or more possible answers
    function q_question_mc_multiple(
    $name,
    $stam
    $options
    $values False 
    )
    {
        
    $r htmlspecialchars($stam)."\n";
        foreach(
    $options as $option)
        {
            
    $r .= "<br /><input type=\"checkbox\" name=\"{$name}[]\" value=\"".++$count."\" ";
            if (
    is_array($values) AND in_array($count$values))
            {
                
    $r .= "checked=\"checked\" ";
            }
            
    $r .= "/>$option\n";
        }
        return 
    $r;
    }
    // generates html for likert scale question
    function q_question_likert(
    $name,
    $stam
    $length
    $lowest
    $highest
    $value False 
    )
    {
        
    $r htmlspecialchars($stam)."<br />\n".$lowest."\n";
        for (
    $l 1$l <= $length$l++)
        {
            
    $r .= "<input type=\"radio\" name=\"$name\" value=\"$l\" ";
            if (
    $l == $value)
            {
                
    $r .= "checked=\"checked\" ";
            }
            
    $r .= "/>$l\n";
        }
        
    $r .= "$highest\n";
        return 
    $r;
    }
    // generates html for questionnaire form
    function q_questionnaire(
    $questions,
    $answers False,
    $submit_value 'opslaan'
    )
    {
     
    ?>  
    <form action="qtest2.php" method="post" >
    <?php
    foreach($questions as $test_questions => $attributes)
      {
              if (
    $attributes['type'] == 'open' )
            {
              
    $r q_question_open($name,$stam,$value False); 
       foreach(
    $attributes as $attributename => $attributevalue
              {
                if (
    $attributename == 'stam')
                {        
     
      echo 
    "$attributevalue";             
         }
     
       }        
             }
               return 
    $r;
     
            if (
    $attributes['type'] == 'mc_one' )
     {
       
    $r q_question_mc_one($name,$stam,$options,$value False );
     
       foreach(
    $attributes as $attributename => $attributevalue
              {
                if (
    $attributename == 'stam')
                {        
     
      echo 
    "$attributevalue";             
         }
       }
     }       
     
              return 
    $r;
     
     
            if (
    $attributes['type'] == 'mc_multiple' 
     {
              
    $r q_question_mc_multiple($name,$stam,$options,$values False ); 
       foreach(
    $attributes as $attributename => $attributevalue
              {
                if (
    $attributename == 'stam')
                {        
     
      echo 
    "$attributevalue";             
         }
       } 
     }
     
                return 
    $r;
     
     
            if (
    $attributes['type'] == 'likert' 
     {
              
    $r q_question_likert($name,$stam,$length,$lowest,$highest,$value False ); 
       foreach(
    $attributes as $attributename => $attributevalue
              {
                if (
    $attributename == 'stam')
                {        
     
      echo 
    "$attributevalue";             
         }
        }
            }
     
        return 
    $r;    
      }  
     
     
     
    ?>
    <input type="submit" value="opslaan" />
    </form>
    <?php
    }
    ?>


  • #2
    aber das funktioniert anscheinend nicht
    1. was funktioniert nicht? fehlermeldungen?
    2. warum sollte das nicht funktionieren?

    Kommentar


    • #3
      es gibt keine fehlermeldungen. Nur wird auf der testseite (qtest2.php) nichts wiedergegeben..funktioniert nur für q_question_open, aber nicht für den rest...

      Kommentar


      • #4
        Erstens hast du mal die Forumsregeln nicht beachtet und kein error_reporting(E_ALL) gesetzt. Sonst hättest du haufenweise Fehlermeldungen über nicht definierte Variablen.
        Du rufst
        PHP-Code:
        q_question_open($name$stam$value False); 
        auf, alle Variablen sind undefiniert. Wozu übrigens der dritte (bzw letzte) Parameter dienen soll (der immer false ist), weiss ich auch nicht.
        Gruss
        L

        Kommentar


        • #5
          - Code ordentlich formatieren, vorher such hier niemand Syntaxfehler!
          - Danach (!): Frage präzise stellen
          --

          „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

          Lädt...
          X