Problem: Whenever I change the enctype
on my HTML form to multipart/form-data
, $_POST
variables do not populate in my php script. Users upload files along with filling out a form, and the files upload to the server but the $_POST
variables do not populate.
Code:
My HTML form that collects the data text/picture.
index.php
<form name="myForm" METHOD="POST" ACTION="" enctype="multipart/form-data">
<input type="text" name="text1" id="text1">
<input type="text" name="text2" id="text2">
<input type="file" name="filebutton" id="filebutton">
<input type="submit" name="submit" id="submit">
</form>
My php script that attempts to update my MySQL database, as well as upload my file on my Ubuntu server is below.
upload.php
<?php
$uploaddir = "/var/www/img/pictures/";
$uploadfile = $uploaddir . basename($_FILES['filebutton']['name']);
move_uploaded_file($_FILES['filebutton']['tmp_name'], $uploadfile);
if (isset($_POST['filebutton'])) {
$pictureUpdate = ", PICTURE_FILEPATH = '" . $_POST['filebutton'] . "'";
} else {
$pictureUpdate = "";
}
$connection = mysqli_connect("1.2.3.4","xxxx","xxxx","xxxx") or die("Caonnot connect to database.");
$update = "UPDATE table SET COLUMN1='" . $_POST['text1'] . "', COLUMN2='" . $_POST['text2'] . "' . $pictureUpdate . " where COLUMN3 = " . $_POST['text1'] . " ";
$update_sql = mysqli_query($connection, $update) or die("Cannot connect to mysql table. ". $update);
header("Location: " . $_SERVER['REQUEST_URL'] . "?success=1");
exit();
What I've Tried: This is the first time doing this, so I'm kinda freestyling here because I cannot seem to get this to work.
- Changed the
enctype
toapplication/x-www-form-urlencoded
. Neither the$_POST
or$_FILE
data showed up in the upload.php file. - Removed
application/x-www-form-urlencoded
altogether. When I do this, my$_POST
variables work, but my file does not upload. - Checked php.ini for
post_max_size
. Upon searching the internet, I've come across a couple StackOverflow topics concerning similar issues. From what I've gathered, if the file trying to be uploaded exceeds the value inpost_max_size
, then$_POST
variables will not go through. The value in my php.ini file forpost_max_size
says "8M", and the test file picture being uploaded is 103 KiB.
How do I get $_POST
data to work, as well as uploading a file from the same form?
ACTION="upload.php"
– Pussyaction
not being set doesn't seem to be the issue; I've changed action to point to my php script, and this did not solve my problem. – Gwin