Search code examples
phpxamppfwritefieldset

HTML forms, fwrite and PHP


I want to use fwrite to save data into a .txt file. The action method seems to be working, as it can show HTML tags when being transfered when pressing submit, but i wont run the PHP.

<HTML lang="da">
<style>
</style>

<header>
    <title>Tilføj</title>
    <meta charset="ISO-8859-1">
</header>

<body>

<form method="post" action="eksamen_save_data.php" enctype='multipart/form-data'>

        <fieldset>
            <legend>Filmoplysninger</legend>
                <div><label>Titel: <input type="text" name="titel" id="titel" required="required" size="60" maxlength="100"></label></div>
                <div><label>Hovedskuespiller: <input type="text" name="hovedskuespiller" id="hovedskuespiller" required="required" size="30" maxlength="100"></label></div>
                <div><label>Genre: <input type="text" name="genre" id="genre" required="required" size="60" maxlength="100"></label></div>
                <div><label>Format: <input type="text" name="format" id="format" required="required" size="60" maxlength="100"></label></div>
                <div><label>Billede: <input type="file" name="billede" id="billede" required="required"></label></div>
        </fieldset>

        <div><input type="submit" id="ok" value="OK"></div>
    </form>

</body>

This sends it to the "eksamen_save_data.php" that looks like this:

<?php
        $Titel = $_POST["titel"];
        $Hovedskuespiller = $_POST["hovedskuespiller"];
        $Genre = $_POST["genre"];
        $Format = $_POST["format"];
        //$Billede = $_FILES["billede"]["navn"];

        //if($_FILES){
        //  move_uploaded_file($_FILES["billed"]["navn"], $_FILES["billed"]["navn"]);
        //}

        $user_data = "$Titel, $Hovedskuespiller, $Genre, $Format, $Billede \r\n";

        $fh = fopen("data.txt", "a") or die("Fejl i åbning af fil!");
        fwrite($fh, $user_data) or die ("Fejl i skrivning til fil!");
        fclose($fh);
?>

If i write some HTML in the "eksamen_save_data.php" i can show this, but it wont run the PHP. I'm using XAMPP. The problem is that it wont save to the "data.txt" file as i tell the PHP to do.

Another question; is there also a way, I can make the PHP run in the same file as where I have my fieldset?

LAST EDIT:

Most of the time it's the little mistakes that proves to be the biggest problem. For me i personally forgot to use: localhost/eksamen_tilføj.php in the browser.

So it was me making a mistake in XAMPP.


Solution

  • Use file_put_contents

    file_put_contents("data.txt", $user_data, FILE_APPEND);
    

    It does all the jobs like file open, write and close. Advantage is if the file does not exist then it will create.

    Find full working code

    <?php
            $Titel = $_POST["titel"];
            $Hovedskuespiller = $_POST["hovedskuespiller"];
            $Genre = $_POST["genre"];
            $Format = $_POST["format"];
            $Billede = $_FILES["billede"]["name"];
    // Example of accessing data for a newly uploaded file
    $fileName = $_FILES["billede"]["name"]; 
    $fileTmpLoc = $_FILES["billede"]["tmp_name"];
    // Path and file name
    $pathAndName = "upload/".$fileName;
    // Run the move_uploaded_file() function here
    $moveResult = move_uploaded_file($fileTmpLoc, $pathAndName);
    // Evaluate the value returned from the function if needed
    if ($moveResult == true) {
        echo "File has been moved from " . $fileTmpLoc . " to" . $pathAndName;
    } else {
         echo "ERROR: File not moved correctly";
    } 
    
            $user_data = "$Titel, $Hovedskuespiller, $Genre, $Format, $Billede \r\n";
     file_put_contents("data.txt", $user_data, FILE_APPEND);
    ?>