Невозможно сохранить пустой список - PullRequest
0 голосов
/ 28 апреля 2020

Нужна помощь, чтобы сохранить пустой список. У меня есть 2 списка, которые я могу переместить в и из и сохранить, но когда я удаляю последний оставшийся элемент и хочу сохранить пустой список, он всегда сохраняется с последним элементом, поэтому я не могу сохранить пустой список.

Вот код для моих 2 списков:

<select name=master[] id=master class="master" multiple="multiple" size='6'>
<?php   
    $file = fopen("master.csv", "r");
    while (($row = fgetcsv($file, 0, ",")) !== FALSE) {
        $master = $row[0];
?>
    <option value="<?php echo $master;?>"><?php echo $master; ?></option>
<?php
    }
?>
</select> 

<form action="update.php" method="post" >
    <input type=button class="master" name=b1 id=b1 value='Move >'>
    <input type=button class="master" name=b2 id=b2 value='< Remove'>&nbsp;&nbsp;&nbsp;&nbsp;

<select name=category[] id=category multiple="multiple" >
<?php   
    $file = fopen("category.csv", "r");
    while (($row = fgetcsv($file, 0, ",")) !== FALSE) {
        $category = $row[0];
?>
    <option value="<?php echo $category;?>"><?php echo $category;?></option>
<?php
    }
?>
</select>
    <input type="hidden" name="masterlist" id="masterlist" value="">
<input type="submit" onclick="displayResult()" value="Save File" name="submit" >
</form>

И вот мое обновление. php file: -

<?php
header("Location:".$URL.'index.php');

if ($_POST['masterlist']) {
    $list = $_POST['masterlist'];
    $str_master = explode (",", $list);
    foreach ($str_master as $key => $value) {
        $resultmaster.=$value. "\n";
    }
    file_put_contents('master.csv',$resultmaster);
}

if ($_POST['category']) {
    $category = $_POST['category'];
    $categoryunique = array_unique($category);
    sort($categoryunique);
    foreach ($categoryunique as $key => $value) {
        $resultcategory.=$value. "\n";
    }
    file_put_contents('category.csv',$resultcategory);
}
?>

Это работает для сохранения пустого списка, но когда я пытаюсь сохранить пустой список с несколькими списками он сохраняет предыдущий список как пустой. Интересно почему?

<?php
header("Location:".$URL.'index.php');

if ($_POST['masterlist']) {
    $list = $_POST['masterlist'];
    $str_master = explode (",", $list);
    foreach ($str_master as $key => $value) {
        $resultmaster.=$value. "\n";
    }
    file_put_contents('master.csv',$resultmaster);
}

if ($_POST['category']) {
    $category = $_POST['category'];
    $categoryunique = array_unique($category);
    sort($categoryunique);
    foreach ($categoryunique as $key => $value) {
        $resultcategory.=$value. "\n";
    }
    file_put_contents('category.csv',$resultcategory);
}
if (empty($_POST['category'])) {
    file_put_contents("category.csv", "");
}

if ($_POST['category1']) {
    $category1 = $_POST['category1'];
    $category1unique = array_unique($category1);
    sort($category1unique);
    foreach ($category1unique as $key => $value) {
        $resultcategory1.=$value. "\n";
    }
    file_put_contents('category1.csv',$resultcategory1);
}
if (empty($_POST['category1'])) {
    file_put_contents("category1.csv", "");
}

if ($_POST['category2']) {
    $category2 = $_POST['category2'];
    $category2unique = array_unique($category2);
    sort($category2unique);
    foreach ($category2unique as $key => $value) {
        $resultcategory2.=$value. "\n";
    }
    file_put_contents('category2.csv',$resultcategory2);
}
if (empty($_POST['category2'])) {
    file_put_contents("category2.csv", "");
}
?>

1 Ответ

1 голос
/ 28 апреля 2020

if ($_POST['masterlist']) не будет успешным, когда ввод пуст, поскольку пустая строка ложная.

Если вы хотите проверить, был ли введен ввод, используйте if (isset($_POST['masterlist']))

You может также написать пустой файл, когда ввод пуст:

if (empty($_POST['masterlist'])) {
    file_put_contents("master.csv", "");

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

if (isset($_POST['form1'])) {
    $catkey = 'category';
    $filename = 'category.csv';
} else if (isset($_POST['form2'])) {
    $catkey = 'category1';
    $filename = 'category1.csv';
} else {
    die("Unrecognized form submitted");
}

if (empty($_POST[$catkey])) {
    file_put_contents($filename, "");
} else {
    $category = $_POST[$catkey];
    $categoryunique = array_unique($category);
    sort($categoryunique);
    foreach ($categoryunique as $key => $value) {
        $resultcategory.=$value. "\n";
    }
    file_put_contents($filename,$resultcategory);
}
...