我正在使用PHP、HTML5和JavaScript。
我正在制作一个网页(将链接到数据库)。我试图检查标签中是否有输入,这是可行的,但当点击按钮时,即使标签中没有输入,它也会转到下一页并发送数据。
在输入所有标签之前,您应该一直停留在页面上。它还提供了一条有效的错误消息。
我是否可以在javascript中插入一些内容,以便它转到下一页并发送数据(如method=“GET”)
我以前从来没有将数据库链接到网站上,所以我不知道如何在所有输入字段都被填满的情况下才能发送数据。
这是我的HTML5代码。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="assets-addperson/css/personstyle.css" rel="stylesheet" type="text/css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Festive&display=swap" rel="stylesheet">
<title>Add a person</title>
</head>
<body>
<div class="pagesize">
<h1>Create a new account</h1>
<img src="assets-addperson/images/create_account.png" alt="create_account" class="image_account"/>
<p class="text_labels_complete">Every field needs to be filled!</p>
<!--<form action="personadded.php" method="GET">-->
<div class="class-labels">
<label for="input-firstname">
First Name
</label>
<br>
<input type="text" id="input-firstname" name="firstname">
<br>
<br>
<label for="input-name">
Name
</label>
<br>
<input type="text" id="input-name" name="name">
<br>
<br>
<label for="input-gender">
Gender
</label>
<br>
<input type="text" id="input-gender" name="gender">
<br>
<br>
<label for="input-description">
Description
<br>
<input type="text" id="input-description" name="description">
<br>
<br>
</div>
<input type="submit" class="create_account_button" value="Create Account">
<!--</form>-->
</div>
<script src="assets-addperson/js/script.js"></script>
</body>
</html>
这是我目前的javascript代码
console.log("loaded");
var buttonElement = document.querySelector(".create_account_button");
var labelElementLabelsComplete = document.querySelector(".text_labels_complete");
var inputFirstname;
var inputName;
var inputGender;
var inputDescription;
buttonElement.addEventListener("click",function()
{
inputFirstname = document.querySelector("#input-firstname").value;
inputName = document.querySelector("#input-name").value;
inputGender = document.querySelector("#input-gender").value;
inputDescription = document.querySelector("#input-description").value;
console.log("i am active");
if(inputFirstname == "" || inputName == "" || inputGender == "" || inputDescription == "")
{
labelElementLabelsComplete.style.visibility = "visible";
console.log("you're in the loop")
}
});
删除表单操作后,我可以使用javascript移动到下一页,但不会发送所有输入数据。
if(inputFirstname == "" || inputName == "" || inputGender == "" || inputDescription == "")
{
labelElementLabelsComplete.style.visibility = "visible";
console.log("you're in the loop")
}
else
{
window.location = "personadded.php"
}
这里有很多内容要讲,所以我会尽量让所有内容都有意义。
首先,如果您想将表单提交到同一个PHP文件(我假设这个页面的文件名是personadded.php),您可以关闭“action”属性。默认情况下,表单将提交到同一页面。
接下来,您将需要一些PHP代码来处理数据。此外,如果缺少任何数据,您应该显示此表单(我知道javascript用于验证,但我们希望PHP也进行检查以防万一)。因此PHP将首先验证所有字段是否都有值。如果没有,PHP将显示您的表单。如果所有字段都有值,它将保存到数据库并重定向到下一页。
<?php
$firstname = (!empty($_REQUEST["firstname"]) && $_REQUEST["firstname"] != "") ? $_REQUEST["firstname"] : false;
$name = (!empty($_REQUEST["name"]) && $_REQUEST["name"] != "") ? $_REQUEST["name"] : false;
$gender = (!empty($_REQUEST["gender"]) && $_REQUEST["gender"] != "") ? $_REQUEST["gender"] : false;
$description = (!empty($_REQUEST["description"]) && $_REQUEST["description"] != "") ? $_REQUEST["description"] : false;
// If any of the values passed from the form are blank/empty, display the form
if(empty($firstname) || empty($name) || empty($gender) || empty($description)) {
?><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="assets-addperson/css/personstyle.css" rel="stylesheet" type="text/css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Festive&display=swap" rel="stylesheet">
<title>Add a person</title>
</head>
<body>
<div class="pagesize">
<h1>Create a new account</h1>
<img src="assets-addperson/images/create_account.png" alt="create_account" class="image_account"/>
<p class="text_labels_complete">Every field needs to be filled!</p>
<form method="GET" id="form1">
<div class="class-labels">
<label for="input-firstname">
First Name
</label>
<br>
<input type="text" id="input-firstname" name="firstname">
<br>
<br>
<label for="input-name">
Name
</label>
<br>
<input type="text" id="input-name" name="name">
<br>
<br>
<label for="input-gender">
Gender
</label>
<br>
<input type="text" id="input-gender" name="gender">
<br>
<br>
<label for="input-description">
Description
<br>
<input type="text" id="input-description" name="description">
<br>
<br>
</div>
<input type="submit" class="create_account_button" value="Create Account">
</form>
</div>
<script src="assets-addperson/js/script.js"></script>
</body>
</html><?php
} else {
// If we have all the values, you can process the form and redirect to another page
// Code to save your fields to the database would be here
header("Location: https://URL_TO_ANOTHER_PAGE_HERE");
die();
}
?>
我没有包含保存到数据库的代码,因为这是一个完全不同的问题。什么类型的数据库很重要,PHP可以使用几种方法保存到数据库,更不用说关于最佳实践的讨论了。所以现在,我只回答您问题的初始表单提交部分,而不是如何将表单数据保存到数据库。
最后,使用javascript,您实际上需要向表单添加一个事件侦听器,以便在提交表单时,如果没有设置所有字段,您可以停止表单的提交。您可以使用事件的“preventDefault()”函数来完成此操作。基本上,当处理任何事件时,使用“preventDefault()”会停止正常发生的任何操作(在本例中,停止提交表单)。
console.log("loaded");
var formElement = document.querySelector("#form1");
var labelElementLabelsComplete = document.querySelector(".text_labels_complete");
var inputFirstname;
var inputName;
var inputGender;
var inputDescription;
formElement.addEventListener("submit", function(event) {
inputFirstname = document.querySelector("#input-firstname").value;
inputName = document.querySelector("#input-name").value;
inputGender = document.querySelector("#input-gender").value;
inputDescription = document.querySelector("#input-description").value;
console.log("i am active");
if(inputFirstname == "" || inputName == "" || inputGender == "" || inputDescription == "") {
labelElementLabelsComplete.style.visibility = "visible";
console.log("you're in the loop")
event.preventDefault();
}
});
问题内容: 以下代码是我一直在使用的从sql数据库中检索用户信息的代码。 但是,当数据库中没有用户名等于LoginUser.Username的条目时,(dt!= null)不会返回false。有没有其他方法可以检查sqlcommand是否成功? 问题答案: 如果没有匹配的记录,您将得到一个空白,因此您可以检查返回的记录数: 并且,稍微偏离主题的地方,请阅读您的问题下方的注释,然后使用Google术
当页面第一次加载时,我需要检查中是否有图像,并加载最后一个图像。 否则,我禁用预览按钮,提醒用户按下新图像按钮,并创建一个空数组来放置图像; 问题是中的
如何检查数据帧是否为空?在我的例子中,如果为空,我想在终端中打印一些消息。
问题内容: 我需要使用SQL查询来检查数据库是否完全为空(无表)。如何才能做到这一点? 谢谢您的帮助! 问题答案: 将返回数据库中表(或视图)的实际数量。如果该数字为0,则没有表。
问题内容: 当我的函数f用一个变量调用时,我想检查var是否是一个熊猫数据框: 我想解决方案可能很简单,但即使 我无法使其按预期工作。 问题答案: 使用,没有别的: PEP8明确表示这是检查类型的首选方法 而且甚至不用考虑 处理继承(请参见type()和isinstance()之间的区别?)。例如,它会告诉你,如果一个变量是一个字符串(或),因为他们从派生) 专门针对 对象:
我正在将行插入房间数据库,我想检查该行是否已成功插入。 这是我的刀 当我插入一行时,响应为1、2、3,依此类推。。所以它返回的是(是这样吗?) 因此,需要检查行是否正确插入。 我是否可以检查插入的rowId是否大于0,然后将其成功插入数据库。 注意:我得到的结果是1,2,3等,应该是rowId。 请建议这种方法是否正确?基本上,如果插入不成功,我想阻止用户继续 谢谢你的建议和意见