2012-10-16 40 views
0

这个问题会让你想:D。我有一个HTML输入表单,因为它似乎有太多的功能。一个功能就是这样,所以当输入按下它提交数据。其他功能是检查是否输入了某个关键字,以便将其重定向到其他URL。它完全适用于堆栈溢出的人。这里是我的代码:HTML输入表单 - 添加Javascript和PHP函数

<script type="text/javascript"> 
<!-- 
function enter(e){ 
    if(e.keyCode == 13) 
    { 
     Login(); 
     return false; 
    } 
} 
//--> 
</script> 


    <script type="text/JavaScript"> 
    <!-- 
    function Login(){ 
    var keyword=document.getElementById("address").value; 
    var done=0; 
    keyword=keyword.toLowerCase(); 
    keyword=keyword.split(' ').join(''); 
    if (keyword=="example,example") { window.location="http://www.example.com"; done=1;} 
    if (keyword=="example1") { window.location="http://www.example1.com"; done=1;} 
    if (keyword=="example2") { window.location="http://www.example2"; done=1;} 
    if (done==0) { doSomethingElse(); } 
    } 
    //--> 
    </script> 

    <form name="enterkeyword" action="none"> 
     <input name="keyword" id="address" type="text" onkeypress="return enter(event);"/> 
     <div class="buttons"> 
     <button type="button" onclick="Login()">Submit</button> 
     </div> 
     </form> 

这里是问题所在。我需要找到一种方法将每个提交的查询保存为excel或.CSV。我发现了一种使用PHP将输入数据保存到.CSV文件的方法。我测试了它,它工作。但是当我尝试用我的输入表单上的现有函数实现它时,它会弄乱一切。下面是从“查询节电功能”的代码,这是HTML部分:

<html> 
<head> 
    <title>My Form</title> 
</head> 

<body> 
    <form action="save.php" method="post"> 
     <p> 
      What is your favorite movie?<br> 
      <input type="text" name="formMovie" maxlength="50" value="<?=$varMovie;?>" /> 
     </p> 
     <p> 
      What is your name?<br> 
      <input type="text" name="formName" maxlength="50" value="<?=$varName;?>" /> 
     </p>     
     <input type="submit" name="formSubmit" value="Submit" /> 
    </form> 
</body> 
</html> 

这是PHP部分(save.php):

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

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

    $varMovie = $_POST['formMovie']; 
    $varName = $_POST['formName']; 

    if(empty($errorMessage)) 
    { 
     $fs = fopen("mydata.csv","a"); 
     fwrite($fs,$varName . ", " . $varMovie . "\n"); 
     fclose($fs); 

     exit; 
    } 
} 
?> 

    <?php 
     if(!empty($errorMessage)) 
     { 
      echo("<p>There was an error with your form:</p>\n"); 
      echo("<ul>" . $errorMessage . "</ul>\n"); 
     } 
    ?> 

两个代码工作的伟大,但我只是不知道如何实现它们,所以他们可以工作togeather相同的形式... BTW这个PHP函数有2个输入字段,我只需要1,我真的不需要这个错误信息,如果字段留空...我知道它的复杂,但可以有人比我更了解这一点吗?

+0

你需要将'var keyword'保存为'* .csv',然后将用户重定向到不同的网站/页面? – sed

+0

我需要将每个输入保存到.CSV,并且只有在输入了某个关键字时才重定向,如果不是这个函数被调用:doSomethingElse(); – Dreadlord

回答

1

完成更新

嘿,我再次分隔的功能和使代码可读性和可维护性。

的Index.html

<!DOCTYPE html> 
<html> 
    <head> 
     <link rel="stylesheet" href="styles/index.css"/> 
    </head> 
    <body> 
     <input type="text" id="txt" value="example1"/><br/> 
     <input type="button" id="btn" value="doQuery()"/> 

     <script src="scripts/index.js"></script> 
    </body> 
</html> 

Index.js

function processValue() { 

    var inputText = document.getElementById("txt").value.toLowerCase().split(' ').join(''); 

    // Export query 
    exportQuery(inputText); 
} 

function exportQuery(query) { 

    var script = document.createElement("SCRIPT"); 

    script.setAttribute('type', 'text/javascript'); 
    script.setAttribute('src', 'exportQuery.php?query=' + query); 

    document.head.appendChild(script); 
} 

var urlMapper = { 

    "example,example": "http://www.example.com", 
    "example1": "http://www.example1.com", 
    "example2": "http://www.example2.com" 
} 

/** 
* Should be called when the PHP has finished execution 
*/ 
function onPhpReady(query) { 

    var url = urlMapper[ query ]; 

    if(url !== undefined) { 

     goToUrl(url); 

    } else { 

     codeAddress(); 
    } 
} 

function goToUrl(url) { 

    window.location = url; 
} 

function codeAddress() { 

    alert("Access Denied"); 
} 

(function() { 

    // Selfexecuting code. 

    function addButtonClickListener() { 

     var btn = document.getElementById("btn"); 

     btn.addEventListener("click", processValue, false); 
    } 

    function processKeyPress(e) { 

     if(e.keyCode == 13) { 

      processValue(); 
     } 
    } 

    function addInputKeyPressListener() { 

     var input = document.getElementById("txt"); 

     input.addEventListener("keypress", processKeyPress, false); 
    } 

    addButtonClickListener(); 
    addInputKeyPressListener(); 

}()); 

exportQuery.php

<?php 
    // Get the request 
    $query = $_GET['query']; 

    if(!empty($query)) 
    { 
     writeToCSV($query); 
     notifyReady($query); 
    } 

    function writeToCSV($query) { 

     $fs = fopen("storedQueries.csv", "a"); 

     fwrite($fs, $query . "\n"); 

     fclose($fs); 
    } 

    function notifyReady($query) { 

     // print back as plain javascript 
     print <<<ENDLINE 
     onPhpReady('$query') 
ENDLINE; 
     // The ENDLINE^can't use spaces or it will give a parse error. 
    } 
?> 

来源:DaniWeb

请不就是我的目标Webkit,所以为了兼容性,你必须改变事件的附加方式等。

+0

我更新了它。它应该适合您的需求。 – EricG

+0

我检查了所有浏览器和fkors关键字重定向在除IE以外的其他所有平台中都正常工作 – Dreadlord

+0

不可靠的流程可能会导致PHP + goToUrl在URL甚至在Login中设置之前执行。它现在应该工作。 – EricG