What's new

Closed Undefined array key

Status
Not open for further replies.

ribbit

Eternal Poster
Joined
Jan 3, 2020
Posts
578
Reaction
172
Points
417
Good day mga ka programmers !!!

bali nasa part na po ako nang reservation kaso i encounter this error na Warning: Undefined array key....

nag tatary po kasi ako na kunin yung mga data sa kabilang table and i mange to get the username(usern) pero yung first name at last name diko po makuha...


eto po mga errors ko:

Warning: Undefined array key "f_name" in C:\xampp\htdocs\obs\reservation.php on line 30

Warning: Undefined array key "l_name" in C:\xampp\htdocs\obs\reservation.php on line 31


eto po yung code ko sa reservation (reservation.php).
Code:
<?php
session_start();
require('connection.php');

?>
<!DOCTYPE html>
<html>
<link type="text/css" rel="stylesheet" href="ccs/index.css" />
<head>
<body bgcolor="lightgray">
<meta charset="utf-8">
    <title>OBS Reservation</title>
    <link type="text/css" rel="stylesheet" href="" />
    <link type="text/css" rel="stylesheet" href="" />
</head>
<body>

<?php date_default_timezone_set('Asia/Manila');


?>
<?php


// If form submitted, insert values into the database.
if (isset($_REQUEST['Reservation_Date'])){
 $Date_And_Time_Created = date("y-m-d h:i:s");
 
 $usern = $_SESSION['usern'];
 $f_name = $_SESSION['f_name'];
 $l_name = $_SESSION['l_name'];

 $Reservation_Date = stripslashes($_REQUEST['Reservation_Date']);
 //escapes special characters in a string
 $Reservation_Date = mysqli_real_escape_string($con,$Reservation_Date);
 $Service = stripslashes($_REQUEST['Service']);
 $Service = mysqli_real_escape_string($con,$Service);
 
$query = "INSERT INTO `reservation_log` (usern,f_name,l_name,Reservation_Date, Service,Date_And_Time_Created) VALUES ('$usern','$f_name','$l_name','$Reservation_Date','$Service','$Date_And_Time_Created')";
$result = mysqli_query($con,$query);
        if($result){
            echo "<div class='form'>
<h3>You Booked an apointment .</h3>
<br/>Click here to <a href='index.php'>go back.</a></div>";
        }else {
            echo "test: " . $query;
        }
    }else{
?>
<form action="#" style="border:0px solid #0000">
  <div class="wrap">
 <nav>
  <div class="logo"><img src="img/logo.png" height="120" width="120"></div>
   <ul>
    <li><a href="index.php">HOME</a></li>
    <li><a href="reservation.php">BOOK AN APPOINTMENT</a></li>
    <li><a href="logout.php">Log Out</a></li>
 
</div>


    <div id="booking" class="section">
        <div class="section-center">
            <div class="container">
                <div class="row">
                    <div class="booking-form">
                        <div class="form-header">
                            <h1>Make your reservation</h1>
                        </div>
                        <form>
                            <div class="row">
                            <center>
                                <div class="col-md-6">
                                    <div class="form-group">
                                        <input class="form-control" type="date" name="Reservation_Date" placeholder="Date" required />
                                        <span class="form-label">Date</span>
                                    </div>
                                </div>
                            </div>
                            <div class="row">
                            <center>
                                <div class="col-md-4">
                                    <div class="form-group">
                                        <select class="form-control" name="Service" id="Service">
                                            <option disabled selected>Services</option>
                                            <option value="Cedula">Cedula</option>
                                            <option value="Barangay Clearance">Barangay Clearance</option>
                                            <option value="Barangay I.D.">Barangay I.D.</option>
                                            <option value="Barangay Permit">Barangay Permit</option>
                                            <option value="Barangay Certificate">Barangay Certificate</option>
                                            <option value="Barangay Business Permit">Barangay Business Permit</option>
                                        </select>
                                    </div>
                                </div>
                                </center>
                            </div>
                            <div class="form-btn">
                            <center>
                                <a class="button" href="index.php">Cancel</a>
                                <button type="submit" class="button">Book</button>
                            </center>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</form>
<?php } ?>
</body>
</html>

P.S. salamat po sa mga nag tuturo sa akin at specially kay vhin le maraming salamat po master

reservation_log.png users.png
 

Attachments

Ung value ng $l_name at $f_name mo galing sa $_SESSION.
Wlang lman ung $_SESSION['l_name '] at $_SESSION['f_name '] mo.

try mo muna var_dump session para makita mo lahat ng data sa session.
 
ribbit ibig sabhin di na set yung data ng l_name at f_name sa session bago mo tawagin. Saang page mo ba sini-set sa session ung mga variable na ito:
$_SESSION['usern']
$_SESSION['f_name']
$_SESSION['l_name']

wala sa page ng reservation.php na pinakita mo, ang meron lang ay yung part na pinapasa mo na sa ibang variable like $usern, $f_name , at $l_name.

