2012-03-20 1 views
0

Я разрабатываю вопросник, код, который я написал, представляет собой комбинацию JS и PHP. У меня есть вопросы на одной странице, но я хочу задать каждый вопрос на отдельной странице, и в соответствии с ответом, который пользователь выбирает, следует задать ряд вопросов. Какая стратегия является лучшей? мне также нужно включить SQL? и в конце ответы будут записаны в текстовый файл код у меня есть:PHP-вопросник стратегии

<?php 
if($_POST['formSubmit'] == "Submit") 
{ 
$errorMessage = ""; 

if(empty($_POST['name'])) 
{ 
    $errorMessage .= "<li>You forgot to enter your name!</li>"; 
} 

$varName = $_POST['name']; 
$varLand1 = $_POST['landscape1']; $varLand2 = $_POST['landscape2']; 
$varCom = $_POST['comment']; 
$varAppx = $_POST['appx']; 
$clim = $_POST['landscape']; 
$varMech = $_POST['mechanism']; 
$varMechoth = $_POST['mech']; 

if(empty($errorMessage)) 
{ 
    $fs = fopen("$varName.txt" ,"a+"); 
    fwrite($fs,$varName . "\n" . $varLand1 . ' ' .$varLand2 . "\n" . $clim . "\n" . $varAppx . "\n" . $varCom . "\n" . $varMech .$varMechoth); 
    fclose($fs); 

    header("Location: t-y.html"); 
    exit; 
    } 
} 
?> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<script scr="jss.js" type="text/javascript"></script> 
    <title>Questionnaire</title> 
</head> 
<body> 
<FONT FACE="Times New RomanPS"> 
     <H1>Questionnaire</H1> 
     <P>Please fill out this questionnaire: 
      <?php 
      if(!empty($errorMessage)) 
      { 
       echo("<p>There was an error with your form:</p>\n"); 
       echo("<ul>" . $errorMessage . "</ul>\n"); 
      } 
     ?> 
<form action="index.php" method="post"> 

    <p> 
    Name<br> 
    <input type="text" name="name" maxlength="50" value="<?=$varName;?>" /> 
    </p> 
    <ul> 
    <p> 1 - Q1? 
    <p><input type="checkbox" name="landscape1" value="urban"> Urban<br> 
    <p><input type="checkbox" name="landscape2" value="non-urban"> non-Urban<br> 
    <p> 2 - Q2?<br> 
    <input type="radio" name="landscape" value="Dry"> Dry<br> 
    <input type="radio" name="landscape" value="Tropical"> Tropical<br> 
    <input type="radio" name="landscape" value="Moderate"> Moderate<br> 
    <input type="radio" name="landscape" value="Continental"> Continental<br> 
    <input type="radio" name="landscape" value="Polar"> Polar<br> 
    <p> 3 - Q3? <br> 
    <input type="radio" id="mecha" name="mechanism" value="sub"  onclick="hideTextBox1()"/> Subsidence<br> 
    <input type="radio" id="mecha" name="mechanism" value="earth" onclick="hideTextBox1()"/> Earthquake<br> 
    <input type="radio" id="mecha" name="mechanism" value="volc" onclick="hideTextBox1()"/> Volcanic<br> 
    <input type="radio" id="mecha" name="mechanism" value="<?=$varMech;?>" onclick="displayTextBox1()"/> other<br> 
    <div id="otherTextBox1" style="display:none;visibility:hidden;"> 
    <input type="text" name="mech" maxlength="20" value="<?=$varMech;?>"> 
    </div> 

    <p> 4 - Q3?<br> 

    <input name="choice" id="choice4" type="radio" value="four" onclick="hideTextBox()"/><label for="choice4"> No </label><br> 
      <input name="choice" id="choice5" type="radio" value="other" onclick="displayTextBox()"/><label for="choice5"> Yes </label> 
    <br/> 
    <div id="otherTextBox" style="display:none;visibility:hidden;"> 
    [mm/yr]<br><input type="text" name="appx" maxlength="3" value="<?=$varAppx;?>"> 
    </div> 
    <br/> 
    <p> 5 - Q4 

    <p> 6 - Q5 

    <p> 7 - Q6 


    <p> 
    Comments:<br> 
    <textarea type="text" name="comment" cols=48 rows=4 maxlength="1000" value=" <?=$varComment;?>"></textarea> 
    </p>     
    <p><input type="reset"> <input type="submit" name="formSubmit" value="Submit" /> 
    </ul> 
     <script> 
    function displayTextBox() 
    { 
     var objElement = document.getElementById('otherTextBox'); 
     otherTextBox.style.display = 'block'; 
     otherTextBox.style.visibility = 'visible'; 
    } 

    function hideTextBox() 
    { 
     var objElement = document.getElementById('otherTextBox'); 
     otherTextBox.style.display = 'none'; 
     otherTextBox.style.visibility = 'hidden'; 
    } 

    function validate() 
    { 
     var arrElements = document.getElementsByName('choice'); 
     var objElement; 
     var boolContinue = false; 
     var objOtherText; 

     for(var i=0, _length=arrElements.length; i<_length; i++) 
     { 
      objElement = arrElements[i]; 

      if(objElement.checked) 
      { 
       if(objElement.id == 'choice5') 
       { 
        objOtherText = document.getElementById('othertext'); 

        if(strTrim(objOtherText.value).length>0) 
        { 
         boolContinue = true; 
         break; 
        } 
       } 
       else 
       { 
        boolContinue = true; 
        break; 
       } 
      } 
     } 
     for(var i=0, _length=arrElements1.length; i<_length; i++) 
     { 
      objElement1 = arrElements1[i]; 

      if(objElement1.checked) 
      { 
       if(objElement1.id == 'mecha') 
       { 
        objOtherText1 = document.getElementById('othertext'); 

        if(strTrim(objOtherText1.value).length>0) 
        { 
         boolContinue = true; 
         break; 
        } 
       } 
       else 
       { 
        boolContinue = true; 
        break; 
       } 
      } 
     } 
     if(boolContinue) 
     { 
      alert('Continue, user completed the information.') 
     } 
     else 
     { 
      alert('Ask user to complete the data.') 
     } 
    } 

