Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文件上传后,以PHP表格格式打印CSV文件的前3列_Php_File Upload_Html Table_Import From Csv - Fatal编程技术网

文件上传后,以PHP表格格式打印CSV文件的前3列

文件上传后,以PHP表格格式打印CSV文件的前3列,php,file-upload,html-table,import-from-csv,Php,File Upload,Html Table,Import From Csv,我是PHP新手,我被这个问题困住了 $mimes = array('application/vnd.ms-excel','text/plain','text/csv','text/tsv'); if (((in_array($_FILES['uploadedfile']['type'],$mimes))) && ($_FILES["uploadedfile"]["size"] > 0)) { $filename = $_SESSION['username']

我是PHP新手,我被这个问题困住了

$mimes = array('application/vnd.ms-excel','text/plain','text/csv','text/tsv');
if (((in_array($_FILES['uploadedfile']['type'],$mimes)))
    && ($_FILES["uploadedfile"]["size"] > 0))
{
    $filename = $_SESSION['username'].$_FILES["uploadedfile"]["name"];
    move_uploaded_file($_FILES["uploadedfile"]["tmp_name"],"./uploads/".$filename);

    echo "Stored in: " . "./uploads/" .$filename;
    echo "<br />\n";
    echo 'Daylight hours will be calculated for this latitude : '.$_POST['latCSV'];
    echo "<br>";
    //print out uploaded file.csv
    echo "<table BORDER=1>\n\n";
    echo "  <tr><th>AvgCrown</th><th>MinCrown</th><th>MaxCrown</th><th>dateLogged</th><th>DaylightHours</th></tr>";
    echo "<tbody id='tblBdyLoggedData'>";
    $f = fopen("./uploads/" .$filename, "r");
    $i=0;   //just a counter
    while (($line = fgetcsv($f)) !== false) {
        echo "<tr>";
        foreach ($line as $cell) {
            // Save the value before you output
            $lastColValue = htmlspecialchars($cell);
            //unset($lastColValue[3]);
            echo "<td>" . $lastColValue . "</td>";

        }
        //checking if date is valid
        checkDateString($lastColValue);

        // If you want to store all log dates in an array:
        $logDates[] = $lastColValue;                            
        $firstlogDate = $logDates[$i];
        echo "<td>" . checkDateString($lastColValue) . "</td>";
        //call function using firstlogDate for every row
        echo "<td>" . calcDaylight($firstlogDate,$_POST["latCSV"]) . "            </td>";
        echo "</tr>\n";
        $i = $i+1;
    }
    fclose($f);
    echo "</tbody></table></body></html>";
}
$mimes=array('application/vnd.ms excel'、'text/plain'、'text/csv'、'text/tsv');
if((在_数组($_FILES['uploadedfile']['type'],$mimes)中)
&&($_文件[“uploadedfile”][“size”]>0))
{
$filename=$\u会话['username']。$\u文件[“uploadedfile”][“name”];
移动上传的文件($上传文件[“上传文件”][“tmp\U名称”],“/uploads/”$文件名);
echo“存储在:“.”/uploads/”$filename中;
回显“
\n”; echo“将为此纬度计算昼时:”。$\u POST['latCSV']; 回声“
”; //打印出上传的文件.csv 回显“\n\n”; 回显“avgcrownmincrownmaxcrowndadelogeddaylighthours”; 回声“; $f=fopen(“./uploads/”$filename,“r”); $i=0;//只是一个计数器 而(($line=fgetcsv($f))!==false){ 回声“; foreach($行作为$单元格){ //在输出之前保存该值 $lastColValue=htmlspecialchars($cell); //未设置($lastColValue[3]); 回显“$lastColValue.”; } //检查日期是否有效 checkDateString($lastColValue); //如果要在阵列中存储所有日志日期: $logDates[]=$lastColValue; $firstlogDate=$logDates[$i]; echo“.checkDateString($lastColValue)。”; //对每行使用firstlogDate调用函数 echo“.calcDaylight($firstlogDate,$_POST[“latCSV”])”; 回音“\n”; $i=$i+1; } 外国法郎(f美元); 回声“; }

我希望在上传文件时只打印CSV文件的前3列,因为其他两列将使用各自的函数进行计算。Datelogged将从csv中获取,并正确重新格式化,昼时也将从Datelogged中计算。

此代码可能会对您有所帮助

?php
echo "<html><body><table>\n\n";
$f = fopen("so-csv.csv", "r");
while (($line = fgetcsv($f)) !== false) {
        $count=0;
        echo "<tr>";
        foreach ($line as $cell ) 
        {
            if($count<3)
            {    
                echo "<td>" . htmlspecialchars($cell) . "</td>";
                $count++;
            }
        }
        echo "<tr>\n";
}
fclose($f);
echo "\n</table></body></html>";
?php
回显“\n\n”;
$f=fopen(“so csv.csv”,“r”);
而(($line=fgetcsv($f))!==false){
$count=0;
回声“;
foreach($行作为$单元格)
{

如果首先($count,请使用PHP文件系统库解析$file\u内容:

$foo=split(“,”,$file_contents)

参考

现在,您可以访问前三列:

echo foo[0] . '/' . foo[1] . '/' . foo[2];
替换此项:

                    foreach ($line as $cell) {
                        // Save the value before you output
                        $lastColValue = htmlspecialchars($cell);
                        //unset($lastColValue[3]);
                        echo "<td>" . $lastColValue . "</td>";

                    }
foreach($line作为$cell){
//在输出之前保存该值
$lastColValue=htmlspecialchars($cell);
//未设置($lastColValue[3]);
回显“$lastColValue.”;
}
为此:

                    $lineValues = array_values($line);
                    if (count($line) < 3) {
                        echo "<td>This line is unusable</td><td></td><td></td>";
                    }
                    for ($colNum = 0; $colNum < 3; $colNum++) {
                        echo "<td>" . htmlspecialchars($lineValues[$colNum]) . "</td>";
                    }
$lineValues=数组值($line);
如果(计数($line)<3){
echo“该行无法使用”;
}
对于($colNum=0;$colNum<3;$colNum++){
echo“.htmlspecialchars($lineValues[$colNum])”;
}

@Hardik…它确实有帮助,但它没有给我前3列,而是给了我前3行。但是谢谢你的帮助!我已经更新了我的代码,将前三行作为表rowAvgCrown、MinCrown、MaxCrown、dateLogged的三列。我想传递所有这些值,但我只想显示表中的前3列e表..我已更新了代码。如果有问题,请尝试此操作,然后告诉我。我尚未测试此代码,因此可能它有一些错误。您是否再次更改代码..它现在似乎已损坏..当您在其中包含if语句时,它工作正常