Увеличение одиночного значения в массиве на основе ввода пользователя с использованием цикла for

Я не совсем уверен, как это сделать, и я застрял, пытаясь понять это. Я хочу иметь возможность увеличивать одно значение внутри массива каждый раз, когда пользователь нажимает кнопку отправки, которая сохраняется в файле csv. Однако каждый раз, когда я пробую, число остается равным 1.

Могу я получить совет? Вот что у меня есть:

<?php $name = $_POST["Name"];
$grade = $_POST["Grade"];
$handle = fopen("users.csv", "a+t");

if (!$handle) {
    die("error, can't open file!");
}
if (!flock($handle, LOCK_EX)) {
    die("lock error!");
}
$count = 10;
for ($i = 0; $i < count($count); $i++) {
    $count++; 
    fputcsv($handle, array($i++, $name, $grade)); }
fseek($handle, 0);

while (!feof($handle)) { 

$record = fgetcsv($handle);
?>
<div>
    ID Number: <?php echo $record[0]; ?><br/>
    Name: <?php echo $record[1]; ?><br/>
    Grade: <?php echo $record[2]; ?><br/>
</div> }

Спасибо.

Не могли бы вы рассказать, как вы читаете значение файла csv?

csb 27.04.2018 04:43

Я редактировал код. Спасибо.

Ken 27.04.2018 04:44

Итак, идентификационный номер - это то, что вы пытаетесь увеличить?

csb 27.04.2018 04:50

Да, каждый раз, когда пользователь вводит имя и оценку, я хочу, чтобы эта информация и номер идентификатора сохранялись в файле csv, с каждой уникальной записью с увеличенным идентификационным номером.

Ken 27.04.2018 04:52
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Основная стратегия - прочитать существующие записи из файла CSV, а затем использовать эту информацию для создания нового идентификатора. Новый идентификатор может быть основан на:

  1. Общее количество записей, или
  2. Самый большой сохраненный текущий ID.

В вашем существующем коде цикл for кажется ненужным, поскольку он искусственно генерирует число - которое всегда будет 0, потому что count($count)всегда возвращает 1.

Я почистил код и добавил несколько комментариев:

$name = $_POST["Name"];
$grade = $_POST["Grade"];
$handle = fopen("users.csv", "a+t");

if (!$handle) die("error, can't open file!");
if (!flock($handle, LOCK_EX)) die("lock error!");

$records = array();
while (!feof($handle))
    $records[] = fgetcsv($handle);

// 1. Use this to find the number of elements
$count = count($records);

// 2. Use this to find the largest current ID
$max = $count > 0 ? max(array_column($records, 0)) : 0;

// Our new ID should be based on (1) or (2) above
$newId = $max + 1;

fputcsv($handle, array($newId, $name, $grade));

fseek($handle, 0);
while (!feof($handle)) { 
    $record = fgetcsv($handle);
    // ... print out your <div> here ...
}

Другие вопросы по теме