$usern = $_SESSION['usern'];
$f_name = $_SESSION['f_name'];
$l_name = $_SESSION['l_name'];

I think sa ibang page ang pag set mo sa session kasi wala sa current form request na pinakita mo.
 
ribbit ibig sabhin di na set yung data ng l_name at f_name sa session bago mo tawagin. Saang page mo ba sini-set sa session ung mga variable na ito:
$_SESSION['usern']
$_SESSION['f_name']
$_SESSION['l_name']

wala sa page ng reservation.php na pinakita mo, ang meron lang ay yung part na pinapasa mo na sa ibang variable like $usern, $f_name , at $l_name.

$usern = $_SESSION['usern'];
$f_name = $_SESSION['f_name'];
$l_name = $_SESSION['l_name'];

I think sa ibang page ang pag set mo sa session kasi wala sa current form request na pinakita mo.
wala pa po ako iset, sa log in page puba dapat i set yung session nang f_name at l_name

eto pala code ko sa log in
Code:
<?php
/* include('auth.php'); */
require('connection.php');

/* if(!$_SESSION['obs'])
{
    header('Location: login.php');
} */
  
if(isset($_POST['submit'])){
    $usern=$_POST['usern'];
    $passw=$_POST['passw'];
    $query="SELECT * FROM users WHERE usern='$usern' AND passw='$passw' AND verify_status=1 ";
    $result=mysqli_query($con,$query);
    $row=mysqli_fetch_array($result);
    
    
    
    if(mysqli_num_rows($result)>0)
    { 
        session_start();
        $_SESSION['obs']='true';
        $user_type=strtoupper($row['user_type']);
        switch($user_type)
        {
            case 'ADMIN':
            /* header("Location: admin.html"); */
            echo $user_type ;
            break;
            default:
            header("Location: index.php");
            /* echo $user_type ; */
        }
        $_SESSION["usern"] = $usern;
    }
    else
    {
        echo "wala pa sa database";
    }
}
else
{
//walang laman
}
?>

dito pala sir sa code.php

Code:
<?php
require('connection.php');
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
//Load Composer's autoloader
require 'vendor/autoload.php';
function sendemail_verify($fname,$email,$verify_token)
{
    $mail = new PHPMailer(true);
    
    //Server settings
    //$mail->SMTPDebug = 2;                      //Enable verbose debug output
    $mail->isSMTP();                                            //Send using SMTP
    $mail->Host       = 'smtp.gmail.com';                     //Set the SMTP server to send through
    $mail->SMTPAuth   = true;                                   //Enable SMTP authentication
    $mail->Username   = 'fv091120@gmail.com';                     //SMTP username
    $mail->Password   = 'fatima123$';                               //SMTP password
    $mail->SMTPSecure = "tls";            //Enable implicit TLS encryption
    $mail->Port       = 587;                                    //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
    
                 
    
    $mail->setFrom("fv091120@gmail.com", $fname);
    $mail->addAddress($email);
    $mail->isHTML(true);
    $mail->Subject = "Here is the subject";
    $emial_template = "<a href='http://localhost/email_ver/verify_email.php?token=$verify_token'>Click Here</a>";
    $mail->Body    =  $emial_template;
    $mail->send();
    //echo 'Message has been sent';
}
if(isset($_POST['register_btn']))
{
    $f_name = $_POST['fname'];
    $l_name = $_POST['lname'];
    $addr = $_POST['addr'];
    $user_type = 'User';
    $pnum = $_POST['pnum'];
    $email = $_POST['email'];
    $usern = $_POST['username'];
    $passw = $_POST['password'];
    $verify_token = md5(rand());
    
    //email exist
    $cheack_email_query = "SELECT email FROM users WHERE email='$email' LIMIT 1";
    $cheack_email_query_run = mysqli_query($con,$cheack_email_query);
    if(mysqli_num_rows($cheack_email_query_run) > 0)
    {
        $_SESSION["status"] = "E-mail already exist.";    
        header("Location: register.php");
    }
    else
    {
        $query = "INSERT INTO users (user_type,usern,passw,f_name,l_name,pnum,addr,email,verify_token) VALUES ('$user_type','$usern','$passw','$f_name','$l_name','$pnum','$addr','$email','$verify_token')";
        $query_run = mysqli_query($con,$query);
        if($query_run)
        {
            sendemail_verify("$f_name","$email","$verify_token");
            $_SESSION["status"] = "Plaease Cheack your Email for verifacation";    
            header("Location: register.php");
        }
        else
        {
            $_SESSION["status"] = "hind pasok";    
            header("Location: register.php");  
        }
    } 
}
?>
 
Last edited:
Base sa logic ng program mo ganito ang flow:

Register -> Send email Verification -> Log in -> Check verfified user credentials -> Get Reservation Details -> Update Reservation_log table.

Best approach, session variables like active/current user information should be set after successful login.

