读取txt文件并使用PHP和Ajax将值插入数据库

时间:2013-10-22 16:54:28

标签: javascript php mysql ajax

我有一个文本文件,其中包含带换行符的值,例如

Lawrence
Barse
Sifron
etc
etc

我想读取此文件并将每个值插入数据库表。 我希望前端页面显示有关插入的每个值的信息,例如

Value Lawrence inserted successfully

所以,我已经编写了这样的PHP代码

$count = 0;
$fileName = "names.txt";
    $fhandler = fopen($fileName, 'r');
    $theData = fread($fhandler, filesize($fileName));
    fclose($fhandler);

    $myArray = explode("\n", $theData);

因此变量$ myArray包含文本文件中的所有值

接下来我写了一个Javascript函数来从$ myArray [0]发送值到我的数据插入php脚本页面,这是这样的

<script >
    var cnt;
    function init()
    {
        var str = "<?php echo $myArray[$count] ?>";
        alert("Str is "+str);
    }
    function writeData(data)
        {
            if (window.XMLHttpRequest)
              {// code for IE7+, Firefox, Chrome, Opera, Safari
              xmlhttp=new XMLHttpRequest();
              }
            else
              {// code for IE6, IE5
              xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
              }
            xmlhttp.onreadystatechange=function()
              {
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                    document.getElementById("my_content").innerHTML += xmlhttp.responseText;
                    repeat();
                }
              }
            $data = ""+data+"";
            xmlhttp.open("GET","returnVals.php?b="+$data,true);
            xmlhttp.send();
        }
    function repeat()
    {
        <?php echo $count++; ?>
        cnt = "<?php echo $count ?>";
        var val = "<?php echo $myArray[$count] ?>";
        alert("Count is "+cnt+" and Val is "+val);
        writeData(val);
    }
</script>

我的returnVals.php是处理所有数据插入和回显和输出的脚本,我在响应处理程序中打印。

另外,我知道我在javascript中回应php值,这不是标准的编程方式,但我没有看到任何其他选择。我的Javascript repeat()函数 re根据$ count值调用writeData函数,但我无法递增此值。

有没有更好的方法来实现这一目标......

提前致谢!!!

1 个答案:

答案 0 :(得分:0)

我遇到过几次。我为长时间运行的导入过程开发了一个非AJAX模式,它们在完成之前超过PHP超时。有一天我可能会把它升级到AJAX,但这对我来说似乎很简单。希望对你有所帮助。

模式

  • 跳转到新的起点
  • 输出固定数量的新记录
  • 写出继续链接
  • 自动重新加载(可选)到继续链接

CODE

<?php
// variables
$num_rows = 25;  // number of rows to handle per page view

// get the starting index
$start_at  = (isset($_REQUEST['start'])) ? $_REQUEST['start'] : 0;
$new_start = $start_at + $num_rows;

// skip ahead to $start_at
$in_file   = fopen(...);
for ($i = 0; $i < $start_at; $i++) {
    // skip over this many rows
    fgets($in_file);
}

// process num_rows
for ($i = 0; $i < $num_rows; $i++) {
    $line = fgets($in_file);

    // process the line

    $morework = !!$line;  // fgets returns FALSE when done
}

// write out continue link with auto reload trigger
if ($morework) {
    echo "<a id='clickme' href='/my/page?start={$new_start}'>Continue from {$new_start}</a";
    echo "<script>";
        echo "window.location = document.getElementById('clickme').href";
    echo "</script>";
} else {
    echo "DONE";
}