0

どこでも検索しましたが、これを解決するのに役立つものは何も見つかりませんでした。データを CSV ファイルに書き込む HTML Web フォーム (PHP ドキュメント内) があり、フォームの下には、キーワードに基づいて CSV データをフィルター処理するテーブルがあります。その部分の既存のコードに問題はありません。ただし、各フォームに番号を割り当てる自動採番機能が必要です。どこから始めればよいかについても助けが必要です。私はまだコーディングに比較的慣れていないので、何か助けていただければ幸いです。 編集:これは、データをcsvファイルに書き込むために使用するコードです。

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;
}

どんなガイダンスも素晴らしいでしょう。ありがとうございました。

4

1 に答える 1

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 ファイルに保存する前に次の 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 ファイルを最初から作成するか、既存のレコードにフォーム番号を追加する必要があります。例では、awk を使用してそれを行います。

  awk '{printf "%d,%s\n", NR, $0}' < fixturerequests.csv
于 2016-07-25T15:11:02.757 に答える