Sa login script mo ilagay ung code parang ganito, see updated line 24 and 25.
PHP:
<?php
/* include('auth.php'); */
require('connection.php');

/* if(!$_SESSION['obs'])
{
    header('Location: login.php');
} */
 
if(isset($_POST['submit'])){
    $usern=$_POST['usern'];
    $passw=$_POST['passw'];
    $query="SELECT * FROM users WHERE usern='$usern' AND passw='$passw' AND verify_status=1 ";
    $result=mysqli_query($con,$query);
    $row=mysqli_fetch_array($result);
   
   
   
    if(mysqli_num_rows($result)>0)
    {
        session_start();
        $_SESSION['obs']='true';
        $user_type=strtoupper($row['user_type']);
        $_SESSION['f_name'] = $row['f_name'];
        $_SESSION['l_name'] = $row['l_name'];
        switch($user_type)
        {
            case 'ADMIN':
            /* header("Location: admin.html"); */
            echo $user_type ;
            break;
            default:
            header("Location: index.php");
            /* echo $user_type ; */
        }
        $_SESSION["usern"] = $usern;
    }
    else
    {
        echo "wala pa sa database";
    }
}
else
{
//walang laman
}
?>
 
galito nalang po ginawa ko kagabi, nag lagay nalang po ako nang pag lalagyan nang f name and l name kung para kanino yung service

PHP:
<?php
session_start();
require('connection.php');

?>
<!DOCTYPE html>
<html>

<head>

<body bgcolor="lightgray">
    <meta charset="utf-8">
    <title>OBS Reservation</title>
    <link type="text/css" rel="stylesheet" href="ccs/index.css" />
    </head>
    </head>

    <body>

        <?php date_default_timezone_set('Asia/Manila');


        ?>
        <?php


        // If form submitted, insert values into the database.
        if (isset($_REQUEST['Reservation_Date'])) {
            $Date_And_Time_Created = date("y-m-d h:i:s");
            $usern = $_SESSION['usern'];
            $f_name = stripslashes($_REQUEST['f_name']);
            $f_name = mysqli_real_escape_string($con, $f_name);
            $l_name = stripslashes($_REQUEST['l_name']);
            $l_name = mysqli_real_escape_string($con, $l_name);
            $Reservation_Date = stripslashes($_REQUEST['Reservation_Date']);
            $Reservation_Date = mysqli_real_escape_string($con, $Reservation_Date);
            $Service = stripslashes($_REQUEST['Service']);
            $Service = mysqli_real_escape_string($con, $Service);

            $query = "INSERT INTO `reservation_log` (usern,f_name,l_name,Reservation_Date, Service,Date_And_Time_Created)
            VALUES ('$usern','$f_name','$l_name','$Reservation_Date','$Service','$Date_And_Time_Created')";
            $result = mysqli_query($con, $query);
            if ($result) {
                /* echo var_dump($f_name, $l_name) . "<br>"; */
                /* echo var_dump($usern)."<br>"; */
                echo "<div class='form'>
            
<h3>You Booked an apointment .</h3>
<br/>Click here to <a href='index.php'>go back.</a></div>";
            } else {
                echo "test: " . $query;
            }
        } else {
        ?>
            <form action="#" style="border:0px solid #0000">
                <div class="wrap">
                    <nav>
                        <div class="logo"><img src="img/logo.png" height="120" width="120"></div>
                        <ul>
                            <li><a href="index.php">HOME</a></li>
                            <li><a href="reservation.php">BOOK AN APPOINTMENT</a></li>
                            <li><a href="logout.php">Log Out</a></li>

                </div>


                <fieldset>
                    <legend>Appointment Information</legend>
                    <div class="item">
                        <label for="fname"> First Name<span>*</span></label>
                        <input id="fname" type="text" name="f_name" required />
                    </div>
                    <div class="item">
                        <label for="lname"> Last Name<span>*</span></label>
                        <input id="lname" type="text" name="l_name" required />
                    </div>
                    <div class="item">
                        <label for="date">Date<span>*</span></label>
                        <input id="date" type="date" name="Reservation_Date" required />
                        <i class="fas fa-calendar-alt"></i>
                    </div>
                    <div class="form-group">
                        <select class="form-control" name="Service" id="Service" required>
                            <option disabled selected>Services</option>
                            <option value="Cedula">Cedula</option>
                            <option value="Barangay Clearance">Barangay Clearance</option>
                            <option value="Barangay I.D.">Barangay I.D.</option>
                            <option value="Barangay Permit">Barangay Permit</option>
                            <option value="Barangay Certificate">Barangay Certificate</option>
                            <option value="Barangay Business Permit">Barangay Business Permit</option>
                        </select>
                    </div>
                </fieldset>
                <div class="btn-block">
                    <button type="submit">Submit</button>
                </div>
            </form>
        <?php } ?>
    </body>

</html>

salamat po sir sa pag tulong ❤️
 
Status
Not open for further replies.

Similar threads

Back
Top