Jump to content

Recommended Posts

Hi

I try to build a login form in which the user enter its userid, and the system check in the database for the user name and present it

There are several other fiels that should act the same way. the problem is that the description field not get the user name.

I be glad if someone show me where is the problem

here is the code i use:

The index.php page

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->

<?php
    require_once(".Includes/GlDbOra.php");
    $logonSuccess = false;

    //get user details
   if (isset($_POST['userid_typed']))
   {
           $row = (DBOracle::getInstance()->get_user_details1($_POST['userid']));
        if(!$row) 
        {
            echo "The user code entered in invalid";
        }
        else
        {
            ?>
                <input type="text" name="userid_desc" id="user_desc" class="regular_textbox" value=<?php echo $row('username'); ?> readonly="readonly" disabled="disabled" />
            <?php
        }
    }
?>

<html>
    <head>
        <meta charset="UTF-8">
        <title>Login</title>
        <script type="text/javascript" src="../../php-ajax/jquery-3.5.1.js"></script>
        <link href="index.css" type="text/css" rel="stylesheet" madia="all"/>
    </head>
    <body>
        <div class="logon">
            <form name="logon" id="logon" action="index.php" method="POST" >
                <span style="clear: both; float: left; margin-top: 20px; ">
                    <label for="userid">User Id</label>
                    <input type="text" name="userid" id="userid" class="left_radius_textbox" placeholder="<?php echo userid;?>"/>
                     <input type="text" name="userid_desc" id="user_desc" class="regular_textbox" value="" readonly="readonly" disabled="disabled" />
                    <label for="password">Password</label>                    
                    <input type="password" name="password" id="password" class="regular_textbox" placeholder="<?php echo password;?>"/>
                </span>
                <span style="clear: both; float: left; margin-top: 20px">
                    <label for="compid">Company</label>                    
                    <input type="text" name="compid" id="compid" class="left_radius_textbox" placeholder="<?php echo compid;?>"/>
                    <input type="text" name="compid_desc" id="compid_desc" class="regular_textbox" value="" readonly="readonly" disabled="disabled" />
                    <label for="language">Language</label>                    
                    <input type="text" name="language" id="language" class="left_radius_textbox" placeholder="<?php echo language;?>"/>
                    <input type="text" name="language_desc" id="language_desc" class="regular_textbox" value="" readonly="readonly" disabled="disabled" />
                </span>
                <span style="clear: both; float: right; margin-top: 20px">
                    <input type="submit" value="Login"style="margin-right: 500px; border-radius: 40px ; text-align:center;width: 220px; height: 30px;" class="" placeholder="<?php echo login;?>"/>
                </span>                    
            </form>
        </div>
        <script>
            $(document).ready() 
            {
                $("#userid").focusout()
                {
                    var userid=$('input[name=userid]').val();
                    $.ajax
                    ({
                        type:"POST",
                        url:"../AmiDorGL/Includes/GlDbOra.php",
                        data:
                        {
                            "userid_typed":1,
                            "userid":userid,
                        },
                        datatype:"text",
                        success:function(response) 
                        {
                          $("#userid_desc").html(response);
                        }
                    });
                };  
            };
        </script>
    </body>
</html>

the GlDbOra.php code:

