如何使用PHP将.csv文件内容操作到HTML表中?

OK, here's what I've got so far:

<table class="tftable" border="1">
    <tr><th>Header 1</th><th>Header 2</th><th>Header 3</th><th>Header 4</th><th>Header 5</th><th>Header 6</th><th>Header 7</th></tr>
    <?php
        define('CSV_PATH','/Applications/XAMPP/xamppfiles/htdocs/SITEPREVIEW/csv_file_drop_folder/');
        $csv_file = CSV_PATH . "test.csv";
        if(($handle=fopen($csv_file,"r"))!== FALSE){
            fgetcsv($handle);
            while(($data=fgetcsv($handle,1000,","))!==FALSE){
                $num = count($data);
                for($c=0;$c<$num;$c++){
                    $col[$c]=$data[$c];
                }
                $col1=$col[0];
                $col2=$col[1];
                $col3=$col[2];
                $col4=$col[3];
                $col5=$col[4];
                $col6=$col[5];
                $col7=$col[6];

                echo "<tr><th>".$col1."</th><th>".$col2."</th><th>".$col3."</th><th>".$col4."</th><th>".$col5."</th><th>".$col6."</th><th>".$col7."</th></tr>";
            }
            fclose($handle);
        }
    ?>
</table>

So I run this and ($data=fgetcsv($handle,1000,",")) is coming out FALSE I think, but not sure why, and so only the headers get printed to the page.


Got rid of fgetcsv($handle);, but only prints one line, and I checked the file contents of my .csv file and this is what I have:

CSV FILE CONTENTS

duanmeng1950
duanmeng1950 这只是粘贴到textEdit以更改文件实际位置的工件;也就是说,我不小心删除了'intextEdit,然后将其重新输入并得到一个卷曲的引用。
4 年多之前 回复
duandu8892
duandu8892 你这里有一个乱糟糟的卷曲引号/撇号:csv_file_drop_folder/â€。可能就是这样。尝试用单引号替换。
4 年多之前 回复
doujianchao7446
doujianchao7446 我在文件夹csv_file_drop_folder上运行了chmod-R777。
4 年多之前 回复
dsfb20227
dsfb20227 是的,test.csv位于文件夹csv_file_drop_folder中。我把回声“猪”;以上fgetcsv($handle);它在我的页面上打印了猪。
4 年多之前 回复
dongyin4202
dongyin4202 没有解析错误???
4 年多之前 回复
duanqiechui2378
duanqiechui2378 csv文件是否存在?php有权查看它吗?一排是什么样的?我建议添加一些调试语句,例如在fopen之后打开打印文件,以确保它是可打开的。
4 年多之前 回复

1个回答



摆脱这一行:</ p>

  fgetcsv($ handle); 
</ code> </ pre>

那是:</ p>

  if(($ handle = fopen($ csv_file,“r”))!=  = FALSE){
while(($ data = fgetcsv($ handle,1000,“,”))!== FALSE){
</ code> </ pre>

如果这只是 打印一行,检查csv上的行结尾。 确保它们是/ n或/ r / n </ p>


注意:如果在Macintosh上或在Macintosh上创建文件时PHP无法正确识别行结尾 计算机,启用
auto_detect_line_endings运行时配置选项可能有助于解决问题。 http://php.net/manual/en/function.fgetcsv.php </ p>
</ blockquote>

我假设可能已经在mac中生成了csv。 我不是肯定的,但我相信发生的事情是你的第一个fgetcsv读取你的csv的第一行(也是唯一的),所以第二个,在while循环中,正确地注意到没有更多的行要读,所以返回 FALSE,从而在开始之前终止循环。</ p>

如果csv是自动生成的,那么你想要解决这个问题,如果它是在Mac上创建的话 理想情况下,创建它的工具会更正为使用unix样式
行结尾。 如果不能轻易完成,只需在代码编辑器中打开csv,配置为保存/转换行结尾为unix样式,并在加载前保存。</ p>


< p> LF:Multics,Unix和类Unix系统(Linux,OS X,FreeBSD,AIX,
Xenix等),BeOS,Amiga,RISC OS等[1] </ p>

CR:Commodore 8位计算机,Acorn BBC,ZX Spectrum,TRS-80,Apple II系列,Mac OS至9版以及OS-9 </ p>
</ blockquote>

https://en.wikipedia.org/wiki/Newline </ p> \ n

我很好奇,它看起来像OS 9一样使用了
,但OS X使用
正如你所期望的那样。 请注意,windows使用
工作正常,因为被忽略我相信并且
存在。</ p>
</ div>

展开原文

原文

Get rid of this line:

fgetcsv($handle);

That is:

if(($handle=fopen($csv_file,"r"))!== FALSE){
     while ( ( $data = fgetcsv($handle, 1000, ",") ) !== FALSE ) {

If this only prints one line, check the line endings on the csv. Make sure they are /n or /r/n

Note: If PHP is not properly recognizing the line endings when reading files either on or created by a Macintosh computer, enabling the auto_detect_line_endings run-time configuration option may help resolve the problem. http://php.net/manual/en/function.fgetcsv.php

From which I'd assume the csv may have been generated in a mac. I am not positive, but I believe what was happening was that your first fgetcsv read the first (and only) line of your csv, so the second one, in the while loop, correctly noted there was no further line to read, so returned FALSE, thus terminating the loop before you started.

If the csv is automatically generated, you'd want to correct this issue on that end of things, if it's created on say, a Mac, ideally the tool that created it is corrected to use unix style line endings. If that can't be readily done, just open the csv in a code editor, configured to save/convert line ending to unix style, and save it prior to loading.

LF: Multics, Unix and Unix-like systems (Linux, OS X, FreeBSD, AIX, Xenix, etc.), BeOS, Amiga, RISC OS, and others[1]

CR: Commodore 8-bit machines, Acorn BBC, ZX Spectrum, TRS-80, Apple II family, Mac OS up to version 9, and OS-9

https://en.wikipedia.org/wiki/Newline

I was curious, it looks like Macs up to OS 9 used , but OS X uses as you'd expect. Note that windows uses which works fine since is ignored I believe and is present.

dongzhi7763
dongzhi7763 大多数真正的代码编辑器都有一个设置行结束类型的选项,unix是所需的。 我不能评论任何其他工具。 但是你的csv应该用unix样式的行结尾保存,这样你再也不会看到这个问题了。 我有一个客户端在Windows中与csv生成有类似的问题,所有我必须做的解决他们的问题是字面上打开并在代码编辑器中保存他们的csv。
4 年多之前 回复
drcj64241
drcj64241 现在,如果我迁移到非Mac系统,我可以离开吗?
4 年多之前 回复
douchenchepan6465
douchenchepan6465 这是一个有趣的问题,我做这些csv阅读了很多,所以难题是它失败的原因。
4 年多之前 回复
dsavz66262
dsavz66262 完美,明白了! 谢谢。
4 年多之前 回复
drwj4061
drwj4061 你不能拍一张结尾的照片,哈哈。 你在用mac吗?
4 年多之前 回复
dongmi4927
dongmi4927 检查我的编辑中的图像。
4 年多之前 回复
duangu1645
duangu1645 好的,刚刚做到了,但是,它只打印出一行。
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