2016-03-22 19 views
0

それはちょうどどのように聞こえる...投稿IDを作成するには

私はHTML5フォームとデータベースを持っていません。 (私はこれを提案/サポートしていませんでした。単に環境に適応しています)。

サーバにエントリを保存するために、私はそれらを兄弟の.CSVファイルに書き込むことに決めました。

私は後でエントリIDの必要性の出番である道路、ダウンロジックのためのこれらのエントリを参照する簡単な方法を必要とする

私の周りGoogleで検索してきたし、任意の方法を見つけることができませんでした - 。手続きの両方そしてプログラム的に - それは役に立つかもしれません。それは私の未熟さのせいかもしれませんが。

要約:フォームが送信されるたびに実行されるPHPファイルに、ローカルで一意のエントリID文字列/ intを作成するにはどうすればよいですか?

+0

なぜ実際のIDを持つ別のファイルがありませんか? –

+0

どうしてですか? @ KIMB-technologies – ExcellentSP

+1

あなたが何を求めているのか本当にわかりません。あなたはこれを探していますか?:http://php.net/manual/en/function.uniqid.php – David

答えて

1

実際のIDを保存できる別のテキストファイルを使用することができます。

例えば:

<?php 
    //Get last ID 
    $lastid = file_get_contents('last_id.txt'); 
    if(empty($lastid)){ $lastid = 0); 
    $thisid = $lastid + 1; 

    //save post data to CSV 
    //use $lastid 

    //save for next time 
    file_put_contents('last_id.txt', $thisid); 

?> 

私はあなたのポイントの権利を持っている場合。

EDIT:

あなたはPOSTリクエストを持っているし、CSVファイルにデータを保存します。行をマークするには一意のIDが必要です。

例えば:あなたのファイルは次のようになります。

csv_data.txt

1, Max, Mustermann 
2, Otto, Muster 

last_id.txt

2 

新しい要求がサーバーに付属している場合、あなたが最後に追加されますがIDをout last_id.txtから削除し、この値を大きくします。この増加した値が次回の一意のIDになります。 は、今すぐあなたのCSVファイルに次の行を追加します。

3, Ben, Miller 

そして最後に、あなたはあなたのlast_id.txtに(この場合は3)でユニークなIDを保存します。 次のリクエストを受け取ったら、3から4などとなります。

+0

あなたは私の意見があります。質問をより明確にするために言い直したいのであれば、自由に感じてください。 – ExcellentSP

+0

ファイルロックを忘れないでください。http://php.net/manual/en/function.flock.phpを参照してください。そうしないと、2人のユーザーがシステムに2回の書き込みを一度に実行させる場合に問題が発生する可能性があります。 – HoldOffHunger

+0

@HoldOffHungerこの方法では、エントリログがロックされるため、処理が中断されたリードのキューを作成する必要がありますか? – ExcellentSP

1

一意のIDを取得するには、uniqid()を使用します。

あなたは、あなたが使用することができ、ファイルの数に対応する番号が必要な場合:

$directory = "/csv_folder"; 
$entryID = count(scandir($directory)) - 2; 

をこれは、CSVアップロードフォルダ内のファイル数をカウントします。そこからファイルを削除しない限り、それは一意の連続番号になります。

+0

私は使い方が簡単ですが、通常のエントリIDのようにCSVのエントリの総数は数えません。 – ExcellentSP

+0

私はあなたに既にアップロードされたファイルの数を与える私の答えに代わるものを追加しました。 – trincot

+0

CSV VSごとに1つのエントリを使用することをお勧めします。すべてのエントリに対して1 CSV? – ExcellentSP

関連する問題