dpxo13079 2015-12-03 03:03
浏览 35
已采纳

sql INSERT成功/不成功的消息无法正常显示

I'm using a form to insert records into my database. The error checking works and the records insert correctly. The problem is the record insert message displays above the form instead of underneath it. I've tried moving the INSERT query so it dislays under the form but when I do, the error checking doesn't work. Any help resolving this would be greatly appreciated.

    <p class="first"><span class="error">* required field.</span></p>
    <br>

<?php
function test_input($data){
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
}

$servername = "localhost";
$username = "oldga740_Tonymm";
$password = "JtAjDm#6";
$dbname = "oldga740_SeniorProject";

// create connection
$connection = new mysqli($servername, $username, $password, $dbname);

if(isset($_POST['submit']) && !$connection->connect_error){
    // to track errors
    $error = false;

    // now validate input fields
    if (empty($_POST['Project']) || !isset($_POST['Project'])){
        $ProjectErr = "Project name is required";
        $error = true;
    }elseif(!preg_match("/^[A-Za-z0-9.-]+$/",$_POST['Project'])){
        // check if project only contains number, letters, comma's periods and whitespace
        $ProjectErr = "Only letters, numbers, comma's, periods and white space allowed";
        $error = true;
    }else{
        $Project = test_input($_POST['Project']);
    }

    if (empty($_POST['Client']) || !isset($_POST['Client'])){
        $ClientErr = "Client name is required";
        $error = true;
    }elseif(!preg_match("/^[A-Za-z 0-9.-]+$/",$_POST['Client'])){
        // check if project only contains number, letters, comma's periods and whitespace
        $ClientErr = "Only letters, numbers, comma's, periods and white space allowed";
        $error = true;
    }else{
        $Client = test_input($_POST['Client']);
    }

    if (empty($_POST['LastName']) || !isset($_POST['LastName'])){
        $LastNameErr = "Last name is required";
        $error = true;
    }elseif(!preg_match("/^[A-Za-z0-9-]+$/",$_POST['LastName'])){
        // check if last name only contains letters and whitespace
        $LastNameErr = "Only letters and white space allowed";
        $error = true;
    }else{
        $LastName = test_input($_POST['LastName']);
    }

    if (empty($_POST['DateReceived']) || !isset($_POST['DateReceived'])){
        $DateReceivedErr = "Date received is required";
        $error = true;
    }elseif(!preg_match("/^\d{4}-\d{2}-\d{2}$/",$_POST['DateReceived'])){
        // check if data received only contains letters and whitespace
        $DateReceivedErr = "Date must be entered as YYYY/MM/DD";
        $error = true;
    }else{
        $DateReceived = test_input($_POST['DateReceived']);
    }

    if(!$error){
        $query = "INSERT INTO Projects (Project, Client, LastName, DateReceived) VALUES ('$Project', '$Client', '$LastName', '$DateReceived')";
        if($connection->query($query)){
            echo "record is successfully inserted!";
        }else{
            echo "error: record could not be inserted";
        }
    }
}

?>

<?php
    $connection->close();
?>
<form action="http://www.oldgamer60.com/Project/NewProject.php" method="post">

<div class="fieldset">
        <fieldset>

        Project: <input type="text" name="Project" value="<?php if(isset($Project)){ echo $Project; } ?>">
        <span class="error">* <?php if(isset($ProjectErr)){ echo $ProjectErr; } ?></span>
        <br><br>
        Client: <input type="text" name="Client" value="<?php if(isset($Client)){ echo $Client; } ?>">
        <span class="error">* <?php if(isset($ClientErr)){ echo $ClientErr; } ?></span>
        <br><br>
        LastName: <input type="text" name="LastName" value="<?php if(isset($LastName)){ echo $LastName; } ?>">
        <span class="error">* <?php if(isset($LastNameErr)){ echo $LastNameErr; } ?></span>
        <br><br>
        DateReceived: <input type="text" name="DateReceived" value="<?php if(isset($DateReceived)){ echo $DateReceived; } ?>">
        <span class="error">* <?php if(isset($DateReceivedErr)){ echo $DateReceivedErr; } ?></span>
        <br><br>
        <input type="submit" name="submit" value="Submit"> 
     </fieldset>
    </div>
    </form>

</div>
</div>
</body>
</html>
  • 写回答

1条回答 默认 最新

  • dongshandun4363 2015-12-03 03:36
    关注

    Use a variable a store the message and then display it wherever you need, like this:

    // your code
    
    if(isset($_POST['submit']) && !$connection->connect_error){
        // your code
    
        if(!$error){
            $query = "INSERT INTO Projects (Project, Client, LastName, DateReceived) VALUES ('$Project', '$Client', '$LastName', '$DateReceived')";
            if($connection->query($query)){
                $message = "record is successfully inserted!";
            }else{
                $message = "error: record could not be inserted";
            }
        }
    }
    
    ?>
    
    <?php
        $connection->close();
    ?>
    <form action="http://www.oldgamer60.com/Project/NewProject.php" method="post">
    
        <div class="fieldset">
            <fieldset>
                Project: <input type="text" name="Project" value="<?php if(isset($Project)){ echo $Project; } ?>">
                <span class="error">* <?php if(isset($ProjectErr)){ echo $ProjectErr; } ?></span>
                <br><br>
                Client: <input type="text" name="Client" value="<?php if(isset($Client)){ echo $Client; } ?>">
                <span class="error">* <?php if(isset($ClientErr)){ echo $ClientErr; } ?></span>
                <br><br>
                LastName: <input type="text" name="LastName" value="<?php if(isset($LastName)){ echo $LastName; } ?>">
                <span class="error">* <?php if(isset($LastNameErr)){ echo $LastNameErr; } ?></span>
                <br><br>
                DateReceived: <input type="text" name="DateReceived" value="<?php if(isset($DateReceived)){ echo $DateReceived; } ?>">
                <span class="error">* <?php if(isset($DateReceivedErr)){ echo $DateReceivedErr; } ?></span>
                <br><br>
                <input type="submit" name="submit" value="Submit"> 
            </fieldset>
        </div>
    </form>
    
        <?php
    
            if(isset($message)){ echo $message; }
    
        ?>
    
    // your code
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况