当前位置: 首页 > 知识库问答 >
问题:

检查标签是否为空,是否保留或将数据发送到数据库

濮翰学
2023-03-14

我正在使用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"
    }

共有1个答案

段坚
2023-03-14

这里有很多内容要讲,所以我会尽量让所有内容都有意义。

首先,如果您想将表单提交到同一个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。 请建议这种方法是否正确?基本上,如果插入不成功,我想阻止用户继续 谢谢你的建议和意见