2016-07-25 62 views
0

我到处搜索过,但没有发现似乎有助于解决此问题。我有一个将数据写入CSV文件的html web表单(在PHP文档中),而表单下方是一个表格,它根据关键词将CSV数据过滤回来。我对这部分的现有代码没有任何问题。但是,我需要一个自动编号功能,为每个表单分配一个编号。即使从哪里开始,我都需要帮助。我对编码还比较陌生,所以任何帮助都会很棒。 编辑:以下是我用于将数据写入csv文件的代码。将自动编号分配给HTML表格条目

if($_POST['formSubmit'] == "Submit") 
{ 
    $fs = fopen("fixturerequests.csv","a"); 
    fwrite($fs,$varFixNum . ", " . $varRequester . ", " . $varDept . ", " . $varSupervisor . ", " . $varDesc . ", " . $varParts . ", " . $varWC . ", " . $varAddinfo . ", " . $varDateReq . ", " . $varDateNeed . ", " .$varStatus . "\n"); 
    fclose($fs); 

    header("Location: successfullysubmitted.php"); 
    exit; 
} 

任何指导都很好。谢谢。

+0

这里是创建表单如果每个表格是一个CSV文件中的所有您需要做的是行的代码?统计csv文件有多少行。 –

+0

当然,如果行被删除,并且你希望表单的数量作为一个id并保持不变,那么你应该在你的csv中指定另一个字段,比如'form_id',并且每次你想添加一个表单时只需要得到最后一个从csv记录得到这个记录的form_id并添加1,这一切都取决于你想要什么。如果你给更多的信息,我们将能够帮助你更多 –

+0

@GeorgePant第二个建议你听起来像是最好的选择 - 拉取前一个号码并添加一个。这就是我在上面的代码中尝试的尝试,但正如我之前提到的,我对编码还很陌生。是的,每个对表单问题的回复都是新的一行。您是否希望我编辑我的回复以包含该代码?或者它不相关? –

回答

1

您可以使用此功能

function next_available_form_id(){ 

    $rows = file('fixturerequests.csv'); //put our csv file into an array 

    if(empty($rows)) return 1;   //if our csv is empty we start from 1 

    $data = str_getcsv(array_pop($rows)); //array_pop gets the last row 

    return $data[0]+1;   //we get first field and add 1 to it 
            //Just use the field where you store the form number 
            //e.g if you store the form number in the 
            //4th field replace $data[0] with $data[3] 

} 

根据您所提供,你可以使用我提供将其存储在CSV file.Just使这个修改您的代码后,之前获得下一个form_id功能的代码打开CSV文件:

$fs = fopen("fixturerequests.csv","a"); 
$form_id=next_available_form_id(); //ADD THIS to get the next available id 

//And insert $form_id as the first field in your csv file 
fwrite($form_id,$fs,$varFixNum . ", " . $varRequester . ", " . $varDept . ", " . $varSupervisor . ", " . $varDesc . ", " . $varParts . ", " . $varWC . ", " . $varAddinfo . ", " . $varDateReq . ", " . $varDateNeed . ", " .$varStatus . "\n"); 

注意: 当然,因为CSV你现在已经不具备作为form_id您应该从头开始创建CSV文件中的第一场或者在现有records.In我用awk做到这一点的例子补充形式的数字:

awk '{printf "%d,%s\n", NR, $0}' < fixturerequests.csv 
+0

它完美的工作!非常感谢您的帮助! –

+0

我的回答很快就帮到了你 –