Чтение и запись файла в PHP, помогите с форматированием? - PullRequest
0 голосов
/ 22 марта 2011

Я пишу это в файл:

    $myFile = "purchases.txt";
    $fh = fopen($myFile, 'a');
    $stringData = $title ."|". $id;
        fwrite ($fh, $stringData."|");
    fclose ($fh);

В отдельном файле я пишу имена:

  $name = $_POST['name'];
    $last = $_POST['lastname'];
    $name = $name ." ". $last;
    $myFile = "purchases.txt";
    $fh = fopen($myFile, 'a');
    $stringData = $name;
    fwrite ($fh, $stringData."\r\n");
    fclose ($fh);

И повторяю содержимое:

foreach($lines as $theline ) {
            list($title, $id, $name) = split('\|',$theline); 
                    echo "
                        <tr><td><h3>Title</h3></td>
                        <td><h3>ID</h3></td>
                        <td><h3>Name</h3></td>
                        <td><h3>Date</h3></td>
                         <tr><td><h4>$title</h4></td>
                         <td><h4>$id</h4></td>
                         <td><h4>$name</h4></td>
                         <td><h4>".date('l \\t\h\e jS')."</h4></td></tr>
                         ";                  
                     }

Файл выглядит следующим образом:

 Uncharted 3 |1| Deus Ex |2| Metal Gear Solid |3|Lib drfsdgf

Проблема: Если в файле более одного названия игры, он печатает название вместо имени клиента в таблице.

1 Ответ

2 голосов
/ 22 марта 2011

Рассмотрите возможность хранения ваших данных в формате json или xml. Затем, когда вы читаете его, вы можете использовать встроенные функции php, чтобы прочитать его правильно.

json_encode и json_decode ваши друзья.

Редактировать: вышеупомянутый совет все еще применяется, но я только что заметил аспект двух разных файлов.

Это решение также не будет работать, поскольку вы добавляете данные дважды. Либо очистите способ добавления данных в файл (полностью соберите строку, затем запишите ее в свой файл), либо переключитесь на базу данных. Базы данных предназначены для более изящного решения таких проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...