我用HTML创建带有引导程序的表单,当用户单击提交按钮时,它会将数据提交到服务器上的json文件。问题是每当我加载页面时,它已经将一堆空数据提交给json文件,当我单击按钮时它什么都不做。 我已经尝试了我想到的一切,无法找到解决方案。也许有人可以帮我解决这个问题。
提前致谢。
这是我的代码:
<?php
$message = '';
$error = '';
if(isset($_POST["submit"]))
{
if(file_exists('tickets.json'))
{
$current_data = file_get_contents('tickets.json');
$array_data = json_decode($current_data, true);
$extra = array(
'titel' => $_POST["titel"],
'omschrijving' => $_POST["omschrijving"],
'datum' => $_POST["datum"],
'naam' => $_POST["naam"],
'TicketType' => $_POST["TicketType"],
);
$array_data[] = $extra;
$final_data = json_encode($array_data);
if(file_put_contents('tickets.json', $final_data))
{
$message = "<label class='text-success'>Ticket verstuurd!</label>";
}
}
else
{
$error = 'No JSON File';
}
}
?>
这是html位。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js">
</script>
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-
beta.3/css/bootstrap.min.css" integrity="sha384-
Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy"
crossorigin="anonymous">
<link rel="stylesheet" href="main.css">
</head>
<body>
<script>
var id;
id = Math.floor((Math.random() * 999) + 1);
</script>
<form method="post" action="submit.php">
<?php
if(isset($error))
{
echo $error;
}
?>
<div class="center">
<div class="form-group">
<label for="Titel">Titel</label>
<input class="form-control" type="text" name="titel" id="Titel">
</div>
<div class="form-group">
<label for="Omschrijving">Omschrijving</label>
<textarea class="form-control" name="omschrijving" id="Omschrijving" rows="3"></textarea>
</div>
<div class="form-group">
<label for="Datum">Datum</label>
<input class="form-control" name="datum" type="date" id="Datum">
</div>
<div class="form-group">
<label for="Naam">Naam</label>
<input class="form-control" name="naam" type="text" id="Naam">
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="radio" name="TicketType" id="TK_Rfc" value="rfc" checked>
RFC
</label>
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="radio" name="TicketType" id="TK_Bug" value="bug">
BUG
</label>
</div><br>
<script class="center">document.write("#" + id);</script><br><br>
<button type="submit" class="btn btn-info">Submit</button>
</div>
<?php
if(isset($message))
{
echo $message;
}
?>
</form>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/js/bootstrap.min.js" integrity="sha384-a5N7Y/aK3qNeh15eJKGWxsqtnX/wWdSZSKp+81YjTmS15nvnvxKHuzaWwXHDli+4" crossorigin="anonymous"></script>
</body>
</html>
答案 0 :(得分:0)
尝试使用if ($_SERVER["REQUEST_METHOD"] == "POST")
代替if(isset($_POST["submit"]))
。您也可以使用<input type="submit" value="Submit" class="btn btn-info">
代替按钮标记。
希望这适合你。维尔成功!
答案 1 :(得分:0)
尝试使用此代码,您会发现它有效。
问题:
既然你说html代码和php代码都在同一个文件中,我将form action属性设置为empty:
<form method="post" action="">
其次,您需要像这样命名提交标记,以便在条件:
时触发PHP代码 <button type="submit" name="submit" class="btn btn-info">Submit</button>
完整代码:
<?php
$message = '';
$error = '';
if (isset($_POST["submit"])) {
if (file_exists('tickets.json')) {
$current_data = file_get_contents('tickets.json');
$array_data = json_decode($current_data, true);
$extra = array(
'titel' => $_POST["titel"],
'omschrijving' => $_POST["omschrijving"],
'datum' => $_POST["datum"],
'naam' => $_POST["naam"],
'TicketType' => $_POST["TicketType"],
);
$array_data[] = $extra;
$final_data = json_encode($array_data);
if (file_put_contents('tickets.json', $final_data)) {
$message = "<label class='text-success'>Ticket verstuurd!</label>";
}
} else {
$error = 'No JSON File';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css" integrity="sha384-Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy" crossorigin="anonymous">
<link rel="stylesheet" href="main.css">
</head>
<body>
<script>
var id;
id = Math.floor((Math.random() * 999) + 1);
</script>
<form method="post" action="">
<?php
if (isset($error)) {
echo $error;
}
?>
<div class="center">
<div class="form-group">
<label for="Titel">Titel</label>
<input class="form-control" type="text" name="titel" id="Titel">
</div>
<div class="form-group">
<label for="Omschrijving">Omschrijving</label>
<textarea class="form-control" name="omschrijving" id="Omschrijving" rows="3"></textarea>
</div>
<div class="form-group">
<label for="Datum">Datum</label>
<input class="form-control" name="datum" type="date" id="Datum">
</div>
<div class="form-group">
<label for="Naam">Naam</label>
<input class="form-control" name="naam" type="text" id="Naam">
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="radio" name="TicketType" id="TK_Rfc" value="rfc" checked>
RFC
</label>
</div>
<div class="form-check">
<label class="form-check-label">
<input class="form-check-input" type="radio" name="TicketType" id="TK_Bug" value="bug">
BUG
</label>
</div><br>
<script class="center">document.write("#" + id);</script><br><br>
<button type="submit" name="submit" class="btn btn-info">Submit</button>
</div>
<?php
if (isset($message)) {
echo $message;
}
?>
</form>
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/js/bootstrap.min.js" integrity="sha384-a5N7Y/aK3qNeh15eJKGWxsqtnX/wWdSZSKp+81YjTmS15nvnvxKHuzaWwXHDli+4" crossorigin="anonymous"></script>
</body>
</html>