Я хочу использовать fwrite для сохранения данных в файл .txt. Метод действия, кажется, работает, так как он может отображать теги HTML при передаче при нажатии кнопки отправки, но я не буду запускать 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>
Это отправляет его в «eksamen_save_data.php», который выглядит следующим образом:
<?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);
?>
Если я напишу какой-нибудь HTML-код в «eksamen_save_data.php», я это покажу, но PHP не запустится. Я использую XAMPP.
Проблема в том, что он не сохранится в файл «data.txt», как я говорю PHP.
Другой вопрос; Есть ли способ, я могу заставить PHP работать в том же файле, где у меня есть мой fieldset?
ПОСЛЕДНИЕ РЕДАКТИРОВАТЬ:
Большую часть времени это маленькие ошибки, которые оказываются самой большой проблемой. Для меня лично я забыл использовать: localhost / eksamen_tilføj.php в браузере.
Так что я сделал ошибку в XAMPP.
использование file_put_contents
file_put_contents("data.txt", $user_data, FILE_APPEND);
Он выполняет все работы, такие как открытие, запись и закрытие файла. Преимущество в том, что если файл не существует, он будет создан.
Найти полный рабочий код
<?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);
?>
вам придется удалить третий параметр $test
(потому что это определяет длину контента, который будет написан). Но $test
не определен в вашем файле PHP, поэтому он не будет ничего писать ..
Так что измени это
fwrite($fh, $user_data, $test) or die ("Fejl i skrivning til fil!");
в это
fwrite($fh, $user_data) or die ("Fejl i skrivning til fil!");
и взглянуть на этот 🙂
Что касается вашего второго вопроса: уверен, что вы можете объединить свою форму и представить сценарии:
<?php
if(count($_POST) > 0) { //
/** Form submit function, file write **/
} else {
?>
<html>
<form action="#" method="POST">
<!-- Enter HTMLform here -->
</form>
</html>
<?php } ?>
Этот псевдокод не очень хорош, но подойдет для объяснения вещей. #
в форме действие означает, что тот же сценарий должен быть вызван при отправке. if(count($_POST) > 0)
проверяет, были ли данные представлены. Если это так, файл будет записан. В противном случае форма будет отображаться.
Удачи.