Я не совсем уверен, как это сделать, и я застрял, пытаясь понять это. Я хочу иметь возможность увеличивать одно значение внутри массива каждый раз, когда пользователь нажимает кнопку отправки, которая сохраняется в файле 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, с каждой уникальной записью с увеличенным идентификационным номером.






Основная стратегия - прочитать существующие записи из файла CSV, а затем использовать эту информацию для создания нового идентификатора. Новый идентификатор может быть основан на:
В вашем существующем коде цикл 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 ...
}
Не могли бы вы рассказать, как вы читаете значение файла csv?