How to Load Data from Database into Custom Files (v2024)

Tips submitted by PHPMaker users
Post Reply
mobhar
User
Posts: 11841

How to Load Data from Database into Custom Files (v2024)

Post by mobhar »

This is the updated version for PHPMaker v2024, from similar topic for PHPMaker v2021: How to Load Data from Database into Custom Files (v2021).

Now we can also use Custom Files with Include common files DISABLED for PHPMaker v2024.

  1. Make sure you have already updated template to the latest version from Tools -> Update Template.

  2. Create a Custom File and name it as test.php, then copy and paste this code into Content section of the Custom File of demo2024 project of PHPMaker 2024 application:

<?php

namespace PHPMaker2024\demo2024;

use PHPMaker2024\demo2024\{UserProfile, Language, AdvancedSecurity, Timer, HttpErrorHandler, RouteAttributes};
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Container\ContainerInterface;
use DI\Container as Container;
use DI\ContainerBuilder;
use Selective\SameSiteCookie\SameSiteCookieConfiguration;
use Selective\SameSiteCookie\SameSiteCookieMiddleware;
use Selective\SameSiteCookie\SameSiteSessionMiddleware;
use Slim\Factory\AppFactory;
use Slim\Factory\ServerRequestCreatorFactory;
use Slim\Exception\HttpInternalServerErrorException;
use Middlewares\Whoops;
use Dflydev\DotAccessData\Data;

global $RELATIVE_PATH;

// Autoload
require_once "vendor/autoload.php";

// Require files
require_once "src/constants.php";
require_once "src/config.php";
require_once "src/phpfn.php";
$ConfigData = new Data($CONFIG); // Ensure that $ConfigData is accessible by Global Codes
require_once "src/userfn.php";

echo "<h3>Custom File without Include common files option</h3>";

$sql = "SELECT `Model` FROM `models`"; // define your SQL
$stmt = ExecuteQuery($sql); // execute the query
$value = ""; // initial value
if ($stmt->rowCount() > 0) { // check condition: if record count is greater than 0
while ($row = $stmt->fetch()) { // loop
$value .= $row["Model"] . "<br>"; // in case the result returns more than one record, display it and separated by line break
} // end loop
echo "Here is the Models list: <br>" . $value; // display the result
} else { // if there are no result
echo "No record found."; // display the message
} // end of check condition


?>
  1. Re-generate ALL the script files, as usual.

  2. Visit the Custom File from browser: http://localhost/demo2024/test.php

The Limitation: The styles, header, footer, sidebar won't be implemented in this Custom File.

This trick is useful if you want to optimize the built-in functions regardless of the appearance / layout of your web application.


mansour
User
Posts: 315

Post by mansour »

Hi,
First, let me thank you for your great work.
I used your suggested code for 2024 and I have a problem. I can't call and use php classes that I placed in global code section of my project (userfn.php).
e.g.

<?php
namespace PHPMaker2024\TH;
use PHPMaker2024\TH\{UserProfile, Language, AdvancedSecurity, Timer, HttpErrorHandler, RouteAttributes};
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Psr\Container\ContainerInterface;
use DI\Container as Container;
use DI\ContainerBuilder;
use Selective\SameSiteCookie\SameSiteCookieConfiguration;
use Selective\SameSiteCookie\SameSiteCookieMiddleware;
use Selective\SameSiteCookie\SameSiteSessionMiddleware;
use Slim\Factory\AppFactory;
use Slim\Factory\ServerRequestCreatorFactory;
use Slim\Exception\HttpInternalServerErrorException;
use Middlewares\Whoops;
use Dflydev\DotAccessData\Data;
global $RELATIVE_PATH;
// Autoload
require_once "vendor/autoload.php";
// Require files
require_once "src/constants.php";
require_once "src/config.php";
require_once "src/phpfn.php";
$ConfigData = new Data($CONFIG); // Ensure that $ConfigData is accessible by Global Codes
require_once "src/userfn.php";
	$a = new Tamin; // call the class
	$a->printHelloWord(); // print Hello Word
?>

Thanks


mobhar
User
Posts: 11841

Post by mobhar »

Try to change this part:
$a = new Tamin; // call the class

to:
$a = new \Tamin; // call the class

then try again.


mansour
User
Posts: 315

Post by mansour »

Thank you, solved.
Another Question:
how to Ensure that $ConfigData is accessible by Global Codes? is any configuration option for this case?
Thanks


mobhar
User
Posts: 11841

Post by mobhar »

No. You just call the setting that related to that $ConfigData.

For example, you want to display the environment setting that related to that config data, simply put this following code:

$environment = $ConfigData["ENVIRONMENT"];

After that, you may just echo that $environment variable to display the value.


vintoICT
User
Posts: 429

Post by vintoICT »

can this work with custom from ?


mobhar
User
Posts: 11841

Post by mobhar »

What did you mean by custom form? Please explain it in more detail, an example would be good to comprehend your situation.


Post Reply