It seems dumb I know, but I've been having trouble getting value with linking href to the dynamic page we want to insert data to.
My mail goal is to insert data from MS SQL Server table into our website. I already inserted one part from a different table (dbo.Employees) but when working with dbo.TimeLogs, I get errors like Call to a member function fetch, etc.
Here's a screenshot of our site:
My codes work something like this:
viewlogs.php
<?php
session_start();
if (!isset($_SESSION['username']))
{
header('location: login.php');
die();
}
?>
<?php
require"config.php";
require"sqlsrv.php";
if (isset ($_POST['fname']) && (isset($_POST['lname']) && (isset($_POST['email']) && (isset($_POST['usn']) && (isset($_POST['schedule']) && (isset($_POST['year']) && (isset($_POST['strand']))))))))
{
$fname = $_POST['fname'];
$mname = $_POST['mname'];
$lname = $_POST['lname'];
$email = $_POST['email'];
$usn = $_POST['usn'];
$schedule = $_POST['schedule'];
$year = $_POST['year'];
$strand = $_POST['strand'];
}
$id=$_GET['id'];
$sql= 'SELECT * FROM students WHERE id= :id';
$stmt = $db-> prepare($sql);
$stmt->execute([':id' => $id ]);
$data= $stmt->fetch(PDO::FETCH_OBJ);
$err= "no records";
if (!isset ($_POST['DateHired']) && (!isset($_POST['ResignationDate']) && (!isset($_POST['EmployeeNo']) && (!isset($_POST['EmployeeID'])))))
{
echo "error";
}
else
{
$DateHired = $_POST['DateHired'];
$ResignationDate = $_POST['ResignationDate'];
$EmployeeNo = $_POST['EmployeeNo'];
$EmployeeID = $_POST['EmployeeID'];
}
$EmployeeNo = $_GET['EmployeeNo'];
$query= 'SELECT EmployeeID, EmployeeNo, FirstName, MiddleName, LastName, DateHired, ResignationDate FROM TA3.dbo.Employees WHERE EmployeeNo = :EmployeeNo';
$statement = $conn->prepare($query);/*
$statement->bindParam(1, $EmployeeNo);*/
$statement->execute([':EmployeeNo' => $EmployeeNo]);
$res=$statement->fetch(PDO::FETCH_OBJ);
if (!isset ($_POST['TimeLogID']) && (!isset($_POST['EmployeeID']) && (!isset($_POST['RecordDate']) && (!isset($_POST['RecordTime']) && (!isset($_POST['Type']) && (!isset($_POST['ActualTime'])))))))
{
echo "error";
}
else {
$TimeLogID = $_POST['TimeLogID'];
$EmployeeID = $_POST['EmployeeID'];
$RecordDate = $_POST['RecordDate'];
$RecordTime = $_POST['RecordTime'];
$Type = $_POST['Type'];
$ActualTime = $_POST['ActualTime'];
}
$q= 'SELECT EmployeeID, TimeLogID, RecordDate, RecordTime, Type, ActualTime FROM TA3.dbo.TimeLogs WHERE EmployeeID = :EmployeeID';
$st = $conn->prepare($q);
$st->execute();
$re=$st->fetch(PDO::FETCH_OBJ);
?>
<!DOCTYPE html>
<html>
<head>
<title>View Logs</title>
<link rel="icon" type="image/png" sizes="16x16" href="image/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="image/favicon-32x32.png">
<meta name= "viewport" content="width= device-width, initial-scale=1">
<script defer src="js/fontawesome-all.js"></script>
<link rel="stylesheet" type="text/css" href="css/style.css">
<link rel="stylesheet" type="text/css" href="css/viewlogs.css">
</head>
<body>
<div class="back"><a class="henny" href="students.php"><i class="fas fa-backward"></i> Back </a></div>
<div class="title"> <h1>Student Logs<span class="blink">_</span></h1></div>
<div class="grid">
<div class="student-info">
<label>First name</label>
<input value="<?= $data->fname; ?>" type="text" name="fname" readonly/>
<label>Middle name</label>
<input value="<?= $data->mname; ?>" type="text" name="mname" readonly/>
<label>Last name</label>
<input value="<?= $data->lname; ?>" type="text" name="lname" readonly/>
<label>USN</label>
<input value="<?= $data->usn; ?>" type="text" name="usn" readonly/>
<label>Strand</label>
<input value="<?= $data->strand; ?>" type="text" name="strand" readonly/>
<label>Schedule</label>
<input value="<?= $data->schedule; ?>" type="text" name="schedule" readonly/>
</div>
<div class="device-info">
<label>Enrolled since</label>
<input value="<?= date('Y-m-d', strtotime($res->DateHired)); ?>" type="text" name="enrolled" readonly/>
<label>Not Enrolled since</label>
<input value="<?= date('Y-m-d', strtotime($res->ResignationDate)); ?>" type="text" name="notenrolled" readonly/>
</div>
<div class="logs">
<table style="width:100%" class="logs-table">
<tr>
<th style="width:25%">Date</th>
<th style="width:25%">Time</th>
<th style="width:12%">In</th>
<th style="width:12%">Break in </th>
<th style="width:12%">Break out</th>
<th style="width:12%">Out</th>
</tr>
<?php
while ($outcome=$re->fetch(PDO::FETCH_OBJ)):
?>
<tr>
<td><?php echo $outcome['RecordDate']; ?></td>
<td><?php echo $outcome['RecordTime']; ?></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<?php
endwhile;
?>
</table>
</div>
</div>
<?php
$r = $db->prepare("SELECT * FROM students WHERE id LIKE :id");
$r->execute(array( ':id'=>'%'.$id. '%'));
if ($data=$r->fetch())
{
?>
<a class="print" target="_blank" href="print.php?id=<?= $data['id']; ?>"> Print <i class="fas fa-print"></i></a>
<?php
}
?>
</body>
</html>
its partner is called search.php where I have the href part. My problem was I'm not getting the EmployeeID part that's why I start over and removed EmployeeID on href.
search.php
<?php
session_start();
if (!isset($_SESSION['username']))
{
header('location: login.php');
die();
}
?>
<?php
try {
include ("config.php");
include ("sqlsrv.php");
}catch(Exception $e){
die("ERROR:".$e->getMessage());
}
if(isset($_POST['usn']) && $_POST['usn']!=""){
$re = $conn->prepare("SELECT EmployeeID, TimeLogID, EmployeeID, RecordDate, RecordTime, Type, ActualTime FROM TA3.dbo.TimeLogs");
$re->execute();
$res = $conn->prepare("SELECT EmployeeNo, FirstName, MiddleName, LastName, DateHired, ResignationDate FROM TA3.dbo.Employees");
$res->execute();
$req = $db->prepare("SELECT * FROM students WHERE usn LIKE :usn");
$req->execute(array(
'usn'=>'%'.$_POST['usn'].'%'));
if ($req->rowCount()==0 && $_SESSION['type']=="Super_Admin") { ?>
<span class="notfound">Student not found? <a class="addstud" href="create.php">add student?</a></span>
<?php
}
elseif ($req->rowCount()==0 && $_SESSION['type']=="Admin") { ?>
<span class="henhen">Student not found</span>
<?php
}
else{
while (($data=$req->fetch()) && ($outcome=$res->fetch()) && ($out=$re->fetch())){
if (($outcome['EmployeeNo'] = $data ['usn']) && ($outcome['EmployeeID'] = $out['EmployeeID'])):
?>
<div class="infohen">Info </div>
<div class="uy">
<div class="name"><?php echo $data['fname']." ".$data['mname']." ".$data['lname']; ?></div>
<div class="email"><?php echo $data['email']; ?></div>
<div class="usn"><?php echo $data['usn']; ?></div>
<div class="schedule"><?php echo $data['schedule']; ?></div>
<div class="strand"><?php echo $data['strand']; ?></div></div>
<?php if ($_SESSION['type']=="Super_Admin")
{ ?>
<div class="gridme">
<div class="action-list">
<div class="action">Action</div>
<div class="edit"> <a href="edit.php?id=<?= $data['id']; ?>">Edit</a></div>
<div class="logs"><a href="viewlogs.php?id=<?= $data['id']; ?>&EmployeeNo=<?= $outcome['EmployeeNo'];?>">Logs</a></div>
<?php } else { ?>
<div class="gridme">
<div class="action-list">
<div class="action">Action</div>
<div class="logs"><a href="viewlogs.php?id=<?= $data['id']; ?>&EmployeeNo=<?= $outcome['EmployeeNo'];?>">Logs</a></div>
<?php }
endif; ?>
</div>
</div>
</div>
</div>
<?php
}
}
}else { ?>
<span class="message">Enter USN!</span>
<?php
}
?>
And finally, here's a screenshot of our TA3 logs.