<?php
/* 
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

class DBOracle {
    private static $instance = null;
    private $OracleUser="xxx";
    private $OraclePwd="xxx";
    private $OracleDB="xxx";

    public static function getInstance() {
   if (!self::$instance instanceof self) {
     self::$instance = new self;
   }
   return self::$instance;
 }
    // The clone and wakeup methods prevents external instantiation of copies of the Singleton class,
    // thus eliminating the possibility of duplicate objects.
    public function __clone() {
        trigger_error('Clone is not allowed.', E_USER_ERROR);
    }
    
    public function __wakeup() {
        trigger_error('Deserializing is not allowed.', E_USER_ERROR);
    }
    
    public function __construct () {
    $this->con = oci_connect($this->OracleUser, $this->OraclePwd, $this->OracleDB);
    if (!$this->con) {
        $m = oci_error();
        echo $m['message'], "\n";
        exit;
    }
}
public function get_user_details1($userid) 
{
    $query = "select first_name||' '||last_name username, password from users where userid = :userid_bv";
    $stid = oci_parse($this->con, $query);
    oci_bind_by_name($stid, ':userid_bv', $userid);
    oci_execute($stid);
    $row = oci_fetch_array($stid, OCI_ASSOC);
    return $row;
 }
}


 

 

Edited by requinix
please use the Code <> button when posting code

Modify your AJAX so that it can handle an error response - perhaps by console.log-ing the response - then see if you get an error message from PHP showing where the problem is.

(Spoiler: there is an error from PHP)

Thank for reply requinix, but  the console.log doesnt show errors. only 1 suggestion to add autocomplete to the texbox....

this is the code i added:

,

error: function(response)
                        {
                            console.log(response.responseText);
                        }

im new to php and i might be doing something wrong

Try using your browser's developer console to watch the AJAX request itself. Pull it up, go to the network or whatever area, then type in the box and click away, and you should see the request go to the server and the response come back. Then take a look at it.

ok, i've found out that the code didnt send the userid to the function (and some few typos on the way too)

but still after i enter userid code and press TAB the description is not filled. 

my idea is that the php function is not called at all. If I remove the if (isset($_POST['userid_typed'])) condition, when page is loaded the message The user code entered in invalid apears (and it understood cause no userid data enterd and the DB return no row). but after when i leave the userid textbox empty and press TAB it not show this message again.

Maybe I miss something the way PHP work, and i might use the wrong event to catch TAB key pressed.

Ill be happy for some advise

here is my updated index.php code:

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->

<?php
    require_once("Includes/GlDbOra.php");
    $logonSuccess = false;

    //get user details
    if (isset($_POST['userid_typed']))
    {
        $userid=$_POST['userid'];
        $username = (DBOracle::getInstance()->get_user_details1($userid));
        if(!$row) 
        {
            echo "The user code entered in invalid";
        }
        else
        {
            ?>
                <input type="text" name="userid_desc" id="userid_desc" class="regular_textbox" value="<?php echo $row['username']; ?>" disabled="disabled" />
            <?php
        }
    }
 ?>

<html>
    <head>
        <meta charset="UTF-8">
        <title>Login</title>
        <script type="text/javascript" src="../../php-ajax/jquery-3.5.1.js"></script>
        <link href="index.css" type="text/css" rel="stylesheet" madia="all"/>
    </head>
    <body>
        <div class="logo_image"> 
            <span style="clear: both; float: right; margin-top: 20px; margin-right: 840px;">
                <img class="img" src="Images/back_white.jpg" alt="header" width="400" height="150"/>
            </span>
        </div>
        <div class="open_image"> 
            <img class="img" src="Images/AmiDor_Open.png" alt="image" width="400" height="300"/>
        </div>
        <div class="logon">
            <form name="logon" id="logon" action="index.php" method="POST" >
                <span style="clear: both; float: left; margin-top: 20px; ">
                    <label for="userid">User Id</label>
                    <input type="text" name="userid" id="userid" class="regular_textbox" placeholder="<?php echo userid;?>"/>
                     <input type="text" name="userid_desc" id="userid_desc" class="regular_textbox" value="" disabled="disabled" />
                    <label for="password">Password</label>                    
                    <input type="password" name="password" id="password" class="regular_textbox" placeholder="<?php echo password;?>"/>
                </span>
                <span style="clear: both; float: left; margin-top: 20px">
                    <label for="compid">Company</label>                    
                    <input type="text" name="compid" id="compid" class="regular_textbox" placeholder="<?php echo compid;?>"/>
                    <input type="text" name="compid_desc" id="compid_desc" class="regular_textbox" value="" readonly="readonly" disabled="disabled" />
                    <label for="language">Language</label>                    
                    <input type="text" name="language" id="language" class="regular_textbox" placeholder="<?php echo language;?>"/>
                    <input type="text" name="language_desc" id="language_desc" class="regular_textbox" value="" readonly="readonly" disabled="disabled" />
                </span>
                <span style="clear: both; float: right; margin-top: 20px">
                    <input type="submit" value="Login" id="login" style="margin-right: 500px; border-radius: 40px ; text-align:center;width: 220px; height: 30px;" class="" placeholder="<?php echo login;?>"/>
                </span>                    
            </form>
        </div>
        <script>
            $(document).ready(function()
            {
                $('#userid').focusout(function()
                {
                    //var userid=document.getElementById('#userid').value;
                    var userid=$('input[name=userid]').val();
                    $.ajax
                    ({
                        type:"POST",
                        url:"GlDbOra.php",
                        data:
                        {
                            "userid_typed": 1,
                            "userid": userid,
                        },
                        datatype:"text",
                        success:function(response) 
                        {
                            console.log(response);
                            $("#userid_desc").html(response);
                        },
                        error: function(response)
                        {
                            console.log(response.responseText+errortext);
                        }
                    });
                });  
            });
        </script>
    </body>
</html>

 

Edited by requinix

Please use the Code <> button when posting code. I fixed your first post earlier and your second post just now. And for the love of everything that's holy, if you're not using a license header then don't use a license header.

 

        $username = (DBOracle::getInstance()->get_user_details1($userid));
        if(!$row) 

Look at those two lines. Read them to yourself out loud. If you can't see the issue, step away from the computer for a while, make a sandwich or play some games, then come back and check again.

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.