0

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:

enter image description here

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.

enter image description here

Your Common Sense
  • 156,878
  • 40
  • 214
  • 345

1 Answers1

0
 $q= 'SELECT EmployeeID, TimeLogID, RecordDate, RecordTime, Type, ActualTime FROM TA3.dbo.TimeLogs WHERE EmployeeID = :EmployeeID';
    $st = $conn->prepare($q);
    $st->execute();

You haven't bound a value to the :EmployeeID placeholder. So execute returns a false bool.

Simply add this in following the same method you have used for the other queries

Juakali92
  • 1,155
  • 8
  • 20