Загрузка значений csv из файла в веб-форму как ПО УМОЛЧАНИЮ с использованием PHP

Код, прикрепленный ниже, работает, он запрашивает ввод двух элементов, а затем при отправке помещает значения в файл csv на сервере php.

Я хотел бы ЗАГРУЗИТЬ ПОСЛЕДНИЕ предыдущие результаты, теперь ПОСЛЕДНЮЮ строку в файле csv, обратно В форму как ПО УМОЛЧАНИЮ для следующего раунда (таким образом, 2 поля заполняются значениями, и пользователь может либо снова нажать SUBMIT, либо внесите изменения и нажмите SUBMIT, чтобы отправить новые измененные значения). Если вы знаете какую-нибудь простую кодировку, чтобы ДОБАВИТЬ к коду, чтобы выполнить работу, я хотел бы увидеть это... СПАСИБО

НИЖЕ находится файл «FormTest-002.php», который вызывает себя при отправке...

<?php
if($_POST['formSubmit'] == "Submit")
{
    $errorMessage = "";

    if(empty($_POST['formGum']))
    {
        $errorMessage .= "<li>You didn't enter your favourite gum</li>";
    }
    if(empty($_POST['formName']))
    {
        $errorMessage .= "<li>You didn't enter your name</li>";
    }

    $varGum = $_POST['formGum'];
    $varName = $_POST['formName'];

    if(empty($errorMessage)) 
    {
        $fs = fopen("gumdata.csv","a");
        fwrite($fs,$varName . ", " . $varGum . "\n");
        fclose($fs);        
        header("Location: SubmitSuccessful.html");
        exit;
    }
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html>
<head>
    <title>MyGUM Form</title>
</head>

<body>
        <b>v1.01/18jan25/fj</b>

    <?php
        if(!empty($errorMessage)) 
        {
            echo("<p>There was an error with your form:</p>\n");
            echo("<ul>" . $errorMessage . "</ul>\n");
        } 
    ?>
    <form action="FormTest-002.php" method="post">
        <p>
            What is your favorite Gum?<br>
            <input type="text" name="formGum" maxlength="35" value="<?=$varGum;?>" />
        </p>
        <p>
            What is your name?<br>
            <input type="text" name="formName" maxlength="35" value="<?=$varName;?>" />
        </p>                
        <input type="submit" name="formSubmit" value="Submit" />
    </form>
</body>
</html>

person Fred    schedule 25.01.2018    source источник


Ответы (2)


Для записи и чтения CSV-файла PHP имеет встроенную функцию. используйте fgetcsv() и fputcsv()

person Mochamad Arifin    schedule 25.01.2018

Хорошо, я надеюсь, что кому-то это будет очень полезно! Это работает и является хорошей отправной точкой для записи и чтения CSV, а также использования последних значений, введенных как НАЧАЛЬНЫЕ НАСТРОЙКИ ПО УМОЛЧАНИЮ, для следующей записи.

Я все еще хочу изменить функции, чтобы использовать настоящие CSV-функции fgetcsv() и fputcsv(), но это работает!

<?php
###
$ver="1.07e/17jan27";
###
#To use:
#  -By Fred Johnston and put onto StackExchange.com 18jan27
#  -If you find this helpful, please UPVOTE me on stackexchange.com... God Bless
#  -Put this FormTest-005.php into /var/www/html/whatever
#  -Create a blank text file called gumdata.csv in same folder
#  -Create an index.php in same folder with contents below
#  -Set all wide open permissions FOR TEST... "sudo chmod 777 *"
#  -Browse to the folder eg http://127.0.0.1/whatever
#Contents of index.php follow... (remove # (COMMENT) at start of each line)
#<HTML>
#<HEAD>
#<TITLE>Gummy Page</TITLE>
#</HEAD>
#<body>
#<A HREF="./FormTest-005.php">FromTest-005.php (GummyForm TEST)</A><BR>
#</BODY>
#</HTML>
#
###
### HERE WE GO... First pass skips this section, as form NOT submitted yet
### ...after form submitted, THIS section then runs when called 2nd time
###
if($_POST['formSubmit'] == "Submit")
{
    $errorMessage = "";

    if(empty($_POST['formGum']))
    {
        $errorMessage .= "<li>You didn't enter your favourite gum</li>";
    }
    if(empty($_POST['formName']))
    {
        $errorMessage .= "<li>You didn't enter your name</li>";
    }

    $varGum = $_POST['formGum'];
    $varName = $_POST['formName'];

    if(empty($errorMessage)) 
    {
        $fs = fopen("gumdata.csv","a");
        fwrite($fs,$varName . ", " . $varGum . "\n");
        fclose($fs);        
        header("Location: SubmitSuccessful.html");
        exit;
    }
}
?>

<?php
###
### This section runs, and reads in and displays CURRENT csv file
### ...and will list the contents of it as it gets more rows
### ...it also sets variables so they can populate as DEFAULTS!!
###
$row = 1;
  echo "==========================================="."<br>";
  echo $ver . "<br>";
  echo "CONTENTS OF gumdata.csv...<br>";
  echo "==========================================="."<br>";
if (($handle = fopen("gumdata.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        if ($row <> 1){
          echo "======= ======= =======" . "<br>";
        }
        echo "$num fields in line $row:"."<br>";
        $row++;
        for ($c=0; $c < $num; $c=$c+2) {
            echo "&nbsp;&nbsp;&nbsp;&nbsp;Name:" . $data[$c] . "<br>";
            echo "&nbsp;&nbsp;&nbsp;&nbsp;Gum:" . $data[$c+1] . "<br>\n";
            $varName = $data[$c];
            $varGum = $data[$c+1];
        }
    }
    echo "==========================================="."<br>";
    echo "==========================================="."<br>";
    fclose($handle);
}
?>

<?php
### 
### The next section is the display of the form, populated with the LAST previously entered
### values, so can be used as base for the next entry added.  Once submitted, THIS
### file FormTest-005.php is RE-RAN and the top section then does a STUPID CHECK and if
### all ok, then writes the two entered fields into the gumdata.csv file
###
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html>
<head>
    <title>MyGUM Form</title>
</head>

<body>
    <?php
        if(!empty($errorMessage)) 
        {
            echo("<p>There was an error with your form:</p>\n");
            echo("<ul>" . $errorMessage . "</ul>\n");
        } 
    ?>

        <?php
          echo $ver; #show version
        ?>


    <form action="FormTest-005.php" method="post">
        <p>
            What is your favorite Gum?<br>
            <input type="text" name="formGum" maxlength="35" value="<?=$varGum;?>" />
        </p>
        <p>
            What is your name?<br>
            <input type="text" name="formName" maxlength="35" value="<?=$varName;?>" />
        </p>                
        <input type="submit" name="formSubmit" value="Submit" />
    </form>
</body>
</html>
person Fred    schedule 27.01.2018