Search code examples
phpmysqliprepared-statementflash-message

How to display php error messages wherever I want on a html page?


By default a mysqli_error will display first thing on top of the page.

I'm trying to understand how I can echo errors wherever I want on a page.

signup.php

if(isset($_POST['register'])){


    $username = $db->real_escape_string(trim(strip_tags($_POST['username'])));
    $checkrow = mysqli_query($db, "SELECT * FROM users WHERE username='".$username."'");

    if(mysqli_num_rows($checkrow) > 0){


        echo '<divclass="alert alert-danger">Username already exists. Please choose a different one</div>';

    }else{
//do some
}}


<html>
<body>
<div class="error_message"> Display error message here instead </div>
<form> Please sign up</form>
</body>
</html>

Solution

  • Something like this:-

    <?php
    $error = '';//empty variable
    if(isset($_POST['register'])){
        $username = $db->real_escape_string(trim(strip_tags($_POST['username'])));
        $checkrow = mysqli_query($db, "SELECT * FROM users WHERE username='".$username."'");
    
        if(mysqli_num_rows($checkrow) > 0){
           $error = 'Username already exists. Please choose a different one'; // assign error
        }else{
          //do some
        }
    }
    ?>
    
    <html>
    <body>
    <?php if(!empty($error)){?>
        <div class="error_message"><?php echo $error; // echo errors?></div>
    <?php } ?>
    <form> Please sign up</form>
    </body>
    </html>
    

    Note:- try to read about prepared statements and use them to prevent from SQL Injection.Thanks