2014-03-28 157 views
-1

我试图使用onclick函数将CSV数据存储到数据库。不幸的是,我使用JavaScript函数内部的php代码效率不够高。因此,我希望我可以通过使用JavaScript而不是PHP将CSV数据存储到数据库中来获得任何建议或解决方案,以提高项目效率。如何解析CSV文件并将其数据存储到数据库中?

这是JavaScript和PHP代码:

<script> 
function storeQueEmail(){ 
<?php  
    $file = $_FILES[csv][tmp_name]; 
    $handle = fopen($file,"r"); 

    //loop through the csv file and insert into database 
    do { 
     if ($data[0]) { 
      $record['contact_first'] = $data[0]; 
      $record['contact_last'] = $data[1]; 
      $record['contact_email'] = $data[2]; 
      $record['subject'] = $_REQUEST['subject']; 
      $record['message'] = $_REQUEST['message']; 
      $record['status'] = 0; 

      $oAdminEmail->insertQueEmail($record); 
      } 
    } while ($data = fgetcsv($handle,1000,",","'")); 

    ?> 
    } 
</script> 

这是HTML代码:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Import a CSV File with PHP & MySQL</title> 
</head> 
<body> 
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1" > 
    Subject : <br/> 
    <input type="text" name="subject" id="subject" required/> <br/> 
    Choose your upload type: <br /> 
    <input name="csv" type="file" id="csv" accept=".csv" required/> <br/> 
    Content : <br/> 
    <textarea name="message" cols="50" rows="10" required></textarea><br/> 
    <input type="submit" name="submit" value="Submit" onclick="storeQueEmail()"/> 
</form> 
</body> 
</html> 
+0

您可以阅读JavaScript中的CSV内容,然后通过Ajax发送HTTp文章。我为包含读取CSV客户端的演示的另一个问题写了类似的答案:http:// stackoverflow。com/questions/22518786/js-get-method-file-with-path/22520019#22520019 –

+1

我想要做的是将CSV文件存储到数据库中。有没有可能向我提供关于其工作的示例代码?因为我在javascript中仍然是新手。 – user3454436

+1

您是否说过使用JavaScript函数的PHP代码INSIDE?这甚至可能吗? –

回答

0

什么是你想在那里做?我想你是在谈论一个PHP的 HTML文档。所以你的函数内的PHP代码在服务器上解释。由于你的PHP代码没有输出,所以你的Javascript函数只是空的。因此,因为您已经将您的Javascript函数注册为onclick处理程序,所以不会发生任何事情。

请记住,虽然您的PHP代码是在服务器上解释的,但客户端(即在浏览器中)解释标准JavaScript代码。正如在上面的评论中提到的,可以使用AJAX或POST/GET - 请求将数据发送到您的服务器,然后将其写入您的数据库或文件等。

直接使用Javascript做到这一点的另一种方法是节点.js - serverside Javascript可以像PHP一样写入数据库。

为你和你上面介绍的HTML代码做最简单的方法是填补你的

action - attribute 

form tag 

例如

<form action="proccessData.php" ...> 
... 
</form> 

不要忘记删除表单的提交输入字段中的onclick - 属性。 如果您知道按提交按钮,您的整个表单及其内容将发送至http://www.xyz.de/proccessData.php。在该文件中,您可以使用表单数据:在您的情况下,有两个文本字段和一个文件上传字段。正如你可能知道,你可以得到的文本输入字段的内容通过通过邮寄:

$_POST['<name of field>'] 

为了让您上传的文件,并proccess它,你可以使用PHP的全球

$_FILE[] - Array 

只是指PHP的php.net手册或其他一些在线文档。网上有很多东西可以找到。 我只是给你一个有用的链接到php.net上如何处理文件上传正确,为此安全的方式:http://us2.php.net/manual/en/features.file-upload.php

一旦你已经通过PHP的全局$ _FILE [] - 读取您上传的文件数组文件通过fgetcsv在你的proccessData.php文件中,并将它写入行到你的数据库。

希望有帮助!它真的不那么难:)

+0

感谢您的答复兄弟。有可能为我提供一个示例代码吗? – user3454436

+0

只用一种方式解释了如何做到这一点,改进了我的答案。如果开发Web应用程序,那么在客户端执行的代码和执行服务器端的代码之间总是会有明显的区别。在我看来,这是真正理解正在发生的事情的最重要步骤之一。 – habamedia

+0

实际上,我想在同一页面验证我的csv文件,该文件不会将值传递到新页面。刷新页面不够灵活。你的做法是有效的,我知道如何去做。但我想要的是在一页内完成任何事情。谢谢。 – user3454436

相关问题