0

ログインしてメモを書いてノートを作っています。すべての情報はテキスト ファイルに保存する必要があります (DB の方が簡単なのはわかっていますが、ファイルに保存することがプロジェクトの要件です)。

これまでのところ、ログイン、新しいメンバーの作成、新しいメモの追加を行ってきました。そのメモを編集可能にする必要があります。

ビューにすべてのメモを表示しているので (その後、ユーザーがログインします)、ログインしたユーザーに属するこれらのメモに「編集」というアンカーを追加します。

        foreach ($notes as $item)
    {
        if ($item['user'] == $name) // if post belongs to logged in user, I add "edit"
        {
             echo "<h3>", $item['user'], " " ,$item['date'], "</h3>";
             echo "<p>", $item['content'], " ", anchor('site/edit_note', 'Edit'), "</p>";                
        } 
        //if posts belongs to other users, notes are just posted
              else { 
                   echo "<h3>", $item['user'], " " ,$item['date'], "</h3>";
                   echo "<p>", $item['content'], "</p>";
               }   
    }

私のテキストファイル構造:

some user : some user post : date

これらのアンカーを使用していくつかの情報を渡す必要があると思います。アンカーを一意にし、ファイル内のどこを編集するかを把握し、その投稿をテキスト領域形式で表示する必要があります。URI クラスと URL ヘルパーについて読んだことがありますが、それが必要かどうかわかりません。

後で、ファイル情報の配列を作成し、必要な投稿を配列に書き直してから、配列をファイルなどに保存すると思います。知りたいのは、これが正しい方法ですか?

4

1 に答える 1

1

行/投稿ごとに一意の ID を持つようにファイル構造を変更する必要があると思います。

unique id : some user : some user post : date

次に、次のように URL を設定できます。

echo "<p>", $item['content'], " ", anchor('site/edit_note/'.$item['id'], 'Edit'), "</p>";

edit_note メソッドは ID パラメータを受け入れる必要があります

function edit_note($requested_id = null)
{
    if (!$requested_id) { return ""; }
    // get the requested id item from your file, that is below

    // The [`file()` function][1] will return the contents of a file as an array. 
    // Each array item will be a line of the file. So if each of your posts are a 
    // line, then you can just do:

    $rows = file('file/path/here');

    //Filter the $rows array to view just the ID needed
    $selected_row = array_filter($rows, function($row) use ($requested_id) {
        $row_items = explode(' : ', $row);
        return ($row_items[0] == $requested_id); 
    });

    $row_items = explode(' : ', $selected_row);

    // now you'll have the contents of the requested post in the $row_items array
    // and can call a view and pass it that data
    $data['row_items'] = $row_items;
    $this->load->view('edit_view', $data);
}
于 2012-08-15T19:29:37.597 に答える