function displayTextBox1() 
    { 
    var objElement1 = document.getElementById('otherTextBox1'); 
     otherTextBox1.style.display = 'block'; 
     otherTextBox1.style.visibility = 'visible'; 
    } 

    function hideTextBox1() 
    { 
     var objElement1 = document.getElementById('otherTextBox1'); 
     otherTextBox1.style.display = 'none'; 
     otherTextBox1.style.visibility = 'hidden'; 
    } 

    function validate1() 
    { 
     var arrElements1 = document.getElementsByName('mechanism'); 
     var objElement1; 
     var boolContinue = false; 
     var objotherText1; 

     for(var i=0, _length=arrElements1.length; i<_length; i++) 
     { 
      objElement1 = arrElements1[i]; 

      if(objElement1.checked) 
      { 
       if(objElement1.id == 'mecha') 
       { 
        objOtherText1 = document.getElementById('othertext'); 

        if(strTrim(objOtherText1.value).length>0) 
        { 
         boolContinue = true; 
         break; 
        } 
       } 
       else 
       { 
        boolContinue = true; 
        break; 
       } 
      } 
     } 
     if(boolContinue) 
     { 
      alert('Continue, user completed the information.') 
     } 
     else<?=$varMech;?> 
     { 
      alert('Ask user to complete the data.') 
     } 
    }  
    /** 
    * Removes all white space characters from the string. 
    * 
    * @param: {String} String to trim. 
    * 
    * @return {String} Trimed string. 
    */ 
    function strTrim(strTrim) 
    { 
     return strTrim.replace(/^\s+|\s+$/g, ''); 
    } 
    </script> 
    </form> 
</FONT> 
</body> 
</html> 

ответ

0

Я не думаю, что вам нужно будет использовать SQL, чтобы сделать это. Вы должны иметь возможность использовать $_SESSION для хранения ответов на предыдущие вопросы и соответственно соответствующим образом настроить вопросы на следующих страницах.

+0

, так что вы имеете в виду, что я должен сделать отдельный файл для каждого вопроса и использовать $ _SESSION для хранения ответов и т. Д.? (вещь, я не хочу, чтобы пользователь видел «имя файла» в URL-адресе) – pasha

+0

@user - Да, точно. Затем, когда вы закончите (на последней странице), вы можете взять ответы из сеанса и записать их в свой файл. –

Смежные вопросы