B12 PHP FW: Manage database records with a PDO CRUD interface

Recommend this page to a friend!
  Info   View files View files (1550)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings
2020-09-26 (4 days ago) RSS 2.0 feedNot yet rated by the usersTotal: 80 This week: 15All time: 9,600 This week: 16Up
Version License PHP version Categories
fwphp 6.0MIT/X Consortium ...7HTML, PHP 5, Databases
Description Author

This class can manage database records with a CRUD interface.

It provides classes that can connect to a database using PDO and perform queries to create, retrieve, update and delete records of a given table.

The package can display the Web interface to let users perform these operations with the possibility to customize the actions that access interface with application customization code.

Picture of Slavko Srakocic
  Performance   Level  
Name: Slavko Srakocic <contact>
Classes: 1 package by
Country: Croatia Croatia
Age: ???
All time rank: 43219 in Croatia Croatia
Week rank: 20 Up1 in Croatia Croatia Up

Details
---
<a name="top"></a>
**Top**.....[1\.4 Dirs](#directories).....[1\.3 UML](#uml).....[1\.5 DM](#dm).....[2\. IDE](#ide).....[3\. CRUD](#crud).....[SW fw](#swfw)   
CRUD module example code 7 scripts:  
[Simplest CRUD](#SimplestCRUD).....[index.php](#scrudIndex).....[Home_ctr](#scrudHome_ctr).....[home (table page)](#scrudHomeV).....[create](#scrudC).....[read (user profile - form)](#scrudR).....[update](#scrudU)....[adapter](#scrudadapter)   
# 1. My PHP menu & CRUD code skeleton (I named it B12phpfw)


-----



**Developed** on home PC on (newest) Windows 10 64 bit with Laragon (was XAMPP),  Apache web server.  **Tested** also on Windows Oracle Virtual box Oracle Linux virtual machine  (Apache web server)  and on Linux demo sites. B12phpfw is **result of 20 years learning PHP**. 
## 1\.1 Demo sites - free hosting with free Mysql
See [Code (signals) flow and data flow ](http://phporacle.eu5.net/fwphp/glomodul/blog/?i/read_post/id/54) or [here](http://phporacle.heliohost.org/fwphp/glomodul/blog/?i/read_post/id/54)
1. On Linux : http://phporacle.eu5.net/ (freehostingeu - fast, stable, has free MySQL) - here are newest programs (may be more problems than heliohost). Also PHP on Linux is a bit different than on Windows.
2. or On Linux :  http://phporacle.heliohost.org/ (heliohost - slow, stable, has free MySQL)
3. My blog :  http://phporacle.altervista.org
    and  http://phporacle.altervista.org/fwphp/www/ - tech core of Mondadori digital magazine (leading publishing company in Italy) plans to offer free MySQL. 
4. My fwphp site (may be more : fwphp2, 3...) : http://SSPC2:8083/
    
## 1\.2 Download and unzip code from my Github repo
1. **https://github.com/slavkoss/fwphp** - PHP code here is good for (more) large sites
2. In webserver doc root - my is J:\xampp\htdocs  or virtual host  J:\awww\www
3. Unpack fwphp-master.zip (with many adds < 3 MB) : 3 subfolders : **fwphp,  vendor (from 00_vendor.zip file) and zinc**      
    and in phpmyadmin import J:\awww\www\01_DDL_mysql_blog.sql in database z_blogcms (or in Oracle db 01_DDL_oracle_blog.sql).       

After that to understand how B12phpfw CRUD framework works (eg $db = new Home_ctr($pp1) ; //Home\_ ctr (or App) class "inherits" index.php ee "inherits" $ p p 1), you should learn/try two modules like Oracle FORMS forms .fmb :     
1. J:\awww\www\fwphp\glomodul\z_examples\01_php_bootstrap\flexmoj\FLEX_minisite2017          
    http://dev1:8083/fwphp/glomodul/z_examples/01_php_bootstrap/flexmoj/FLEX_minisite2017        
    This module shows basic site module code idea (I think best site pages navigation - B12phpfw is needed only for CRUD !).      
    It is very easy to learn and pages are very fast. It is easy to use Bootstrap 4 instead FLEX but pages are slower (good exercize).
2. J:\awww\www\fwphp\glomodul\z_examples\php_patterns\singleton_B12phpfw.php           
    http://dev1:8083/fwphp/glomodul/z_examples/php_patterns/singleton_B12phpfw.php?i/read_post/      
    This module shows basic CRUD code idea in B12phpfw, ee how to use B12phpfw code for CRUD.      
    In 2 scripts: singleton_B12phpfw.php and Home_ctr.php is everything important but is not easy to learn (same as any framework).  
    
    http://dev1:8083/fwphp/glomodul/z_examples/02_mvc/xuding_glob/index.php is simplest table rows [CRUD module](#SimplestCRUD) .



## 1\.3 Project notable goals  - reasons
Notable package does something special, is also frequently innovative. 
1. In my free time (my work for last 20 years was :  Oracle Forms 6i and Crystal reports. We wanted migrate them to PHP - never happend because **I cound not find near so good** tool as abandoned Oracle Forms 6i - shame.  See also below "...compared to all PHP frameworks...".
   https://github.com/panique/mini3 is good but to small OOP PHP. CMS blog Video (7.7 GB) Jazeb Akram : Udemy is good but older programming style.
2. Develop **large sites** (more of them under web server root dir. path), PHP PDO CRUD (Create, Read, Upd, Del eg "users" table rows) in **any DB**.
3. ***Innovative*** is : **Each module in own folder like Oracle Forms 6i form, Blazor and APEX pages**, no M, V, C folders.
4. **Not to simple code : easy to understand,  small, reusable, namespaces for autoloading classes scripts, routing (URL parts) - dispatching (call or include), own debugging (Xdebug is not enough)...** compared to all PHP frameworks and learning sources.
5. Present best PHP learning code I could find. See [web server root dir. path]fwphp/glomodul/z_examples ee fwphp site dir -> glomodul dir (group of module- subgroups), z_examples dir (subgroup of modules)   
    https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/z_examples - to do make them best possible.

Conclusion after 20 years is : B12phpfw is most useful for CRUD in msg-blog and simmilar modules, so it is **precisely B12phpCRUDfw**. For mnu and mkd markdown WYSIWYG editor and simmilar modules we **most probably do not nead B12phpfw** code skeleton, see their code, is simmilar to B12phpfw - few important **adresses tricks** (see them below on op.system and on web), **includes instead http// jump to pages** (this is interesting question).

## 1\.4 To do
Everything important is visible in current version 6.0 code. Some details are** to do** in version 6.1. (They are not needed for learning and own (more) sites developing based on  B12phpfw and many examples in group of modules in learning folder [WEBSERVER_ROOTPATH]\\fwphp\glomodul\\z_examples.)

1.  2020.09.05 **DONE** On Linux demo sites : some PHP statement works different than on Windows (about dozen incompatibilities), eg links do not work in msg module, but work in mnu and mkd modules)  :   DONE in wsroot_path\zinc\Config_allsites.php :  
   Error on Linux not on Windows : $REQUEST_URI = filter_input(INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_STRING);  
   No error on both OS : $REQUEST_URI = filter_var($_SERVER['REQUEST_URI'], FILTER_SANITIZE_URL) ;  
   
2. Difficult parts are not many : 
   1. PDO CRUD more DBI MySQL, Oracle... - any DB with DB adapter code. I have only basic code - working - should be improved.  

   2. Same for tables : sorting, cols filtering, rows filtering.  
        Grid with updatable fields, I think, is not needed.  

3. Details like data formats (page fieds should be all characters like in Oracle APEX), computations... are easy to find in other learning sources.  

4. No charts - see other learning sources.  

5. More security.

6.  2020.09.30 **DONE version 7.0.0 (declare(strict_types=1);)**. DBI improved : **trait Db_allsites** instead class Db_allsites. Each DB (persistent storage) adapter **class Tbl_crud :**
   1. use B12phpfw\core\zinc\Db_allsites
   2. implements Interf_Tbl_crud

   This means that :
   1. each module's (views or ctrs), eg blog module, see blog folder, work much easier with more Tbl_crud, ee with own Tbl_crud and with other tables Tbl_crud's.
   2. class Home_ctr extends class Config_allsites, no more also two DB CRUD classes which is unnatural (but seems easy because **logically all is in Home_ctr**).

## 1\.5 Adresses on op.system and on web are difficult to understand
and bad explained in all PHP frameworks and learning sources.

1. My **developing** web server root dir. path:  wsroot_path = **J:\\awww\\www** . wsroot_url = http://dev1:8083 (dev1 is Apache vitual host).  
   For **testing**  wsroot_path = **J:\\xampp\\htdocs** , wsroot_url =  http://localhost:8083 .
   For **production** are Linux demo sites, see below.  

2. For mnu module **module_url** = http://dev1:8083/fwphp/www/ so module_towsroot = '../../' - I do not use it for mnu and mkd. 
   **$module_towsroot** variable in index.php is** always same value for both variables wsroot_path and wsroot_url**.
   For msg module in index.php : ** $module_towsroot = '../../../' ;** because module_path = J:\awww\www\fwphp\glomodul\blog and three times "../" means **path from blog dir to www dir ee to wsroot_path = 3 times up**.  So module_url = http://dev1:8083/fwphp/glomodul\blog  and 3 times up is http://dev1:8083 = wsroot_url.


IIS wsroot_path = %SystemDrive%\\inetpub\\wwwroot = http://localhost, see Win icon -> IIS manager. For APEX learning on Oracle cloud open  https://apex.oracle.com/en/ click link "Get started" and install few demo apps before making own based on eg Riaz Ahmed 2020 year "Oracle APEX 20 For Beginners" (on 18c XE DB) .


<br /><br />
Explanations below are far less important than demo site, code download and modules mentioned above.
Besides explanations below are difficult to understand - after battle philosophy very useful to improve basic ideas (principles).



<br><br><br>
Package contains modules (folders) in ownWebServer_or_hosting_DOCROOT_PATH = "/". My DOCROOT_PATHs ('/') are :

1. on Windows my home PC Apache virtual host J:\awww\www for development and J:\xampp\htdocs for testing
2. on Linux free demo sites for production /phporacle.eu5.net on Freehostingeu and /home/slavkoss/public_html on Heliohost - you can easily make own.
3. on Oracle Linux on my home PC Virtual Box machine

Each module is in own (functional) folder like Oracle Forms someForm.fmb, Blazor and APEX pages - is best to develop more large sites. Oracle Forms authors knew this 2 dozen years ago.

No M,V,C folders which, seems are mistake, delusion : putting coding technik (M,V,C code separation) in foreground instead pages (each page in own folder = module). M,V,C code separation idea is beter explained good old structured programming idea - M and V code manager = C, processing code may be M = CRUD DB table rows, output code = V. M,V,C code in one script is valid MVC coding ! 

Interesting is that PHP frameworks authors and learning code authors do not even mention **M,V,C folders reflecting code separation in opposition (antithesis) to functional folders - modules reflecting business functions (business logic)**. Is it one sells what one has ee no lies, no sells ? If is, is ugly.

First "/" in paths below is ownWebServer_or_hosting_DOCROOT_PATH. Modules (functional folders) are :

1. 50 kB "mnu" module, in folder /fwphp/www, is Main Menu code. "fwphp" folder is one site (may be more sites on same folder level). "www" folder is mnu module. Is not based on core CRUD code skeleton (possible, but not need). 

2. 60 kB "mkd" module, in folder /fwphp/glomodul/mkd, to write help pages in Markdown WYSIWYG editor (plus Simplemde code, or may be HTML editor Summernote code or ...), with mkd2html and html2mkd conversion. Is not based on core CRUD code skeleton (possible, but not need).

"fwphp" folder is one site, "glomodul" is group of shared modules reused in other modules, or testing modules or...

3. 90 kB, "core" module in folder /zinc is CRUD code skeleton (I call it B12phpfw) is shared (global) for all sites. "core" module is in folders /zinc 90 kB plus /zinc/themes (bootstrap) 392 kB and /zinc/img 200 kB (my /zinc/img/img_big is 30 MB but is not in this package).

4. 86 kB  "msg" or "blog" module in folder /fwphp/glomodul/**msg** 86 kB. Blog Is based on "core" CRUD code skeleton like every CRUD module should be.
   Uses   core (**zinc**) shares, two master modules (tbls) = $app_dir_path.'/**user**/'  100 kB and $app_dir_path.'/**post_category**/' 10kB, two detail & subdet modules (tbls)  $app_dir_path.'/**post**/' 50 kB and $app_dir_path.'/**post_comment**/' 15 kB  
   where app_dir_path is glomodul dir = application dir

5. 3 MB folders - a lot of testing / learning modules. See /fwphp/glomodul/z_examples/00_index_of_important.php



<br><br><br>

# 1\.6 B12phpfw UML diagram - classes structure - Attributes and Methods
[Top](#top)......[Dirs](#directories).....**UML**.....[DM](#dm).....[IDE](#ide).....[CRUD](#crud).....[SW fw](#swfw)   


<a name="uml"></a>
[B12phpfw_UMLdiagram.png](B12phpfw_UMLdiagram.png "B12phpfw_UMLdiagram.png")  
![B12phpfw_UMLdiagram.png is less practical and altered](xxxB12phpfw_UMLdiagram.png "B12phpfw_UMLdiagram.png")  

I prefer UML below : 




-----


## 1\.6 1a. DBI: Dbconn_allsites abstract cls : DB CONNECT
B12PHPFW CORE CODE. LEVEL : ALL SITES (SAME CODE FOR ALL SITES ee SHARED, GLOBAL)


-----


No more this class, only trait Db_allsites and :
```php
<?php
// J:\awww\www\zinc\Dbconn_allsites.php
// Is required in trait Db_allsites
//$conn_params = 
return [
    null
  , 'mysql'
  , 'localhost'
  , 'z_blogcms'
  , 'root'
  , ''
] ;
```


-----



/\\   
  !   
  !   
  !   


-----



## 1\.6 1b. DBI: trait Db_allsites  : code type DB CRUD ADAPTER  
B12PHPFW CORE CODE. LEVEL : ALL SITES (SAME CODE FOR ALL SITES, SHARED, GLOBAL, REUSABLE)  
(MODEL, AbstractEntity)

Was abstract class. **Trait is simmilar to class**, but **some class may use more traits (net - more parents),  but may extend only one class (hierarchy)**. 


-----



**Attributes**
```php
declare(strict_types=1);
namespace B12phpfw\core\zinc ;
use B12phpfw\core\zinc\Config_allsites ;
trait Db_allsites
{
    private static $instance = null ; //singleton! or protected static $DBH;

    private static $do_pgntion; //used in home.php...

    private static $dbi ; // mysql or oracle or any  d b i  you wish

    // See list( self::$do_pgntion, self::$dbi, self::$db_hostname, self::$db_name
    //     , self::$db_username, self::$db_userpwd) 
    // = require __DIR__ . '/Dbconn_allsites.php'; // not r equire_once !!
    private static $db_hostname ;
    private static $db_name ;
    private static $dsn ;
    private static $db_username ;
    private static $db_userpwd ;

    private static $dbobj;   // or $conn
    //private $stmt;    //P D O  statement handler, I use it only in dd fn
    private $errmsg;  //handle our error not used currently, can be useful
```


-----



**Methods** in J:\awww\www\zinc\Db_allsites.php (13 hits) :  
```
Line 69:   static public function get_or_new_dball(string $called_from ='**UNKNOWN CALLER**')
Line 120:   //  public static function disconnect() { self::$instance = null; }
Line 126:   static public function closeDBConn()
Line 134:   static public function getdbi()
Line 140:   static public function setdo_pgntion($new_val)
Line 162:   static public function dd(object $pp1, array $other)
Line 195:   static public function rrnext(object $cursor){
Line 203:   static public function rrcount($tbl)
Line 212:   static public function rr_last_id($tbl) {
Line 236:   static public function rr( $dmlrr, $binds = [], $other = [] )
Line 336:   static public function cc( string $tbl, string $flds, string $valsins
Line 397:   static public function uu( $tbl, $flds, $where, $binds = [] )
Line 461:   static public function debugPDO($raw_sql, $parameters) {
```



-----



  


-----



## 1\.6 2. Con?g_allsites abstract cls : CONFIG AND UTILS (functions)
B12PHPFW CORE CODE. LEVEL : ALL SITES (SAME CODE FOR ALL SITES ee SHARED, GLOBAL)


-----



 **Attributes**  
```php
declare(strict_types=1);
//vendor_namesp_prefix \ processing (behavior) \ cls dir (POSITIONAL part of ns, CAREFULLY !)
namespace B12phpfw\core\zinc ;
//use B12phpfw\core\zinc\Config_allsites ;

//abstract = Cls or Method for inheritance to avoid code redundancy, not to cre obj

abstract class Config_allsites //extends Db_allsites
{
  // can be named AbstractEntity
  /** 
  * ****************************************************
  * 1. R O U T I N G - IS NOT NEEDED IF NO USER INTERACTIONS (ee links) 
  * ****************************************************
  */
  //url parameters (url query string) after QS='?' are key-value pairs
 
 //M O D U L E  & GLOBAL (COMMON) PROPERTIES (for all sites) PALLETE like Oracle Forms
  private $pp1 ; //was public. If using Composer autoloading classes set QS=''.

```


-----



**Methods** in cls file Config_allsites.php (18 fns) **less than 250 important lines**
1.   public function \_\_construct(object $pp1, array $pp1_module_links)
     1. C H E C K  R E Q U I R E M E N T S
     2. DEFINE  A D R E S S E S  (NO CONSTANTS). Adresses = paths & relative paths
        3.1 R O U T I N G - find URL parts for user events methods calls ee $uri_arr = explode(QS, $REQUEST_URI)
        3.2 Assign  $ p p 1 = array of module properties
     4. D I S P A T C H I N G = calls Home_ctr cls method (CONVENTION : i=ctrakcmethod)
        which calls fns or includes view scripts (http jumps only to other module).
        Dispatching using home class methods is based on Mini3 php fw.

```
 J:\awww\www\zinc\Config_allsites.php (18 hits)
	Line 27:   public function __construct(object $pp1, array $pp1_module_links)
	Line 230:   public function setp($property, $value){
	Line 238:   public function getp($property){
	Line 256:     static public function rlows(object $r) //all row fld names lowercase
	Line 275:     static public function escp(string $string) //ESCAPING OUTPUT
	Line 288:     static protected function secure_form($form) {
	Line 296:     static public function Redirect_to($New_Location){
	Line 315:     public function ErrorMessage(){
	Line 324:     public function SuccessMessage(){
	Line 345: public static function get_pgnnav( $rtbl = 0, $mtd_to_inc_view = '/i/home/', $uriq, $rblk = 5 ) //paginator
	Line 439:   public function setcsrf() {
	Line 448:   public static function jsmsg($msg) 
	Line 479:     public function toArray($cls) {
	Line 484:   public function print_objvars($obj)
	Line 491:   public function print_clsmethods($obj)
	Line 499:   public function class_parentage($obj, $class)
	Line 513:   public function uname2clsses($username) { //was auth
	Line 527:   public function has_rights() {
```


-----



 /\\  
  !  
  !  
  !  


-----



## 1\.6 3. Home_ctr cls : MODULE CONTROLLER CODE
B12PHPFW MODULE CODE. LEVEL : MODULE (SAME CODE FOR MODULE ee FOLDER, eg mnu or mkd or msg=blog)

For program execution class hierarchy is as all attributes and methods in classes above  Home_ctr are in Home_ctr class ee in **$this object** which is instantiated (created in memory) Home_ctr (and automatically all classes above). Why shared attributes and methods are in hierarchy above Home_ctr and not in Home_ctr ? Because we do not want write in each Home_ctr class code in class above. Instead we **reuse code in shared class (globals)** above Home_ctr. 


-----



 **Attributes**  
```php
declare(strict_types=1); //declare(strict_types=1, encoding='UTF-8');
//vendor_namesp_prefix \ processing (behavior) \ cls dir (POSITIONAL part of ns, CAREFULLY !)
namespace B12phpfw\module\blog ;

use B12phpfw\core\zinc\Config_allsites ;
use B12phpfw\dbadapter\user\Tbl_crud as Tbl_crud_user;  //to Login_ Confirm_ SesUsrId
use B12phpfw\dbadapter\post_category\Tbl_crud  as Tbl_crud_category ;
use B12phpfw\dbadapter\post\Tbl_crud         as Tbl_crud_post ;
use B12phpfw\dbadapter\post_comment\Tbl_crud as Tbl_crud_post_comment ;

//extends  = ISA relation type ("Is A something") = not "Home_ ctr is contained in Config_allsites" but :
//"Home_ ctr is addition to Config_ allsites" - technicaly could be in Config_ allsites (is not for sake of code reusability and clear code)
// May be named App, Router_dispatcher... :

class Home_ctr extends Config_allsites
...
```


-----



**Methods** in cls file  Home_ctr.php (27 fns)  
```
  J:\awww\www\fwphp\glomodul\blog\Home_ctr.php (27 hits)
	Line 29:   public function __construct(object $pp1)
	Line 92:   protected function callf(string $akc, object $pp1)  //fnname, params
	Line 108:   private function del_row_do(object $pp1) //used for all  t a b l e s !! //private
	Line 149:   private function Login_Confirm_SesUsrId(object $dm) {
	Line 153:   private function logout(object $pp1)
	Line 162:   private function loginfrm(object $pp1) //private
	Line 175:   private function login(object $pp1) //private
	Line 192:   private function home(object $pp1) //DI page prop.palette   
	Line 208:   private function dashboard(object $pp1) //private
	Line 223:   private function admins(object $pp1) //private
	Line 240:   private function read_user(object $pp1) //private
	Line 259:   private function categories(object $pp1) //private
	Line 273:   private function addnewpost(object $pp1) //private
	Line 288:   private function posts(object $pp1) //private
	Line 308:   private function filter_postcateg(object $pp1) //private
	Line 356:   private function read_post(object $pp1)
	Line 379:   private function editpost(object $pp1) //private
	Line 397:   private function edmkdpost(object $pp1) //private
	Line 423:   private function readmkdpost(object $pp1, string $fle_to_displ_name, string $only_help='') //private
	Line 477:   private function kalendar(object $pp1) //private
	Line 489:   private function comments(object $pp1) //private
	Line 502:   private function upd_comment_stat(object $pp1) //private
	Line 530:   private function upd_user_loggedin(object $pp1) //private
	Line 548:     private function errmsg(object $pp1, string $myerrmsg)
	Line 562:   private function contact(object $pp1)
	Line 569:   private function about(object $pp1)
	Line 577:   private function features(object $pp1)
```




<br /><br />


-----



## 1\.6 4. Autoload cls included in index.php : TO AVOID INC. COMMANDS IN MANY SCRIPTS
B12PHPFW CORE CODE. LEVEL : ALL SITES (SAME CODE FOR ALL SITES ee SHARED, GLOBAL)  


-----



**Attributes**  
```php
declare(strict_types=1);
//vendor_namesp_prefix \ processing (behavior) \ cls dir (POSITIONAL part of ns, CAREFULLY !)
namespace B12phpfw\core\zinc ;

if (strnatcmp(phpversion(),'7.0.0') >= 0) {
      if (session_status() == PHP_SESSION_NONE) { session_start(); }
} else { 
  if(session_id() == '') { session_start(); } 
}


class Autoload
...
```


-----



**Methods** in cls file   Autoload.php (6 fns)
**public function \_\_construct($pp1)**
```
   public function __construct($pp1) {
     $this->pp1 = $pp1 ;
     spl_autoload_register(array($this, 'loader'));
     return null ;
   }

  J:\awww\www\zinc\Autoload.php (6 hits)
	Line 19:    public function __construct($pp1) {
	Line 27:    /*private static function _fatal_error_hndl() {
	Line 38:   private function get_path($nscls, &$nsdir_routTBLclsdir) // static ?
	Line 100:   //public static function autoload($cls) //namespaced className
	Line 101:   private function loader($nscls) //$ n s c l s is namespaced  c l a s s  name
	Line 143:   private function fmt(string $txt, string $color, string $bold='')
```

-----






<br /><br />
<a name="directories"></a>
## 1\.7 B12phpfw directories (modules) structure
[Top](#top).....**Dirs**.....[UML](#uml).....[DM](#dm).....[IDE](#ide).....[CRUD](#crud).....[SW fw](#swfw)   

See **info code :**        
http://phporacle.eu5.net/fwphp/glomodul/z_examples/03_info_php_apache_config_scripts.php       
https://github.com/slavkoss/fwphp/blob/master/fwphp/glomodul/z_examples/03_info_php_apache_config_scripts.php        

B12phpfw is very diferent than (all ?) other PHP frameworks (I prefer "menu & CRUD code skeleton") because dirs are like Oracle FORMS form module .fmb and other reasons mentioned below.    
But basics are same : HexArch (Hexagonal architecture) application of DDD (Domain Driven Design) :  example img gallery code https://github.com/oumarkonate/hexagonal-architecture 
1. **application** directory : src/Config contains ~ code in my Config_allsites cls
2. application directory : src/Controller contains ~ code in my  Config_allsites cls  and Home_ctr cls
3. **Domain (model)** code in directory src/Domain contains ~ code in my  Dbconn_allsites cls and Db_allsites cls
4. **Infrastructure (or Common)** dir contains dependencies that app code needs to work - my zinc dir
See [**"What is SW fw"**](#swfw).

![B12phpfw favicon DEVELOPMENT DOCROOT](B12phpfw_1DEVELOPMENT_DOCROOT.ico "B12phpfw_1DEVELOPMENT_DOCROOT.ico")  my **DEVELOPMENT DOCROOT** J:\\awww\\www ee http://dev1:8083/   OR       
 ![B12phpfw favicon TEST DOCROOT](B12phpfw_2TEST_DOCROOT.ico "B12phpfw_2TEST_DOCROOT.ico")  **TEST DOCROOT** J:\\xampp\\htdocs ee   http://localhost:8083/  OR       
 ![B12phpfw favicon PRODUCTION DOCROOT](B12phpfw_3PRODUCTION_DOCROOT.ico "B12phpfw_3PRODUCTION_DOCROOT.ico") **PRODUCTION (DEMO) DOCROOT** http://phporacle.eu5.net/       
|   
In Windows **tree /A** shows :
```
+---1. J:\awww\www\index.php redirects to main menu module url /fwphp/www/index.php
|
|
+---2. J:\awww\www\fwphp SITE, group of apps (modules groups) = Apache_docroot\fwphp
|   |  NO Models, V, C dirs, but dirs are like Oracle FORMS form .fmb !
|   |         
|   +---www  - MAIN MENU MODULE (static) pages, 
|   |   not on B12phpfw code skeleton, but similar coding
|   |
|   | APPLICATION DIRS HAVE SIMILAR DIR STRUCTURE AS glomodul :
|   |
|   +---01mater app (app = modules group) - material book keeping - empty dir
|   +---02financ app (dir name is module name) - empty dir
|   +---03salary app - empty dir
|   |
|   +---glomodul "app" modules group not in previous 01, 02... dirs.
|       |
|       |
|       +---mkd module - plain text Op.sys files (markdown or html) 
|       |   WYSIWYG web editor, not on b12phpfw code skeleton, but similar
|       |
|       |
|       +---blog (Msg) MODULE
|       |   |-- MODULE CONTROLLER class Home_ctr extends Config_allsites
|       |   |-- MODULE MODEL - DATA SOURCE ADAPTER class Tbl_crud
|       |   |-- VIEW scripts (not view classes !) to be included in Home_ctr
|       |   +---msgmkd dir - markdown texts .txt = POSTS
|       |   \---Uploads dir
|       |
|       | blog module consists of : two masters, detail, subdetail :
|       | which, like blog module, have Home_ctr.php, Tbl_crud.php 
|       | and VIEW scripts :
|       |
|       +---user/            module - master 1
|       |
|       |
|       +---post_category/   module - master 2 - Home_ctr.php and VIEW scripts
|       |
|       |
|       +---post/            module - detail - relations M : 1 user,  M : 1 post_category
|       |
|       |
|       +---post_comment/    module - subdetail - relation M : 1 post.
|       |
|       |
|       |
|       +---adrs (Mini3 fw) module https://github.com/panique/mini3
|       |   Excellent rare not to simple MVC example (lot of good coding). 
|       |   My ROUTING USING KEY-VALUES is different, but  
|       |   DISPATCHING USING HOME CLASS METHODS is based on Mini3.
|       |
|       +---z_examples      modules group - LEARNING EXAMPLES. Eg :
|       |   |
|       |   +---02_MVC      modules group  OOP and MVC learn
|       |       |
|       |       +---03xuding/ STEP BY STEP SHOWS WHY AND HOW TO USE B12PHPFW
|       |           Simple, small, elegant code. I improved it (?) in step 1 and 2.
|       |           https://www.startutorial.com/articles/view/php-crud-tutorial-part-1, 2, 3
|       |
|       |
|       +---lsweb module - web server dirs navigate & run .html and .php
|       +---oraedoop
|       +---z_help modules group - (static) pages
|
|
+---3. J:\awww\www\zinc (core) - GLOBAL INCLUDES for all sites (eg 2. fwphp SITE)
|   |  zinc is for search more selective than core  -:).
|   |  Here are dirs img, lang, theme and global classes (for all sites)
|   |  which are MVC engine.
|   |
|   | GLOBAL RESOURCES :
|   |-- hdr.php, ftr.php
|   +---img
|   +---lang
|   +---themes some public resources (some are in vendor dir)
|   |
|   | MVC ENGINE :
|   +---class Autoload in class script Autoload.php
|   |   CONVENTION FOR NAMESPACES :
|   |   Eg in tbl view script J:\awww\www\fwphp\glomodul\post\posts.php :
|   |          namespace B12phpfw\dbadapter\post ;
|   |          use B12phpfw\module\dbadapter\post\Tbl_crud ;
|   |   vendor_namesp_prefix \ processing_(behavior) \ proc2 \ ... \ cls_dir
|   |   before cls_dir is FUNCTIONAL part of name space, any string "\" separated 
|   |   cls_dir='post' is POSITIONAL part of ns, CAREFULLY it is dir name!
|   |   If we change dir names than we must change also cls_dir in ns in scripts !
|   |-- class Dbconn_allsites - global data source adapter
|   |-- class Db_allsites extends Dbconn_allsites - global data source adapter
|   |-- class Config_allsites extends Db_allsites - routing, dispatching, utils (helpers)
|   |-- class Pgn - PAGINATION
|   |
|   |
|   |-- showsource.php
|
|
+---4. J:\awww\www\vendor dir for external code (vendor's plugins) & resources :
|      JS files, stylesheets.            
|      B12phpfw own (internal) resources are in zinc dir, external in vendor dir.          
|   +---erusev (parsedown markdown to html)         
|   +---php2wsdl        
|   +---simplemde WYSIWYG editor for markdown (or Summernote for html)         
|     
```

See Mini3 PHP framework [https://github.com/panique/mini3](https://github.com/panique/mini3) which is excellent rare not to simple MVC example (lot of good coding). My **routing using key-values** is different but **dispatching using home class methods is based on Mini3**. 

See very good coding (to simple examples and have no namespaces) : 
1. https://github.com/ngrt/MVC_todo 
2. or https://github.com/DawidYerginyan/simple-php-mvc/ 
3. or my dir \02_mvc\ (\\fwphp\\glomodul\\z_examples\\02_mvc\\03xuding_glob\\) - still version 6. (good exercize to upgrade to version 7.)  
   or many others



3 modules  :   
1. Menus (**Mnu module**) are not based - no need, but can be based on B12phpfw which is best for CRUD modules like Oracle Forms form. 
2. Most frequent (best ?) **Blog - msgs module** design today - Jazeb Akram, Abdul Wali, Edwin Diaz... I used it in Blog (Msg) module based on B12phpfw code skeleton
3. WYSIWYG web editing : Markdown or HTML (**Mkd module** is not based - no need, but can be based on B12phpfw is used for blog posts or any txt file). Blog posts may be :
    1. oper. system files - practicaly unlimited size
    2. or in MySQL/Oracle/or any DB : post (4000 characters I commented this in code), summary (4000 characters) and banner_img description (4000 characters oracle 11g, 32 kB >=12c) 



<br />        
Explanations below are far less important than demo site and code download mentioned above - open code and learn it, it is simple but needs      
> few hours (advanced user) - days (intermediate) - weeks/months (beginner) to understand it.           
**Understand code is must for any professional code skeleton !**       
<br />

         _.-'''''-._
       .'  _     _  '.
      /   (o)   (o)   \
     |                 |
     |  \           /  |
      \  '.       .'  /
       '.  ''---''  .'
         '-._____.-' 



## <a name="dm"></a>1\.8 DM (Domain model)
[Top](#top)......[Dirs](#directories).....[UML](#uml).....**DM**.....[IDE](#ide).....[CRUD](#crud).....[SW fw](#swfw)   

[UML diagram](#uml)  above does not show DM adapter classes. Each  tbl in DB (ee each object in data source eg web servis...) has DM adapter class **Tbl_crud** which is **pre CRUD code - calls cc, rr, uu, dd... methods** like in Oracle Forms **pre-query, pre-insert, pre-update... on-insert, on-update...**.

In Db_allsites class is **eg execute-query code** - only creates cursor to (loop) read row by row in view scripts or in ctr scripts).        

### Events flow (E1) --- (E2)... - caseflow through Blog module (CRUD data skeleton)
```
(E1) User types URL --- index.php instantiates C (Home_ctr, App...) --- C calls own method, see (T1) - signals flow
(E2) Home_ctr own method includes (E3) V (home.php) - signals flow  V --URL--> C
                        |
                        --  OR --calls--> some method (eg delete row) - signals flow C --parameters -->method
                        |
                        -- OR URL jumps in other module - signals flow in _GET (=URL query) or _POST global arrays

(E3) V (home.php view script) --- V calls DM see (T2), ee V calls Tbl_crud to <==pull== array (of row objects) from data source (T3) - DATA FLOW
         |
         -- if user cliks link or button or types URL --- it is event (E1) - signals flow V --URL--> C - ee user adds INTERACTIVITY (T4) in C which requires ROUTING.
```

#### Terms
(T1) Own controller method is Mini3 PHP framework **dispatching** idea using home class methods (My **routing using key-values** is different)      

(T2) **DM** (Domain Model) are classes :
1. Tbl_crud (**users table PdoAdapter**) called by V script - **pre CRUD (PRE-INSERT, PRE-UPDATE...) methods** cc, rr, uu, dd
2. Db_allsites (**AbstractDataMapper**) called by Tbl_crud - same for all tables, contains **CRUD (ON-INSERT, ON-UPDATE...) methods** cc, rr, uu, dd

(T3) **DS (data source)** -  tbl row objects from DB or web service, or.... Only DM classes know about DS. CRUD code skeletons calls DM classes FUNCTIONALY ee WHAT ee "get invoice items", not HOW and from which DS. DS is assigned only once in config class abstract class Config_allsites extends Db_allsites (and class Home_ctr extends Config_allsites). 

(T4)  User **INTERACTIVITY** (cliks link or button or types URL) requires ROUTING in C ee C (Home_ctr) is not needed for Mnu module, even for Mkd module - enough is simple controller code snippet. 


<br /><br />
### Signals, data and code flow
Graph 4 node (vrh), 7 edge (brid, border, boudary). Graph is simmilar to Euler's 4 Königsberg  city parts (nodes) and 7 bridges (edges) - Chinese postman **transport problem** - how to Euler walk to cross each  bridge (edge)  only once. Traveler sailsman problem is : how to shortest walk graph to cross each  city part (node)  at least once and return to start node. 

```
Db_allsites, Tbl_crud_crud     _.-'(DM)'-._       Domain Model
                          .'/          '.
                   calls / /DATA         \C includes V, before inc. C can manipulate M (state changes)
DM updates V           (V) -----URL-----> (C)  View (home.php) and Controller (Home_ctr)
V calls DM              |  \              |
V sees URL              \  \              /U uses C - sends URL (signal) to C through link in V
                       URL'. \HTML      .'
                            '-._(U)_.-'User types URL or cliks link or button
```

Picture shows M-V data flow. Model code is most complicated. **C and V code can be standardized, M only partially** :      

**M in B12phpfw is DM (Domain Model)** meaning eg for users table :     

M consists of :
1. abstract class Db_allsites which is same for all tables (cc, rr, uu, dd methods are standardized)
2. and class Tbl_crud - **bussines logic** in this M code can not be standardized. This M code is most complicated, it is fat (lot of code)

User`s events are handled in Controller class.
1. C (class Home_ctr) assigns users orders in URL to array variables telling V what user wants (signals flow) and includes V 
2. **V pulls data from M data source (DB or web servis or...)** (calls Tbl_crud which calls Db_allsites) according C variables (user orders in URL)
3. V links ee user orders in URL call C method which can do some state changes in M data

V script may contain class but I do not see need for view classes because view script is included in Home_ctr class and can use $this to access methods and attributes in whole class hierarchy : Home_ctr, Config_allsites, Db_allsites. If we do not need CRUD than we do not need class hierarchy Home_ctr, Config_allsites, Db_allsites meaning that simple coding like in Mnu and Mkd modules suffices..

M-C-V data flow - controller instantiates M and pushes M data to V.
I do not see advantages compared to M-V data flow. Disadvantage are : for pagination M-V data flow is only possible solution, M-C-V data flow makes C fat in large modules (lot of code). C in my Msg (Blog) module has lot of code, but code is very simple.

So view instantiates model and pulls data from M or C instantiates model and pulls data from M.  Both styles work ok, difference is important only for us - for clearer code.

If we have user`s interactions (events) eg filter displayed rows (**pagination is also filtering**), than **M-V data flow is only possible** solution (M-V data flow is original MVC idea). 



<br /><br /><a name="SimplestCRUD"></a>
## 1\.9 Simplest user CRUD module - still version 6.
7 scripts which are in all CRUD modules (same named)  

**SimplestCRUD**.....[index.php](#scrudIndex).....[Home_ctr](#scrudHome_ctr).....[home (table page)](#scrudHomeV).....[create](#scrudC).....[read (user profile - form)](#scrudR).....[update](#scrudU)....[adapter](#scrudadapter)    

Outside code which calls cc, rr, uu, dd core methods does know what they do (CRUD) but **does not know how (does not know PDO DBI exsistance) ee is data source DB or service or csv or... .**   

What is DM is best explained in example code in **module (folder) 03xuding_glob** which is whole below :     
https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/z_examples/02_mvc/xuding_glob  (\_glob means "with shares, globals").       

This example is step 2 in learning. Step 1 is dir (module) ...z_examples/02_MVC/03xuding.     

### Notepad++ session file for simplest user CRUD module based on CRUD code skeleton called B12phpfw
```
J:\awww\www\fwphp\glomodul\z_examples\02_mvc\xuding_glob\~~~~~~~ 03xuding 2017_users GLOBALS.nppses       
MODULE_DIR = J:\awww\www\fwphp\glomodul\z_examples\02_mvc\xuding_glob
```

1. "MODULE\_DIR\index.php"  
2. "MODULE\_DIR\Home_ctr.php"
3. "MODULE\_DIR\home.php" 
4. "MODULE\_DIR\create.php" 
5. "MODULE\_DIR\read.php" 
6. "MODULE\_DIR\update.php"
7.  "MODULE\_DIR\Tbl_crud.php"

"MODULE\_DIR\z_delete.php"  
"MODULE\_DIR\help.php"  

<a name="scrudIndex"></a>
### 1\.9\.1 index.php
[Simplest CRUD](#SimplestCRUD).....**index.php**.....[Home_ctr](#scrudHome_ctr).....[home (table page)](#scrudHomeV).....[create](#scrudC).....[read (user profile - form)](#scrudR).....[update](#scrudU) ....[adapter](#scrudadapter)   

```php
<?php
/**
* step 1
* J:\awww\www\fwphp\glomodul\z_examples\02_mvc\xuding_glob\index.php
*        Instantiates Home_ ctr cls - router, dispatcher
* step 1 in Module  U S E R  T B L  C R U D on B12phpfw CRUD code skeleton. 
* see https://www.startutorial.com/articles/view/php-crud-tutorial-part-1 of 4 (Xsu Ding)
* For more code comments see blog module J:\awww\www\fwphp\glomodul\blog\Home_ctr.php
*/
namespace B12phpfw\xuding_glob ; // because Home_ ctr
use B12phpfw\core\zinc\Autoload as Autoload;

//1. settings - properties - assign global variables to use them in any code part
$module_towsroot = '../../../../../' ;  //to web server doc root or our doc root by ISP
$app_dir_path = str_replace('\\','/', dirname(__DIR__) ) ; //to app eg glomodul

$pp1 = (object)
[   'dbg'=>'1', 'stack_trace'=>[[str_replace('\\','/', __FILE__ ).', lin='.__LINE__]]
  //1.1
  , 'module_towsroot'=>$module_towsroot
  //1.2
  , 'module_version'=>'6.0.4.0 Users', 'vendor_namesp_prefix'=>'B12phpfw'
  //1.3 F o r  A u t o l o a d
  , 'module_path_arr'=>[ //MUST BE NUM INDEXED for auto loader loop (not 'string'=>...)
        str_replace('\\','/', __DIR__ ).'/' //=thismodule_cls_script_path
      , str_replace('\\','/', realpath($module_towsroot.'zinc')) .'/'
      //, $app_dir_path.'/user/', $app_dir_path.'/post_category/' //two master modules (tbls)
      //, $app_dir_path.'/post/', $app_dir_path.'/post_comment/'  //detail & subdet modules (tbls)
  ] 
] ;

require($pp1->module_towsroot.'zinc/Autoload.php');
new Autoload($pp1); //global cls loads classes scripts automatically
                if ('') {Db_allsites::jsmsg( [ basename(__FILE__) //. __METHOD__ 
                   .', line '. __LINE__ .' SAYS'=>' '
                   ,'where am I'=>'AFTER  A u t o l o a d'
                ] ) ; }
//step 2 (step 3 is parent::__construct : fw core calls method in Home_ctr cls)
$db = new Home_ctr($pp1) ;

exit(0);

```

<a name="scrudHome_ctr"></a>
### 1\.9\.2 Home_ctr.php router, dispatcher
[index.php](#SimplestCRUD).....[index.php](#scrudIndex).....**Home_ctr**.....[home (table page)](#scrudHomeV).....[create](#scrudC).....[read (user profile - form)](#scrudR).....[update](#scrudU)....[adapter](#scrudadapter)    

```php
<?php
/**
* step 2
* J:\awww\www\fwphp\glomodul\z_examples\02_mvc\xuding_glob\Home_ctr.php
* Instantiated in i ndex.php 
*
* Home_ ctr cls is router, dispatcher :
* 1. Assigns links for user interactions (module routing table) in home.php
* 2. Calls own method when user clicks link/button in home.php 
*    or any URL is entered in ibrowser adress field
* 3. Own method includes view CRUD scripts h ome.php or c reate.php or r ead.php or ... 
*    (no need for view classes ?) or calls some method or url calls other module i ndex.php
*/
namespace B12phpfw\xuding_glob ;
use B12phpfw\core\zinc\Config_allsites ;

class Home_ctr extends Config_allsites
{
  public function __construct($pp1)
  {
    if (!defined('QS')) define('QS', '?');
    $pp1_module = [ 
      'P P 1 _ M O D U L E' => '~~~~~~~~~~~~~~~~~'
      ,'home' => QS.'i/home/'
      ,'c'    => QS.'i/c/'
      ,'r'    => QS.'i/r/id/'
      ,'u'    => QS.'i/u/id/' //in view script href = $pp1->u . $id
      //$pp1->uriq->i/home_fn, t/tbl_name, id/idval key/value
      //in home.php onclick does jsmsgyn dialog,  home_fn "d" calls dd() (no need include script)
      ,'d'    => QS.'i/d/t/admins/id/' //in view script href = $pp1->d . $id
      ,'h'    => QS.'i/h/' //help
    ] ;

    //step 3 : fw core calls method in this cls : see home_fn above
    parent::__construct($pp1, $pp1_module);

                if ('') { /* self::jsmsg( [ //basename(__FILE__).' '.
                   __METHOD__ .', line '. __LINE__ .' SAYS'=>'s001. AFTER Config_allsites construct '
                   ,'ses. userid'=>isset($_SESSION["userid"])?$_SESSION["userid"]:'NOT SET'
                   ,'$pp1->uriq'=>$pp1->uriq
                   ] ) ; */
                   echo '<h3>'. basename(__FILE__).' '.__METHOD__ .', line '. __LINE__ .' SAYS'.'</h3>';
                   echo '<pre>$_GET='; print_r($_GET); echo '</pre><br />'; // [d/39] => 
                   echo '<pre>$_POST='; print_r($_POST); echo '</pre><br />'; // [d/39] => 
                   echo '<pre>$pp1->uriq='; print_r($pp1->uriq); echo '</pre><br />';
                   // $pp1->uriq=stdClass Object( [d] => 39 )
                }


  } // e n d  f n


  //           **** D I S P A T C H I N G
          //$accessor = "get" . ucfirst(strtolower($akc));
  public function callf(string $akc, object $pp1)  //fnname, params
  {
    return ( 
      ( //method_exists($this, $akc) and
      is_callable(array($this, $akc)) ) ? $this->$akc($pp1) : '0'
    ) ;
  }



          //******************************************
          //       DISPATCH  M E T H O D S
          // they call other methods or include script
          // CALLED FROM Config_ allsites __c onstruct
          //******************************************

  //Called own methods when user clicks link/button or any URL is entered in ibrowser adress field :

  public function c(object $pp1)
  {
      $title = 'TEST USER CREATE';
      require $pp1->wsroot_path . 'zinc/hdr.php';
        //require_once("navbar.php");
        require $pp1->module_path . 'create.php';
      require $pp1->wsroot_path . 'zinc/ftr.php';
  }

  public function home(object $pp1)
  {
    //t b l  r e a d
      $title = 'TEST USER CRUD';
      require $pp1->wsroot_path . 'zinc/hdr.php';
        //require_once("navbar.php");
        require $pp1->module_path . 'home.php';
      require $pp1->wsroot_path . 'zinc/ftr.php';
  }


  public function r(object $pp1)
  {
    //r o w  r e a d
      $title = 'TEST USER READ PROFILE';
      require $pp1->wsroot_path . 'zinc/hdr.php';
        //require_once("navbar.php");
        require $pp1->module_path . 'read.php';
      require $pp1->wsroot_path . 'zinc/ftr.php';
  }

  public function u(object $pp1)
  {
      $title = 'TEST USER UPDATE';
      require $pp1->wsroot_path . 'zinc/hdr.php';
        //require_once("navbar.php");
        require $pp1->module_path . 'update.php';
      require $pp1->wsroot_path . 'zinc/ftr.php';
  }

  public function d(object $pp1)
  {
                              if ('') { echo __METHOD__ .', line '. __LINE__ .' SAYS: '
                              .'<br />U R L  query array ='.'$pp1->uriq=' ;
                              if (isset($pp1->uriq))
                                { echo '<pre>'; print_r($pp1->uriq) ; echo '</pre>'; }
                              else { echo ' not set' ; } }
      $this->dd($pp1->uriq->t, $pp1->uriq->id) ;
      // R e d i r e c t = r e f r e s h  t b l  v i e w :
      switch ($pp1->uriq->t)
      {
        case 'admins' : $this->Redirect_to($pp1->home) ; break;
        default: 
          echo '<h3>'.__FILE__ .', line '. __LINE__ .' SAYS: '.'T a b l e '. $pp1->uriq->t 
          .' does not exist (put it in home.php, in del link !)'.'</h3>';
          break;
      }

  }


  public function h(object $pp1) //help
  {
    $img_url_dir = $pp1->wsroot_url . $pp1->imgrel_path .'img_big/oop_help/';
      $title = 'DM, DDD HELP';
      //require $pp1->wsroot_path . 'zinc/hdr.php';
          //require_once("navbar.php");
          //include $pp1->wsroot_path . 'fwphp/glomodul/z_help/oop_help/index.php';
      ?>
      <!doctype html>
      <html>
      <head>
        <meta charset="utf-8" />
        <title>OOP tutorial B12phpfwdoc</title>
        <link rel="stylesheet" href="<?=$wsroot_url?>zinc/img_gallery_flex.css" />
        <link rel="stylesheet" href="<?=$wsroot_url?>zinc/exp_collapse.css">
        <style></style>
      </head>
      <body>
      <main><?php

          include $pp1->wsroot_path . 'fwphp/glomodul/z_help/php_oop/00_OOP01_basics_intro.php';
          //also works : require $pp1->module_path . 'help.php';
      //require $pp1->wsroot_path . 'zinc/ftr.php';
      
      // <=$wsroot_url>
      //Loading failed for the <script> with source ?http://dev1:8083/fwphp/glomodul/z_examples/02_mvc/03xuding_g?%20line%20%3Cb%3E143%3C/b%3E%3Cbr%20/%3Ezinc/exp_collapse.js?.
       ?>
      <hr />
      <?='$pp1->wsroot_url ='. $pp1->wsroot_url?>
      <br /><?='$img_url_dir ='. $img_url_dir?>
      <br /><?='$pp1->imgrel_path ='. $pp1->imgrel_path?> - not visible in module which is not based on CRUD skeleton "B12phpfw", ee does not use Config_allsites (like Mnu)
      </main>

      <!-- script src="zinc/exp_collapse.js" OR: -->
      <script src="<?=$pp1->wsroot_url?>zinc/exp_collapse.js" 
              language='JScript' type='text/javascript'></script>
      </body></html><?php
  }

} // e n d  c l s  

```


<a name="scrudHomeV"></a>
### 1\.9\.3 home.php - shows links assigned in Home_ctr.php for user interactions
[index.php](#SimplestCRUD).....[index.php](#scrudIndex).....[Home_ctr](#scrudHome_ctr).....**home (table page.....[create](#scrudC).....[read (user profile - form)](#scrudR).....[update](#scrudU)....[adapter](#scrudadapter)    

```php
<?php
/**
* step 3
* J:\awww\www\fwphp\glomodul\z_examples\02_mvc\xuding_glob\home.php
* called from Home_ ctr cls method h ome() when usr clicks link/button or any URL is entered in ibrowser  
* calls Tbl_crud cls method rr_ all() =pre-query which sets rows filter (default-where), sort... 
* which calls Db_ allsites method rr() =execute-query which creates cursor for read row by row loop here
*
* Adds user request (interaction, event) eg $id at link end, for read user profile or update or delete.
* 
* Tbl_ crud is ORM (tbl adapter) class, when instantiated is DM object of row in memory to/from DB tbl row
*    Where ORM = Object Relational Mapper, DM = Domain Model, row in memory is model of DB tbl row
* Tbl_ crud maps (adapts) model of tbl row in memory to tbl row in DM data source (DB, web service...)
*
*
* https://getbootstrap.com/docs/4.0/components/buttons/
* 1. <button type="button" class="btn btn-primary">Primary</button> BLUE
* 2. btn-secondary GRAY  3. btn-success GREEN    4. btn-danger RED
* 5. btn-warning YELLOW  6. btn-info DARK GREEN  7. btn-light WHITE, GRAY TXT
* 8. btn-dark BLACK      9. btn-link WHITE, BLUE TXT
*
*/
//namespace B12phpfw ;
use B12phpfw\dbadapter\xuding_glob\Tbl_crud ;

$Tbl_crud = new Tbl_crud ;
$cursor = $Tbl_crud->rr_all($this);
?>
<!--             U S E R  T B L  R E A D -->
<div class="container">
<div class="row">
      <h3>Admins table CRUD PDO MySQL or Oracle or... Bootstrap 4 OOP MVC ?????</h3>
</div>

<div class="row">

  <p><a href="<?=$pp1->c?>" class="btn btn-success">Create</a></p>      
  <p><a href="<?=$pp1->h?>" class="btn btn-info">Help DM</a></p>      

  <table class="table table-striped table-bordered">

  <thead><tr><th>User Name (click to update)</th><th>Name</th><th>Del.ID</th><th>Profile</th></tr></thead>

  <tbody>
      <?php
    $SrNo = 0;
    while ($r = $this->rrnext($cursor))
    {
      $id = self::escp($r->id) ;
      ?>
      <tr>

      <td><a class="btn" href="<?=$pp1->u . $id?>"><?=self::escp($r->username)?></a></td>

      <td><?=self::escp($r->aname)?></td>

      <td width=9%>
         <a id="erase_row" class="btn btn-danger" title = "Delete row ID=<?=$id?>"
            onclick="
            var vodg ;
            vodg = jsmsgyn('Erase row <?=$id?> ?','') ; // '' means no URL to redirect
            //alert('vodg='+vodg) ; // if OK vodg=1, if CANCEL vodg=0
            if ( vodg == 1 ) { location.href= '<?=$pp1->d . $id?>/'; }
            "
         > <?=$id?></a>
      </td>

      <td width=5%><a class="btn btn-primary" href="<?=$pp1->r . $id?>">Show</a></td>

      </tr> <?php
    }
    self::disconnect();
       ?>
      </tbody>
    </table>
 
 </div>
</div> <!-- /container -->

```


<a name="scrudC"></a>
### 1\.9\.4 create.php
[index.php](#SimplestCRUD).....[index.php](#scrudIndex).....[Home_ctr](#scrudHome_ctr).....[home (table page)](#scrudHomeV).....**create**.....[read (user profile - form)](#scrudR).....[update](#scrudU)....[adapter](#scrudadapter)    

```php
<?php
/**
* step 3
* J:\awww\www\fwphp\glomodul\z_examples\02_mvc\xuding_glob\create.php
* called from Home_ ctr cls method  c() when usr clicks link/button or any URL is entered in ibrowser  
* calls Tbl_crud cls method c c()     =pre-insert tbl row
* which calls Db_ allsites method c c() =on-insert tbl-row
*/
//namespace B12phpfw ;
use B12phpfw\dbadapter\xuding_glob\Tbl_crud ;

//Tbl_ crud is ORM class : DM of row in memory to/from DB tbl row
//where ORM = Object Relational Mapper, DM = Domain Model, row in memory is model of DB tbl row


if ( !empty($_POST))
{
  // keep track validation errors
  $nameError   = null;
  $nameError  = null;
  $mobileError = null;

  // keep track post values
  $username   = $_POST['username'];
  $name  = $_POST['name'];
  $mobile = '' ; //$_POST['user_telefon'];

  // 1. validate input
  $valid = true;
  if (empty($username)) {
      $usernameError = 'Please enter Name';
      $valid = false;
  }

  if (empty($name)) {
      $nameError = 'Please enter Name';
      $valid = false;
  } /*else if ( !filter_var($name,FILTER_VALIDATE_EMAIL) ) {
      $emailError = 'Please enter a valid Email Address';
      $valid = false;
  } */

  // 2. insert data
  if ($valid) {
    $fldvals = [$username, $name] ;
    $Tbl_crud = new Tbl_crud ;
    $id = $Tbl_crud->cc($this, $fldvals);
    echo "<h3>Created id=$id </h3>" ;
    //header("Location: index.php");
  }
}
?>


    <div class="container">

      <div class="span10 offset1">
          <div class="row">
              <h4>Create a Customer</h4>
          </div>

          <form class="form-horizontal" action="<?=$pp1->c?>" method="post">

            <div class="control-group <?php echo !empty($usernameError)?'error':'';?>">
              <label class="control-label">Name</label>
              <div class="controls">
                  <input name="username" type="text"  placeholder="Name"
                         value="<?php echo !empty($username)?$username:'';?>">
                  <?php if (!empty($usernameError)): ?>
                      <span class="help-inline"><?php echo $usernameError;?></span>
                  <?php endif; ?>
              </div>
            </div>

          <div class="control-group <?php echo !empty($nameError)?'error':'';?>">
              <label class="control-label">Name</label>
              <div class="controls">
                  <input name="name" type="text" placeholder="Name"
                         value="<?php echo !empty($name)?$name:'';?>">
                  <?php if (!empty($nameError)): ?>
                      <span class="help-inline"><?php echo $nameError;?></span>
                  <?php endif;?>
              </div>
            </div>


            <div class="form-actions">
                <button type="submit" class="btn btn-success">Create</button>

                <a class="btn" href="index.php">Back</a>
              </div>
          </form>
      </div>

    </div> <!-- /container -->

```


<a name="scrudR"></a>
### 1\.9\.5 read.php - display user profile
[index.php](#SimplestCRUD).....[index.php](#scrudIndex).....[Home_ctr](#scrudHome_ctr).....[home (table page)](#scrudHomeV).....[create](#scrudC).....**read (user profile - form**.....[update](#scrudU)....[adapter](#scrudadapter)    

curl -s https://api.github.com/markdown/raw -X "POST" -H "Content-Type: text/plain" --data-binary "@J:/awww/www/readme.md" >> "C:\Users\ss\AppData\Local\Temp\readme.htm"

See J:\\awww\\www\\vendor\\erusev\\parsedown\\styles>md2h.bat

```php
<?php
/**
* step 3 - display user profile
* J:\awww\www\fwphp\glomodul\z_examples\02_mvc\xuding_glob\read.php
* called from Home_ ctr cls method  r() when usr clicks link/button or any URL is entered in ibrowser  
* calls Tbl_crud cls method rr() =pre-query which sets rows filter (default-where), sort... 
* which calls Db_ allsites method rr() =execute-query which creates cursor for read row by row loop here
*/
//namespace B12phpfw ;
use B12phpfw\dbadapter\xuding_glob\Tbl_crud ;

//The use statement with non-compound name 'Parsedown' has no effect
//use \Parsedown ; //in global namespace (version 1.7.4 stil has no namespace)

//require 'J:\\awww\\www\\vendor\\erusev\\parsedown\\Parsedown.php' ;
require '../../../../../vendor/erusev/parsedown/Parsedown.php' ;
$Parsedown = new Parsedown(); //OR NO use : \Parsedown() where "\" means global namespace
          //echo $Parsedown->text('Hello _Parsedown_!'); # prints: <p>Hello <em>Parsedown</em>!</p>
          ///////// You can also parse inline markdown only:
          //echo $Parsedown->line('Hello _Parsedown_!'); # prints: Hello <em>Parsedown</em>!

$id = (int)$pp1->uriq->id ;
if ( null==$id ) { header("Location: index.php"); exit(0) ; }

$Tbl_crud = new Tbl_crud ;
$cursor = $Tbl_crud->rr($this, $id) ;
while ($row = $this->rrnext($cursor)): {$r = $row ;} endwhile;

?>

    <div class="container">

      <div class="span10 offset1">
        <div class="row">
            <h3>Admin <?=$r->aname?>, id <?=$id?> profile</h3>
        </div>

        <div class="form-horizontal" >

          <div class="control-group">
            <label class="control-label">User name</label>
            <div class="controls">
                <label class="checkbox">
                    <?php echo $r->username;?>
                </label>
            </div>
          </div>

        <div class="control-group">
            <label class="control-label">Email Address</label>
            <div class="controls">
                <label class="checkbox">
                    <?php echo $r->email;?>
                </label>
            </div>
          </div>

        <div class="control-group">
            <label class="control-label">Biography</label>
            <div class="controls">
                <label class="checkbox">
                    <?php echo $Parsedown->text($r->abio);?>
                </label>
            </div>
          </div>



          <div class="form-actions">
              <a class="btn" href="index.php">Back</a>
           </div>


        </div>
    </div>

    </div> <!-- /container -->

```



<a name="scrudU"></a>
### 1\.9\.6 update.php
[index.php](#SimplestCRUD).....[index.php](#scrudIndex).....[Home_ctr](#scrudHome_ctr).....[home (table page)](#scrudHomeV).....[create](#scrudC).....[read (user profile - form)](#scrudR).....**update**....[adapter](#scrudadapter)   

```php
<?php
/**
* step 3
* J:\awww\www\fwphp\glomodul\z_examples\02_mvc\xuding_glob\update.php
* http://dev1:8083/fwphp/glomodul/z_examples/02_mvc/xuding_glob/index.php?i/u/id/79
*
* called from Home_ ctr cls method  u() when usr clicks link/button or any URL is entered in ibrowser  
* calls Tbl_crud cls method uu()     =pre-update
* which calls Db_ allsites method uu() =on-update
*/
//namespace B12phpfw ;
use B12phpfw\dbadapter\xuding_glob\Tbl_crud ;
                if ('') { 
                  echo '<h3>'. basename(__FILE__).' '.__METHOD__ .', line '. __LINE__ .' SAYS'.'</h3>';
                  echo '<pre>URL query array $pp1->uriq='; print_r($pp1->uriq); echo '</pre>';
                        // $pp1->uriq=stdClass Object( [i] => u  [d] => 79 )
                  echo '<pre>$_GET='; print_r($_GET); echo '</pre>';
                  echo '<pre>$_POST='; print_r($_POST); echo '</pre>';
                  //exit();
                }
$id = (int)$pp1->uriq->id ;
if ( null==$id ) { header("Location: index.php"); }

if ( !empty($_POST) ) 
{
        // keep track validation errors
        $anameError = null;
        $userError = null;

        // keep track post values
        $username  = $_POST['username']; //hidden !!
        $aname     = $_POST['aname'];
        $user     = $_POST['user'];
        $abio      = $_POST['abio'];

        // validate input
        $valid = true;
        if (empty($aname)) {
            $anameError = 'Please enter Name';
            $valid = false;
        }

        if (empty($user)) {
            $userError = 'Please enter user last, first name';
            $valid = false;
        } /*else if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) {
            $emailError = 'Please enter a valid Email Address';
            $valid = false;
        } */

        if ($valid) {
          $fldvals = [$aname, $user, $id, $abio] ;
          $Tbl_crud = new Tbl_crud ;
          $Tbl_crud->uu($this, $fldvals);
          //echo "<h3>Updated id=$id </h3>" ;
        }
} else {
          //show row to update
          $Tbl_crud = new Tbl_crud ;
          $cursor = $Tbl_crud->rr($this, $id) ;
          while ($row = $this->rrnext($cursor)): {$r = $row ;} endwhile;
          $username = $r->username ;
          $aname    = $r->aname ;
          $user     = $r->aname ;
          $abio     = $r->abio ;
}
    ?>

    <div class="container">

      <div class="span10 offset1">
          <div class="row">
            <h3><?php if (isset($_POST['username'])): echo 'UPDATED'; else: echo 'Update';  endif; ?>  
                  Admin user
            </h3>
          </div>

          <form class="form-horizontal"  method="post"
                action="<?=$pp1->u . $id?>">

            <div class="control-group <?php echo !empty($anameError)?'error':'';?>">
              <label class="control-label">
                 Admin username=<?=$username?>, id=<?=$id?> name</label>
              <div class="controls">
                  <input name="aname" type="text"  placeholder="Admin user name" 
                         value="<?php echo !empty($aname)?$aname:'';?>">
                  <?php if (!empty($anameError)): ?>
                      <span class="help-inline"><?php echo $anameError;?></span>
                  <?php endif; ?>
              </div>
            </div>

            <div class="control-group <?php echo !empty($userError)?'error':'';?>">
              <label class="control-label">User</label>
              <div class="controls">
                  <input name="user" type="text" placeholder="User last, first name" 
                         value="<?php echo !empty($user)?$user:'';?>">
                  <?php if (!empty($userError)): ?>
                      <span class="help-inline"><?php echo $userError;?></span>
                  <?php endif;?>
              </div>
            </div>

            <div class="control-group <?php //echo !empty($abioError)?'error':'';?>">
              <label class="control-label">Biography</label>
              <div class="controls">
                  <input name="abio" type="text" placeholder="Biography" 
                         value="<?php echo !empty($abio)?$abio:'';?>">
                  <?php //if (!empty($...)): ?>
                      <span class="help-inline"><?php //echo $...Error;?></span>
                  <?php //endif;?>
              </div>
            </div>

            <!-- name="category[id]"   $id ?? '' ...z_examples\01_php_bootstrap\jokeyank\templates\editcategory.html.php
                   NO NEED FOR THIS :
            -->
            <!--input type="hidden" name="id" value="<?=$id?>"-->
            <input type="hidden" name="username" value="<?=$username?>">

            <div class="form-actions">
                <button type="submit" class="btn btn-success">Update</button>
                <!--  -->
                <a class="btn" href="index.php">Back</a>
              </div>
          </form>
      </div>

    </div> <!-- /container -->

```


<a name="scrudadapter"></a>
### 1\.9\.7 Tbl_crud.php - ORM, DM (Domain Model) adapter cls - pre CRUD class
[SimplestCRUD index.php](#SimplestCRUD).....[index.php](#scrudIndex).....[Home_ctr](#scrudHome_ctr).....[home (table page)](#scrudHomeV).....[create](#scrudC).....[read (user profile - form)](#scrudR).....[update](#scrudU)....**[adapter]**

```php
<?php
/**
* step 4 (pre) CRUD class
* J:\awww\www\fwphp\glomodul\z_examples\02_mvc\xuding_glob\Tbl_crud.php
*    or User_db.php, or UserMapper.php
* called from view CRUD scripts c reate.php, r ead.php... 
*    when usr clicks link/button or any (CRUD) URL is entered in ibrowser  
* calls Db_ allsites method cc() (=on-insert tbl-row), rr()...
*
* Tbl_ crud separates CRUD code skeleton (B12phpfw) from data source (DB or web service or...).
* Tbl_ crud is ORM (TBL ADAPTER) CLASS. When instantiated it is DM object of row in memory
*    Where ORM = Object Relational Mapper, DM = Domain Model, row in memory is model of DB tbl row
* Tbl_ crud maps (adapts) model of tbl row in memory to tbl row in DM data source (DB, web service...)
* Tbl_ crud is used to move data to/from data source.
*
* REASON WHY EACH DB TBL SHOULD HAVE DM CLASS NAMED EG TblNAME_crud :
* CRUD code should be separated from C and V code ee should be in TblNAME_crud.
* TblNAME_crud is FAT MODEL - When business logic is complicated here is lot of code
* - most importand module code (can not be in global model cls) !!
* C and V are tiny. HTML in V is eg one of bootstrap templates - PHP CRUD code in it is tiny,
* only calls TblNAME_crud methods.
*
* So this example is not MVC, it is DMVC
*
* Domain Model definition 
* =======================
* 1. System of abstractions that describes selected aspects of a sphere of knowledge,
*    influence or activity (a domain). DM can be used to solve problems related to domain.
* 
* 2. An object model of the domain that incorporates both behavior and data.
*    Creates a web of interconnected objects, where each object represents some
*    meaningful individual, whether as large as a corporation or as small as a 
*    single line on an order form.
*/

//namespace B12phpfw ; //ModelMapper
//use Model\UserInterface,
//    Model\User ;
//vendor_namesp_prefix \ processing (behavior) \ cls dir (POSITIONAL part of ns, CAREFULLY !)
namespace B12phpfw\dbadapter\xuding_glob ;
use B12phpfw\module\xuding_glob\Home_ctr ;

class Tbl_crud //extends AbstractDataMapper implements User_db_intf
{
  protected $tbl = "admins";

  // pre-query
  public function rr_all($db) {
    // open cursor (execute-query loop is in view script)
    $cursor = $db->rr("SELECT * FROM $this->tbl ORDER BY username", [], __FILE__ .', ln '. __LINE__ ) ;
    $db::disconnect();
    return $cursor ;
  }

  // pre-query
  public function rr($db, $id) {
    // open cursor (execute-query loop is in view script)
    $cursor = $db->rr("SELECT * FROM admins WHERE id=:AdminId"
        , [ ['placeh'=>':AdminId', 'valph'=>$id, 'tip'=>'int']
          ] , __FILE__ .' '.', ln '. __LINE__) ;
    //while ($row = $db->rrnext($cursor)): {$r = $row ;} endwhile;
    $db::disconnect();
    return $cursor ;
  }

  // on-insert
  //public function cc(UserInterface $user) {
  public function cc($db, $vv) {
    //  1. c r e  r o w   
    $CurrentTime = time(); $DateTime = strftime("%Y-%m-%d %H:%M:%S",$CurrentTime);
    $flds     = "username,aname" ;
    $qrywhat = "VALUES(:username,:name)" ;
    $binds = [
      ['placeh'=>':username', 'valph'=>$vv[0], 'tip'=>'str']
     ,['placeh'=>':name',    'valph'=>$vv[1], 'tip'=>'str']
    ] ;
    $cursor = $db->cc($db, $this->tbl, $flds, $qrywhat, $binds);

    //if($cursor){$_SESSION["SuccessMessage"]="Admin with the name of ".$Name." added Successfully";
    //}else { $_SESSION["ErrorMessage"]= "Something went wrong. Try Again !"; }
    //$db->Redirect_to($db->pp1->admins);

    // 2. g e t  i d
    $c_r = $db->rr("SELECT max(id) id FROM $this->tbl" 
        , [] //[ ['placeh'=>':AdminId', 'valph'=>$id, 'tip'=>'int'] ]
        , __FILE__ .' '.', ln '. __LINE__) ;
    while ($row = $db->rrnext($c_r)): {$r = $row ;} endwhile; 

    $db::disconnect();

    return $r->id;
  }

  // on-update
  public function uu($db, $vv) {
    //  1. u p d  r o w   
    $flds     = "SET aname=:AName, abio=:abio" ; //, email=:Aemail
    $qrywhere = "WHERE id=:AdminId" ;
    $binds = [
      ['placeh'=>':AName',  'valph'=>$vv[0], 'tip'=>'str']
     //,['placeh'=>':Aemail', 'valph'=>$vv[1], 'tip'=>'str']
     ,['placeh'=>':AdminId','valph'=>$vv[2], 'tip'=>'int']
     ,['placeh'=>':abio',   'valph'=>$vv[3], 'tip'=>'str']
    ] ;
    $cursor = $db->uu($db, $this->tbl, $flds, $qrywhere, $binds);
    $db::disconnect();
    //header("Location: index.php");
    return null ;
  }


}

```


<br /><br /><a name="ide"></a>
# 2\. My developing environment (IDE)
[Top](#top)......[Dirs](#directories).....[UML](#uml).....[DM](#dm).....**IDE**.....[CRUD](#crud).....[SW fw](#swfw)   


## 2\.1 [Git SCM distributed version control system](https://git-scm.com/downloads)

see  https://help.github.com/en/github/writing-on-github    https://git-scm.com/book/en/v2      
   or eg  https://git-scm.com/docs/git-checkout         

### In Windows Symenu Cmder as administrator (or CLI or Git Bash CLI)
J:\\aplp\\aplp\\0\_symenu\\ProgramFiles\\SPSSuite\\SyMenuSuite\\Cmder\_sps       

Go to your working directory or project folder (if not git status says: "fatal: not a git repository (or any of the parent directories): .git").      

git config --global user.name 'yourname'         
git config --global --replace-all user.email 'youremail'         
Install Git Credential Manager for Windows to avoid login on each push.      

### cd j:\\awww\\www
j:\\awww\\www (master -> origin)
### git status
### git add .
or git add fwphp\\ (or whatever git asks)  or git add -A  or git add index.html
### git commit -am "ver 7.0.0 mnu, msg, mkd FUNCTIONAL namespaces, CRUD PDO trait, pretty URL-s"
We stored our project files within our system hard drive.      
If Cmder shows error  "fatal: unable to auto-detect email address" :      
git config --global user.email "you@example.com"      and         git config --global user.name "Your Name"       
to set your account's default identity.    Omit --global to set the identity only in this repository.       
### git push -u origin master
We stored our project files within our Github site.      

You want to restore an old revision of a file:
git checkout 8a7b201 index.html
If you specify "HEAD" as the revision, you will restore the last committed version of the file, effectively undoing any local changes that you current have in that file:       
git checkout HEAD index.html     

We can roll back our deleted files in working directory using command:      
**git checkout -- .**    
or git checkout -- filemame...         



Git is program and [Github](https://github.com/) is site - deploy ( [book](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) ) [Tutorial](https://www.atlassian.com/git/tutorials/setting-up-a-repository)

Git we use eg to syncronize our scripts :     
1.  to your local repository (git commit to .git dir on local PC)     
2.  and from local repository to remote repository on Github site (git push)      

Track the history of the changes where, when, who and why made. git SW stores or host the versions of project within our hard drive. From where we can backup our project history.  GitHub  site is like hosting to store our versions of projects (case HD crash !).       
Staging is like a queue, add drops modified files here for push.      
Push (commit) is method to send the files from working directory to repository.         
Pull is method to fetch the record from repository to our working directory.   


## To purge remote repository

So only last commit remains and it is first commit :

Save your .git/config before, and restore it after. (I delete it in recycle bin).
1. delete .git/   (< 10 MB) - without this command : git remote add origin... issues error : fatal: remote origin already exists !!
2. git init   (< 20 kb)
3. git add .  (< 3 MB)
4. git commit -am "ver 6.0 mnu, msg, mkd FUNCTIONAL namespaces, CRUD PDO, pretty URL-s"
5. git remote add origin https://github.com/slavkoss/fwphp.git
6. git push --mirror --force

  
  
## 2\.2 Development environment & source code

My PHP IDE is **Symenu** as launcher for all SW (portable if possible) below :

1.  Laragon portable on Windows 10 64 bit
2.  **EDITOR**: Notepad++ (6 MB), also good, all portable : Notepad2-mod (2 MB), Atom (524 MB), Visual Studio Code (247 MB), CudaText (28 MB), PSPad (23 MB), RJ TextEd (416 MB), I avoid Dreamveawer, Microsoft Expression web (abandoned but still good), Komposer (abandoned, too old)  
    GT Text OCR IMG->TXT
3.  **COMMANDER**: **Locate** is old but best (Janne Huttunen) or simmilar see Symenu.     
    Freecommander       
    Q-dir          
4.  **BROWSER**: Firefox, Google Chrome, Cyberfox, Pale Moon
5.  **DEPLOY (INSTALL)**: Composer, Git  
6.  Winscp **FTP client**.  Ignore : ` | *.zip; J:\awww\www\.git; J:\awww\www\zinc\Dbconn_allsites.php`;
    

##  2\.3 [Composer](https://getcomposer.org/download/)

I use newest XAMPP 64 bit xampp-portable-windows-x64-7.3.7-1-VC15.7z on newest Windows 10, 64 bit. WAMP not any more because is not fully portable and Composer needs coding displayed below and it is only for Windows. It seems WAMP is not giving newest/simplest solutions as XAMPP does.

        WAMP does not like PHP in Windows PATH variable, so :
        1. I installed Composer-Setup.exe and removed PHP from PATH. 
        2. **C:\composer\composer7.bat** :
        ```
        @echo OFF  
        :: in case DelayedExpansion is on and a path contains ! 
        setlocal DISABLEDELAYEDEXPANSION
        J:\wamp64\bin\php\php7.2.9\php.exe "%~dp0composer.phar" %*
        ```
        Save file along with the originally installed composer.bat file.
    
        3. Now call the php7 composer with the new command:
        ```
        In Windows CLI, cd J:\awww\www and as admin : 
           composer7 selfupdate   (1.8.4, 2019-02-25, Use composer self-update --rollback to return to version 1.7.3)
           composer7 update
        ```


## 2\.4 Free hosting with free MySql (or Mariadb) DB
**Demo site** free hosting where blog (msg) module is installed **http://phporacle.eu5.net/ (freehostingeu) or  http://phporacle.heliohost.org/ (heliohost) **. Some details are to do in version 6.1 but all important is visible in version 6.0.      
I do not like heliohost activity requirement: "you must visit your site each month" or will be suspended for inactivity after 30 days. They should allow for ever free sites useful for sharing knowledge. I like heliohost simple, clever, very useful pages. I do not like freehostingeu feature "upload zip files not allowed".   

|       Web hosts PHP,  MySQL DB                             |                           Features                                |Other Features |
| ----------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------ |
|  **http://phporacle.eu5.net/ (freehostingeu)**        | stable, fast FTP (6x faster than heliohost) | ~~activity requirement~~ ,  upload zip files not allowed, but possible  |
|  **http://phporacle.heliohost.org/ (heliohost) **     |  stable FTP, Web Disk  | ~~activity requirement, not fast (I am in Europe, Zagreb),~~  |
| Heroku                                                               |  ~~only Postgres DB~~  |  ~~seems complicated to me~~  |
| https://www.gigarocket.net/free-hosting.php    |  ~~does not send confirmation email~~  |  |
| https://infinityfree.net/                                       |   ~~does not send confirmation email~~  |  |
| https://www.ilbello.com/en/                              |   ~~does not send confirmation email~~  |  |
| https://www.000webhost.com/                          |  ~~**unstable FTP**~~  |  |
Some ask 3, 5 or 15 $ (per year ?) for domain (eg https://client.googiehost.com/ , https://www.freehosting.com/free-hosting.html , https://cp1.awardspace.net/beta/login/).      



  
<br /><br /><br /><a name="crud"></a>
# 3\. PHP 7, Bootstrap 4 : DB tbls rows PDO CRUD
[Top](#top)......[Dirs](#directories).....[UML](#uml).....[DM](#dm).....[IDE](#ide).....**CRUD**.....[SW fw](#swfw)   

May be jQuery, PHP, Bootstrap AJAX DB table rows CRUD is simplest, fastest best CRUD but I prefer no jQuery AJAX . Only Javascript I need is dialog yes or no.

See readme_thoughts.md.  

# 3\.1 B12phpfw core (CRUD) code
See readme_thoughts.md.  




<br /><br /><br />
It is not easy to see need to eg for user module convert code from procedural MVC to OOP MVC with namespaces and autoloading  For navigation (url-s, links) code is same - OOP does not help. Procedural MVC user module code is more clear and readable. So why is OOP better ?

Some say: "is OOP mistake ?" - eg **lack of reusability in OOP** - to get banana (some method or attribute) you get also gorilla holding banana and whole gorilla\`s jungle (all higher classes with complicated dependencies). It is why B12phpfw code skeleton is for CRUD modules, I do not use it in mnu and mkd modules.

Eg Interfaces help to get ONLY banana, but coding is complicated - I could find only strong-talk-weak-work code examples about this subject.

See [https://phpthewrongway.com/](https://phpthewrongway.com/), or Joe Armstrong why OOP sucks [http://harmful.cat-v.org/software/OO\_programming/why\_oo\_sucks](http://harmful.cat-v.org/software/OO_programming/why_oo_sucks).

  
  
  
  
<br /><br /><br />
B12phpfw is based on ideas in many tutorials eg next few are among best (but also on some ideas in best PHP frameworks Laravel, Simfony, Yii, Phalcon...) .         
I did much simpler B12phpfw code based on ideas in Jazeb Akram CMS blog and Mini3 PHP fw. Books about PHP are not so good.

1.  CMS blog Video (7.7 GB) Jazeb Akram : Udemy - The Complete PHP MYSQL Professional Course with 5 Projects - **rare not to simple tutorial**. Similar is video (12.3 GB) Edwin_Diaz_PHP for Beginners - Become a PHP Master - CMS Project. Also some other videos - so seems they are **best/simplest page designs** (not code skeletons) for CMS blog  ee posts, messages. Videos are huge for commercial reasons to reach higher num_of_GB ee $/GB but there is not best code - older programming style.

2.  [**Mini3**](https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/adrs) (Mini3 PHP fw [https://github.com/panique/mini3](https://github.com/panique/mini3) - rare not to simple module but could have more functionality.

3.  https://github.com/ngrt/MVC_todo Code is explained in this article blog 2017.12.17: https://medium.com/@noufel.gouirhate/create-your-own-mvc-framework-in-php-af7bd1f0ca19

4. Other :
    1. video 8/2016 Paul Amissah [https://freecourseweb.com/building-database-web-app-php-oop-pdo-ajax-mysql/](https://freecourseweb.com/building-database-web-app-php-oop-pdo-ajax-mysql/) :  PHP, procedural MVC PDO MySQL, Bootstrap, AJAX jQuery - good basic code. **Not good are (as in almost all tutorials)** : names, globals,  code snippets composing - no single entry point ee including scripts instead http jumping in scripts
    3.  video Shan Shah 2019 [https://desirecourse.com/login-registration-and-profile-management-in-php-mysql-2018/](https://desirecourse.com/login-registration-and-profile-management-in-php-mysql-2018/),
    4.  video Learn\_OOP\_PHP\_By\_Building\_Complete\_Website\_by\_Traversy\_2018 [bad example](https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/z_examples/02_MVC/traversymvc) to complisated, despite some good code snippets.
    5.  Inanz, Hopkins, Xuding... to simple examples good only for total beginers (dummies).

I made many changes (I hope improvements) which I did because I do not like proposed solutions in best php frameworks and in learning sources mentioned above  (especcialy coding eg Traversy tutorial). Globals are not well coded there. I think that eg invoice php code should be in **own folder - module - like Oracle forms invoice.fmb** (not all forms/reports in 3 folders: M, V, C). **Application** glomodul consists of group of modules subgroups - unlimited levels  eg subgroup [https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/z\_examples](https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/z_examples)

**Modules subgroups - unlimited levels**. This is important difference ! Can Laravel, Yii, Phalcon work this way (important for large applications) ?

I think that should be simple/fast/professional : **globals**, routing, dispaching, functional namespaces & classes loading , web rich text editing...  
It is why I spended so many hours on this (huge time wasting which should do tools-software authors, not tools-software users like me).


  
    
  

## Code with functional namespaces & class to autoload : global, module-local and external classes

This code skeleton seems complicated compared with [https://github.com/panique/\*\*mini3](https://github.com/panique/**mini3)\*\* which is may be best fw code template for smaller projects (and learning PHP).

For large projects **SHARES - GLOBALS - REUSABLES** which I use here are very important, same as **modules in own folders (not all in 3 dirs M, V, C)**.

About globals see discussion :  
[https://medium.com/@sameernyaupane/php-software-architecture-part-1-mvc-1c7bf042a695](https://medium.com/@sameernyaupane/php-software-architecture-part-1-mvc-1c7bf042a695)  
[https://medium.com/@sameernyaupane/php-software-architecture-part-2-the-alternatives-1bd54e7f7b6d](https://medium.com/@sameernyaupane/php-software-architecture-part-2-the-alternatives-1bd54e7f7b6d)  
[https://blog.ircmaxell.com/2014/11/alternatives-to-mvc.html](https://blog.ircmaxell.com/2014/11/alternatives-to-mvc.html)       


<br /><br /><br />
During winter 2019/2020 year (much to late because I tested lot what others did) I made Version 6. of **menu and CRUD PHP code skeleton (own framework named "B12phpfw")** - core code is ~ 50 kB.  Version 7. : PHP 7 and trait DBI is in October 2020.  
<br />
Why ?  I do not like proposed solutions in  in best php frameworks (Laravel, Simfony, Yii...) and learning sources (internet, books). I think that eg module invoice php code should be in own folder like Oracle Forms form invoice.fmb (not all forms/reports in 3 folders: M, V, C). I think that should be simple/fast/professional :
**globals**, routing, dispaching, classes loading , web rich text editing - it is why I wasted many hours coding my B12phpfw (huge time wasting which should do software authors, not sw users-programers like me).      

Why I do not like proposed solutions and what I did to (I hope) improve them. <span style="color:red;">Red colored features are main reasons for B12phpfw, but I improved also other features.</span> :      

### Compared B12phpfw Msg (blog) module and Mini3 module (URLs Youtube songs adresses) and TraversyMVC blog module
TraversyMVC (has video) and Mini3 are simplified, with some (many?) differences compared to Laravel, Simfony, Yii, Falcon... B12phpfw is much more different - see red colored features. PHP framework authors do not show such fitures table, for me it is hiding fitures (sell cat in bag).

|                                    Feature                                         |                           B12phpfw                                |  Mini3 MVC PHP fw and TraversyMVC| 
| ----------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------ |
|  1.  <span style="color:red;">**Modules in own folder** like Oracle Forms .fmb</span> |  has - it is one of main reasons for B12phpfw !     |   has not all forms/reports in 3 dirs: M,V,C <br /> |
|  2.  **Name spaced** classes (functional name spacing)  |   has  |  **Mini3** which is in my opinion better than TraversyMVC : https://github.com/panique/mini3  has name spaced classes. <br />  TraversyMVC blog has not  <br />|
|  3.  **Number of folders** (my opinion)     |  optimal      |  to many <br />|
|  4.  **Minimal PHP code** to learn (medium) PHP  (my opinion) |  optimal (but we could add additional code) |  good but not enough eg see WYSIWYG, globals... <br />|
|  5.  **Functional methods, attr. etc naming** (my opinion)     |  good      |  could be better <br />|
|  6.  <span style="color:red;">**Global classes, methods etc** (my opinion) </span> |  good  see below CRUD test output |  bad <br />|
|  7.  (Posts edited with any) **WYSIWYG editor** |  has      |  has not |
|  8.  Home_ctr or Home_mdl CRUD layer methods <span style="color:red;">**do not know for underlaying Db_allsites layer PDO** methods, MySql, Oracle...</span> |  has much improved |  has not <br />|
|  9.  **OOP** |  has      |  has like Mini3 <br />|
| 10.  namespaces (own **PSR-4 (or Composer's) autoloading** classes scripts) |  improved  |  Mini3 has, TraversyMVC blog has not <br />|
| 11.  <span style="color:red;">**All scripts are included**</span> (ee no http jumps except some jumps in other module) |  has  |  Mini3 has, B12phpfw took it from Mini3, TraversyMVC blog has not <br />|
| 12.  **jQuery** only for Bootstrap 5 |  yes  |  Mini3 has own CSS, TraversyMVC blog has <br />|
| 13.  AJAX, JSON |  has not  |  Mini3 has basic jQuery AJAX explained, TraversyMVC blog has <br />|
| 14.  server side **validation** |  has |  has <br />|
| 15. **authentification** (log in / out) |  has |  has not, TraversyMVC blog has <br />|
| 16. **authorization** (only logged in users may execute some code ee CRUD code...) |  has |   Mini3 has not, TraversyMVC blog has <br />|
| 17. <span style="color:red;">**Own debugging** very simple and useful</span> : msg in pre tag or popup JS msg). **xdebug** also helps. |  has |  has not <br />|
| 18. <span style="color:red;">PHP code here is good for (more) **large sites**</span>|  yes | no <br />|
| 19. **multilanguage pages** |  has, see https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/z_examples/multilang/ |  has not <br />|
| 20. **<span style="color:red;">DM</span> (Domain model)** |  has, simplest possible, no complicated namespaces, interfaces, adapters, data mappers... see https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/z_examples/02_MVC/03xuding_glob |  has not <br />|





<br /><br />
MD to HTML converters on inet :
1. **Notepad++ plugin https://github.com/nea/MarkdownViewerPlusPlus** then in npp Settings -> Import -> Import plugin(s)
2. **https://www.tutorialspoint.com/online_markdown_editor.php     or     https://markdowntohtml.com/**   
3. or (many converters)   https://www.browserling.com/tools/markdown-to-html   
4. or files convert to many formats :  https://products.aspose.app/pdf/conversion/md-to-html    
5. Links not working :     http://demo.showdownjs.com/ (no HTML source)  
  NOT WORKING : https://daringfireball.net/projects/markdown/dingus    or   https://pandoc.org/try/ 


<br /><br />
https://community.notepad-plus-plus.org/topic/17366/how-to-install-emmet-plugin/2   Meta Chuh 26 Mar 2019, 15:45   @Alexander?Rudenko

#### Old notepad++ plugin manager is not compatible with notepad++ 7.6 and above.
 -it will write files to wrong locations.
first revert all changes you made to your notepad++ installation, by uninstalling plugin manager and removing everything you might have installed with plugin manager.
make sure you do not see any error messages at notepad++ startup, and make sure you do not see plugin manager at your plugins menu anymore.

next, follow the >>> Guide: 
### I do not use this: How to install the PythonScript plugin and emmet plugin on Notepad++ 7.6.3, 7.6.4 and above 
<<<, to install pythonscript manually :
https://community.notepad-plus-plus.org/topic/17256/guide-how-to-install-the-pythonscript-plugin-on-notepad-7-6-3-7-6-4-and-above

for notepad++ 7.6.4, 64 bit (installed version):

download and extract PythonScript_Full_1.3.0.0_x64.zip from >>> here <<< to your desktop.
note: do not use any other available release type, except this zip.
1. https://github.com/bruderstein/PythonScript/releases/download/v1.3.0/PythonScript_Full_1.3.0.0_x64.zip

2. open %ProgramFiles%\Notepad++\plugins\ in windows explorer and create a folder called PythonScript.

3. copy PythonScript.dll from the plugins folder of this extracted zip to:
%ProgramFiles%\Notepad++\plugins\PythonScript\PythonScript.dll

4. copy python27.dll from this extracted zip to:
%ProgramFiles%\Notepad++\python27.dll

5. copy the folders scripts containing machine level scripts and lib containing python libraries, from the zip?s plugins\PythonScript folder to:
%ProgramFiles%\Notepad++\plugins\PythonScript\


for notepad++ 7.6.4, 32 bit (installed version):
...


6. then download the emmet plugin emmet-npp.zip from >>> here <<< and extract it.
http://download.emmet.io/npp/emmet-npp.zip

7. go to the notepad++ 7.6.4 menu plugins > open plugins folder to open your plugins folder, and create a new folder called EmmetNPP.

8. copy EmmetNPP.dll from the extracted emmet-npp.zip into the EmmetNPP folder you have created.

9. copy all files and folders from the folder EmmetNPP within the extracted emmet-npp.zip into the EmmetNPP folder you have created.
note: your plugins\EmmetNPP folder should now contain 
EmmetNPP.dll, _PyV8.pyd, editor.js, npp_emmet.py, PyV8.py and a folder called emmet.

now restart notepad++ and you will see both at your plugins menu :
    the emmet plugin 
    and the python script plugin


https://dev.to/jorgecc/a-minimalist-mvc-project-using-php-and-without-a-framework-4pd8

https://github.com/TRPB/ImmutableMVC





<br /><br /><br /><br />
## B12phpfw directories (modules) structure compared to (all ?) other PHP fw-s
```
One of (Apache) WEB SERVER DOCROOT-s (see B12phpfw directories (modules) structure)
|       
|       
|-- **1. fwphp** (app)       # **or SITE1, or APLications1** = Main MVC site dirs structure,               
|   |                        # my J:\awww\www\fwphp\ = Apache_docroot\fwphp         
|   |                        # Contains **MODULE GROUPS** eg APLication1, 2.  eg  **www** (main menu), **glomodul**,       
|   |                        # **finance**, **material**. fwphp is optional name. Namespace is only one: B12phpfw.            
|   |-- Controllers          # **NO M,V,C dirs (ee Controllers) but dirs are like Oracle FORMS form module.fmb  !**         
|   |   ??? example.php      # Example Controller with basic functionality explanation. Start here learning !         
|   |                        # My is https://github.com/slavkoss/fwphp/tree/master/fwphp/glomodul/z_examples/02_MVC/       
|   |                        # (03xuding, 01vanilla...)
|   |       
|   |-- Models               # **NO M,V,C dirs** ee NO Models directory       
|   |   ??? example.php      # Example Model with functionality explanation       
|   |                        #  My is .../fwphp/glomodul/z_examples/02_MVC/01vanilla       
|   |         
|   |__ Views                # **NO M,V,C dirs** ee NO Views directory, no template engines (PHP is template language)        
|        
|        
|-- **2. zinc** (core)       # Basically mvc engine directory. zinc is for search more selective than core  -:).                  
|   |                        # Here are **class Autoload and other all sites global classes** and some public resources                 
|   |                        # (some are in vendor dir).            
|   |-- app.php              # **NO** Main fw file. nice abstraction (questionable value in real life programming) :       
|   |                        # **$app = new App();  $app->autoload(); $app->config(); $app->start();**       
|   |                        # Where is UML diagram for this beauty ?        
|   |                        # I think much better is **new Home\_ctr($pp1) ** // Home\_ ctr "inherits" index.php       
|   |                        # ee "inherits" $pp1, (global & module prroperties palette array),       
|   |                        # but also inherits see B12phpfw core UML diagram below.      .      
|   |             
|   |-- classes              # **NO** classes directory for autoloading.         
|   |   |                    # B12phpfw global classes are in zinc dir, module clses are in module dir.       
|   |   |-- controller.php   # **NO** but **in module dir global abstract DISPATCHER (RESPONSE) class**             
|   |   |                    # **Home\_ctr  (<span style="color:blue;">level 4<span>)** extends Config\_allsites         
|   |   |__ model.php        # **NO, no model class for each table** but **in zinc dir global abstract CRUD class               
|   |                        # Db_allsites  (<span style="color:blue;">level 2<span>)** extends Dbconn_allsites             
|   |                        # In Db_allsites are **cc, rr, uu, dd methods** instead model class for each table !        
|   |                        # cc, rr, uu, dd methods are like Oracle Forms           
|   |                        # pre-insert, pre- and execute- query, pre-update instead model class for each table !         
|   |                        # To me seem model class for each table and ORM-s, active records not needed.         
|   |       
|   |-- config               # **NO** config dir but **in zinc dir global abstract CONFIG & ROUTING (REQUEST) class**            
|   |   |                    # **Config_allsites  (level 3)** extends Db_allsites (see core UML diagram). 
|   |   |                    # Here is property palette array.           
|   |   |-- database.php     # **NO** but in zinc dirabstract class **Dbconn_allsites  (<span style="color:blue;">level 1<span>)**        
|   |   |__ session.php            
|   |                     
|   |__ helpers              # **NO** helpers dir, but in zinc dir global abstract classes Db_allsites and Config_allsites.          
|       |__ examplhelper.php # **NO** but own debugging and Xdebug php extension.              
|      
|       
|-- **3. index.php**         # redirects to main menu url fwphp/www/index.php        
|      
|         
|-- **4. vendor** (public)   # dir for external code (vendor's plugins) & resources :  javascript files, stylesheets.            
|   |                        # B12phpfw has own (internal) resources in zinc dir, external in vendor dir.          
|   |-- javascripts          
|   |-- stylesheets          
|   |__ vendor           
|     
|         
|-- .htaccess                # **NO** .htaccess (Apache mod_rewrite) URL rewriting all requests to MVC endpoint index.php            
                             # (single module entry point). B12phpfw has **QS=?** constant instead.       

```
Common fw dir structure are **items in (...) and marked with NO - are not used in B12phpfw** but basics are same. B12phpfw is better for large sites.             




<br /><br /><br /><br /><a name="swfw"></a>
# What is SW fw (Software framework)
[Top](#top)......[Dirs](#directories).....[UML](#uml).....[DM](#dm).....[IDE](#ide).....[CRUD](#crud).....**SW fw**   

See "What is SW fw (Software framework)" (using mkd in fwphp/glomodul/mkd/02/01\_fwphp/**PHP_DIP\_DI.txt/**)  which states :        

1. Provides a STANDARD WAY TO BUILD and deploy applications     
2. Is abstraction in which SW providing GENERIC FUNCTIONALITY can be selectively applied / supplemented (NOT changed!!) by user-written code, providing appl-specific SW.       
   IoC  (inversion of control) is **key difference fw - library of reusable code** : does your code call into a fw, or does it plug something into fw, and then fw calls back ?      
   Code flow (of control messages) in sw fw is dictated by sw fw, not by the caller method.
3. Is universal, REUSABLE SW environment that provides particular functionality as part of a larger SW platform to facilitate development of SW applications     

Code flow terms : DI is about **code flow tie - wiring**, IoC is about **code flow direction**, and DIP is about **code flow shape**.      

1. DI (Dependency Injection) is about how one code object knows about another, dependent object (master table does not know about its details which have FK - knowlege about master).
   DI is about **how dependent (lower) object acquires a dependency (higher) object**.      
2. IoC (Inversion of Control) is about **who initiates the call**. If your code initiates a call, it is not IoC.     
   If  the container/system/library/fw calls back into code that you provided, it is IoC.      
   If  B12phpfw OUR CODE in Home\_ctr extends Config\_allsites \_\_construct($pp1) contains code 
   **$akc = $this->uriq->i ; $this->$akc() ; **   - it is in fact NOT OUR CODE but fw core code - pure IoC :
    1. can easily be moved  in framework core (ee in parent constructor)
    2. but is more clear then if it were (hidden) in parent constructor 
    3. allows us to also, beside from fw core, call / include something (which will never be needed) 
3. DIP (Dependency Inversion Principle) is about the **level of the abstraction** in messages sent from your code to the thing it is calling.       
   Eg high-level module A --- uses ---> low-level module B.      
   When applying DIP, both modules --- depend ---> on abstraction - interface, so A and B can be built, used, deployed independently    
   (note that **in UML diagrams all arrows point to dependency**) 
   Eg High-level module (your business logic) defines DB CRUD interface "ClientRepository" which contains the methods the business logic needs.     
   Then a "MySQLClientRepository" DB CRUD concretion implements that interface and uses a database library to submit the queries.     
   Because I did not yet realized ideas above, for now B12phpfw has : cc, rr, uu, dd methods which are global like in Oracle FORMS form module .fmb (using or not on-insert, on-update...)
   Example in fwphp/glomodul/z_examples/02_mvc/domain_model/ seems to me tipical not enough explained strong talk, week doing (not suitable for each form in own dir) :        
   1. http://www.sitepoint.com/building-a-domain-model/ February 24, 2012  By Alejandro Gervasio - last cry in frameworks night (unnecessary complicated ?)
   2. https://www.sitepoint.com/integrating-the-data-mappers/
   3. https://www.sitepoint.com/handling-collections-of-aggregate-roots/
   4. https://www.sitepoint.com/an-introduction-to-services/

To be sure, use DI or IoC with DIP.     


> B12phpfw means: B=table rows blocks for CRUD like in Oracle Forms eg invoice.fmb master (B1) and detail rows (B2).     
> 12 = steps of code flow must be clear, good explained.  **cs01 means code flow step 1.**       
> phpfw = PHP framework = code skeleton for menus & CRUD (and many other functionalities,      

I never understood enough fw authors explanations which is one of reasons why I do not believe them).   (font Century Gothic 16)      

***  
## Links
http://dev1:8083/fwphp/glomodul/mkd/?edit=001_MDcheatsheet.txt  

http://dev1:8083/fwphp/www/  
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/01_oracle_DB_18c_instalac.txt  
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/02_oracle_APEX_20_1_instalac.txt  
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/03_1oracle_apex_sales_module.txt  
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/03_2oracle_apex_sales_apl_cloud.txt  

http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/devsuite10g_instalac.txt  
http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_db/devsuite10g_F6i_to_apex.txt  


http://dev1:8083/fwphp/glomodul/mkd/?edit=01/001_vbox/001_instalac_moj_vbox_oralin76.mkd  
http://dev1:8083/fwphp/glomodul/mkd/?showhtml=J:/awww/www/readme.md  



[Top](#top).....<a href="#directories" id="lnkdirectories">Dirs</a>.....[UML](#uml).....[DM](#dm).....[IDE](#ide).....[CRUD](#crud).....[SW fw](#swfw)   


[SimplestCRUD index.php](#SimplestCRUD).....[index.php](#scrudIndex).....[Home_ctr](#scrudHome_ctr).....[home (table page)](#scrudHomeV).....[create](#scrudC).....[read (user profile - form)](#scrudR).....[update](#scrudU)....[adapter](#scrudadapter)     

  Files folder image Files  
File Role Description
Files folder imagefwphp (5 directories)
Files folder imagezinc (20 files, 3 directories)
Accessible without login Plain text file 01_DDL_mysql_blog.sql Data Auxiliary data
Accessible without login Plain text file 01_DDL_oracle_blog.sql Data Auxiliary data
Accessible without login Plain text file 02_DDL_MySQL_db_tema_moj_exp.sql Data Auxiliary data
Accessible without login Image file B12phpfw_1DEVELOPMENT_DOCROOT.ico Data Auxiliary data
Accessible without login Image file B12phpfw_2TEST_DOCROOT.ico Data Auxiliary data
Accessible without login Image file B12phpfw_3PRODUCTION_DOCROOT.ico Data Auxiliary data
Accessible without login Plain text file B12phpfw_UMLdiagram.graphml Data Auxiliary data
Accessible without login Image file B12phpfw_UMLdiagram.png Data Auxiliary data
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Image file favicon.ico Data Auxiliary data
Accessible without login Image file favicon_wampp.ico Data Auxiliary data
Accessible without login Plain text file fwphp_www_tree_A.ini Data Auxiliary data
Accessible without login Plain text file index.php Aux. Auxiliary script
Accessible without login Plain text file LICENSE.txt Doc. Documentation
Accessible without login Plain text file readme.md Doc. Readme
Plain text file readme_thoughts.md Class Class source
Accessible without login Plain text file z_composer_old.json Data Auxiliary data

  Files folder image Files  /  fwphp  
File Role Description
Files folder image01mater (1 file, 2 directories)
Files folder image02financ (1 file)
Files folder image03salary (2 files)
Files folder imageglomodul (11 directories)
Files folder imagewww (13 files)

  Files folder image Files  /  fwphp  /  01mater  
File Role Description
Files folder imageshop (6 files, 9 directories)
Files folder imageshop_orig (5 files, 10 directories)
  Accessible without login Plain text file readme.md Doc. Documentation

  Files folder image Files  /  fwphp  /  01mater  /  shop  
File Role Description
Files folder imageaccount (7 files)
Files folder imageadmin (1 file, 4 directories)
Files folder imagecart (2 files)
Files folder imagecatalog (4 files)
Files folder imagecheckout (3 files)
Files folder imageerrors (3 files)
Files folder imagemodel (10 files)
Files folder imageutil (6 files)
Files folder imageview (4 files)
  Accessible without login Plain text file 01sidebar.css Data Auxiliary data
  Accessible without login Plain text file home.php Aux. Auxiliary script
  Plain text file Home_ctr.php Class Class source
  Accessible without login Plain text file index.php Example Example script
  Accessible without login Plain text file main.css Data Auxiliary data
  Accessible without login Plain text file z_mojDDL_my_guitar_shop2.sql Data Auxiliary data

  Files folder image Files  /  fwphp  /  01mater  /  shop  /  account  
File Role Description
  Accessible without login Plain text file account_edit.php Example Example script
  Accessible without login Plain text file account_login_register.php Example Example script
  Accessible without login Plain text file account_register.php Example Example script
  Accessible without login Plain text file account_view.php Aux. Auxiliary script
  Accessible without login Plain text file account_view_order.php Aux. Auxiliary script
  Accessible without login Plain text file address_edit.php Example Example script
  Accessible without login Plain text file index.php Example Example script

  Files folder image Files  /  fwphp  /  01mater  /  shop  /  admin  
File Role Description
Files folder imageaccount (5 files)
Files folder imagecategory (2 files)
Files folder imageorders (4 files)
Files folder imageproduct (4 files)
  Accessible without login Plain text file index.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop  /  admin  /  account  
File Role Description
  Accessible without login Plain text file account_delete.php Aux. Auxiliary script
  Accessible without login Plain text file account_edit.php Example Example script
  Accessible without login Plain text file account_login.php Example Example script
  Accessible without login Plain text file account_view.php Example Example script
  Accessible without login Plain text file index.php Example Example script

  Files folder image Files  /  fwphp  /  01mater  /  shop  /  admin  /  category  
File Role Description
  Accessible without login Plain text file category_list.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop  /  admin  /  orders  
File Role Description
  Accessible without login Plain text file confirm_delete.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file order.php Aux. Auxiliary script
  Accessible without login Plain text file orders.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop  /  admin  /  product  
File Role Description
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file product_add_edit.php Aux. Auxiliary script
  Accessible without login Plain text file product_list.php Aux. Auxiliary script
  Accessible without login Plain text file product_view.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop  /  cart  
File Role Description
  Accessible without login Plain text file cart_view.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop  /  catalog  
File Role Description
  Accessible without login Plain text file category_view.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file product_view.php Aux. Auxiliary script
  Accessible without login Plain text file product_view_content.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop  /  checkout  
File Role Description
  Accessible without login Plain text file checkout_confirm.php Aux. Auxiliary script
  Accessible without login Plain text file checkout_payment.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop  /  errors  
File Role Description
  Accessible without login Plain text file db_error.php Aux. Auxiliary script
  Accessible without login Plain text file db_error_connect.php Aux. Auxiliary script
  Accessible without login Plain text file error.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop  /  model  
File Role Description
  Accessible without login Plain text file address_db.php Example Example script
  Accessible without login Plain text file admin_db.php Example Example script
  Accessible without login Plain text file cart.php Aux. Auxiliary script
  Accessible without login Plain text file category_db.php Example Example script
  Accessible without login Plain text file customer_db.php Example Example script
  Accessible without login Plain text file database.php Example Example script
  Plain text file fields.php Class Class source
  Accessible without login Plain text file order_db.php Example Example script
  Accessible without login Plain text file product_db.php Example Example script
  Plain text file validate.php Class Class source

  Files folder image Files  /  fwphp  /  01mater  /  shop  /  util  
File Role Description
  Accessible without login Plain text file images.php Aux. Auxiliary script
  Accessible without login Plain text file main.php Aux. Auxiliary script
  Accessible without login Plain text file secure_conn.php Aux. Auxiliary script
  Accessible without login Plain text file tags.php Aux. Auxiliary script
  Accessible without login Plain text file validation.php Example Example script
  Accessible without login Plain text file valid_admin.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop  /  view  
File Role Description
  Accessible without login Plain text file footer.php Aux. Auxiliary script
  Accessible without login Plain text file header.php Aux. Auxiliary script
  Accessible without login Plain text file sidebar.php Example Example script
  Accessible without login Plain text file sidebar_admin.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  
File Role Description
Files folder imageaccount (7 files)
Files folder imageadmin (1 file, 4 directories)
Files folder imagecart (2 files)
Files folder imagecatalog (3 files)
Files folder imagecheckout (3 files)
Files folder imageerrors (3 files)
Files folder imagemodel (10 files)
Files folder imagenbproject (2 files, 1 directory)
Files folder imageutil (6 files)
Files folder imageview (5 files)
  Accessible without login Plain text file 01sidebar.css Data Auxiliary data
  Accessible without login Plain text file home_view.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file main.css Data Auxiliary data
  Accessible without login Plain text file z_mojDDL_my_guitar_shop2.sql Data Auxiliary data

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  account  
File Role Description
  Accessible without login Plain text file account_edit.php Example Example script
  Accessible without login Plain text file account_login_register.php Example Example script
  Accessible without login Plain text file account_register.php Example Example script
  Accessible without login Plain text file account_view.php Aux. Auxiliary script
  Accessible without login Plain text file account_view_order.php Aux. Auxiliary script
  Accessible without login Plain text file address_edit.php Example Example script
  Accessible without login Plain text file index.php Example Example script

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  admin  
File Role Description
Files folder imageaccount (5 files)
Files folder imagecategory (2 files)
Files folder imageorders (4 files)
Files folder imageproduct (4 files)
  Accessible without login Plain text file index.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  admin  /  account  
File Role Description
  Accessible without login Plain text file account_delete.php Aux. Auxiliary script
  Accessible without login Plain text file account_edit.php Example Example script
  Accessible without login Plain text file account_login.php Example Example script
  Accessible without login Plain text file account_view.php Example Example script
  Accessible without login Plain text file index.php Example Example script

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  admin  /  category  
File Role Description
  Accessible without login Plain text file category_list.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  admin  /  orders  
File Role Description
  Accessible without login Plain text file confirm_delete.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file order.php Aux. Auxiliary script
  Accessible without login Plain text file orders.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  admin  /  product  
File Role Description
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file product_add_edit.php Aux. Auxiliary script
  Accessible without login Plain text file product_list.php Aux. Auxiliary script
  Accessible without login Plain text file product_view.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  cart  
File Role Description
  Accessible without login Plain text file cart_view.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  catalog  
File Role Description
  Accessible without login Plain text file category_view.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file product_view.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  checkout  
File Role Description
  Accessible without login Plain text file checkout_confirm.php Aux. Auxiliary script
  Accessible without login Plain text file checkout_payment.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  errors  
File Role Description
  Accessible without login Plain text file db_error.php Aux. Auxiliary script
  Accessible without login Plain text file db_error_connect.php Aux. Auxiliary script
  Accessible without login Plain text file error.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  model  
File Role Description
  Accessible without login Plain text file address_db.php Example Example script
  Accessible without login Plain text file admin_db.php Example Example script
  Accessible without login Plain text file cart.php Aux. Auxiliary script
  Accessible without login Plain text file category_db.php Example Example script
  Accessible without login Plain text file customer_db.php Example Example script
  Accessible without login Plain text file database.php Example Example script
  Plain text file fields.php Class Class source
  Accessible without login Plain text file order_db.php Example Example script
  Accessible without login Plain text file product_db.php Example Example script
  Plain text file validate.php Class Class source

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  nbproject  
File Role Description
Files folder imageprivate (2 files)
  Accessible without login Plain text file project.properties Data Auxiliary data
  Accessible without login Plain text file project.xml Data Auxiliary data

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  nbproject  /  private  
File Role Description
  Accessible without login Plain text file private.properties Data Auxiliary data
  Accessible without login Plain text file private.xml Data Auxiliary data

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  util  
File Role Description
  Accessible without login Plain text file images.php Aux. Auxiliary script
  Accessible without login Plain text file main.php Aux. Auxiliary script
  Accessible without login Plain text file secure_conn.php Aux. Auxiliary script
  Accessible without login Plain text file tags.php Aux. Auxiliary script
  Accessible without login Plain text file validation.php Example Example script
  Accessible without login Plain text file valid_admin.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  01mater  /  shop_orig  /  view  
File Role Description
  Accessible without login Plain text file footer.php Aux. Auxiliary script
  Accessible without login Plain text file header.php Aux. Auxiliary script
  Accessible without login Plain text file product.php Aux. Auxiliary script
  Accessible without login Plain text file sidebar.php Aux. Auxiliary script
  Accessible without login Plain text file sidebar_admin.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  02financ  
File Role Description
  Accessible without login Plain text file readme.md Doc. Documentation

  Files folder image Files  /  fwphp  /  03salary  
File Role Description
  Accessible without login Plain text file placa_kalkulator.php Example Example script
  Accessible without login Plain text file readme.md Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  
File Role Description
Files folder imageadrs (17 files, 1 directory)
Files folder imageblog (13 files, 2 directories)
Files folder imagelsweb (10 files)
Files folder imagemkd (16 files, 3 directories)
Files folder imageoraedoop (18 files, 1 directory)
Files folder imagepost (7 files, 1 directory)
Files folder imagepost_category (3 files)
Files folder imagepost_comment (4 files)
Files folder imageuser (15 files, 1 directory)
Files folder imagez_examples (17 files, 14 directories)
Files folder imagez_help (6 directories)

  Files folder image Files  /  fwphp  /  glomodul  /  adrs  
File Role Description
Files folder image_install (3 files)
  Accessible without login Plain text file composer.json Data Auxiliary data
  Accessible without login Plain text file cre_row_frm.php Example Example script
  Accessible without login Plain text file error.php Aux. Auxiliary script
  Accessible without login Plain text file example_one.php Example Example script
  Accessible without login Plain text file example_two.php Example Example script
  Accessible without login Plain text file ftr.php Example Example script
  Accessible without login Plain text file hdr.php Example Example script
  Plain text file helper.php Class Class source
  Accessible without login Plain text file home.php Example Example script
  Plain text file Home_ctr.php Class Class source
  Accessible without login Plain text file index.php Example Example script
  Accessible without login Image file mini3.png Icon Icon image
  Accessible without login Plain text file module.js Data Auxiliary data
  Accessible without login Plain text file README.md Example Example script
  Accessible without login Plain text file read_tbl.php Example Example script
  Accessible without login Plain text file upd_row_frm.php Example Example script
  Accessible without login Plain text file z.htaccess Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  adrs  /  _install  
File Role Description
  Accessible without login Plain text file 01-DDL_moj_create-database.sql Data Auxiliary data
  Accessible without login Plain text file 02-create-table-song.sql Data Auxiliary data
  Accessible without login Plain text file 03-insert-demo-data-into-table-song.sql Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  blog  
File Role Description
Files folder imagemsgmkd (22 files)
Files folder imageUploads (7 files)
  Accessible without login Plain text file dashboard.php Example Example script
  Accessible without login Plain text file home.php Example Example script
  Plain text file Home_ctr.php Class Class source
  Accessible without login Plain text file home_side_area.php Example Example script
  Accessible without login Plain text file index.php Example Example script
  Accessible without login Plain text file navbar.php Example Example script
  Accessible without login Plain text file navbar_admin.php Example Example script
  Accessible without login Plain text file navbar_admin2.php Example Example script
  Accessible without login Plain text file readme.md Doc. Documentation
  Accessible without login Plain text file styles.css Data Auxiliary data
  Accessible without login Plain text file v_about_us.php Aux. Auxiliary script
  Accessible without login Plain text file v_contact_us.php Aux. Auxiliary script
  Accessible without login Plain text file v_features.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  blog  /  msgmkd  
File Role Description
  Accessible without login Plain text file 000_markdown_posts_help.txt Doc. Documentation
  Accessible without login Plain text file altervista001.txt Doc. Documentation
  Accessible without login Plain text file altervista001a.txt Doc. Documentation
  Accessible without login Plain text file altervista001b.txt Doc. Documentation
  Accessible without login Plain text file altervista001c.txt Doc. Documentation
  Accessible without login Plain text file altervista002.txt Doc. Documentation
  Accessible without login Plain text file altervista002a.txt Doc. Documentation
  Accessible without login Plain text file altervista003.txt Doc. Documentation
  Accessible without login Plain text file altervista004.txt Doc. Documentation
  Accessible without login Plain text file altervista005.txt Doc. Documentation
  Accessible without login Plain text file altervista006.txt Doc. Documentation
  Accessible without login Plain text file altervista007.txt Doc. Documentation
  Accessible without login Plain text file altervista008.txt Doc. Documentation
  Accessible without login Plain text file altervista009.txt Doc. Documentation
  Accessible without login Plain text file altervista010.txt Doc. Documentation
  Accessible without login Plain text file altervista011.txt Doc. Documentation
  Accessible without login Plain text file altervista012.txt Doc. Documentation
  Accessible without login Plain text file altervista013.txt Doc. Documentation
  Accessible without login Plain text file HTML5_CSS3.txt Doc. Documentation
  Accessible without login Plain text file Mosque.txt Doc. Documentation
  Accessible without login Plain text file Prijedlozi_za_Nacrt_NPDTG_20.12.2019.txt Doc. Documentation
  Accessible without login Plain text file Tesla_Atlantis.txt Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  blog  /  Uploads  
File Role Description
  Accessible without login Image file avatar.png Icon Icon image
  Accessible without login Image file favicon.ico Data Auxiliary data
  Accessible without login Image file Jupiter_Ascending.jpg Icon Icon image
  Accessible without login Image file kamelot.jpg Data Auxiliary data
  Accessible without login Image file meatmirror.jpg Icon Icon image
  Accessible without login Image file mvc_M_V_data_flow.jpg Icon Icon image
  Accessible without login Image file twitter.jpg Icon Icon image

  Files folder image Files  /  fwphp  /  glomodul  /  lsweb  
File Role Description
  Accessible without login Image file DIROPEN.PNG Icon Icon image
  Accessible without login Image file DIRUP.png Icon Icon image
  Accessible without login Image file GOUP.PNG Icon Icon image
  Plain text file Lsweb.php Class Class source
  Accessible without login Plain text file zz_ConfModul.php Aux. Auxiliary script
  Plain text file zz_Help.php Class Class source
  Plain text file zz_Home.php Class Class source
  Accessible without login Plain text file zz_index.php Example Example script
  Accessible without login Plain text file z_lsweb_helper_fns.php Example Example script
  Accessible without login Plain text file z_pghdr.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  
File Role Description
Files folder image01 (7 directories)
Files folder image02 (2 directories)
Files folder imagehtml2mkd (3 files, 2 directories)
  Accessible without login Plain text file 001_MDcheatsheet.txt Doc. Documentation
  Accessible without login Image file B12phpfw_1DEVELOPMENT_DOCROOT.ico Data Auxiliary data
  Accessible without login Image file B12phpfw_2TEST_DOCROOT.ico Data Auxiliary data
  Accessible without login Image file B12phpfw_3PRODUCTION_DOCROOT.ico Data Auxiliary data
  Accessible without login Plain text file B12phpfw_UMLdiagram.graphml Data Auxiliary data
  Accessible without login Plain text file edit.php Aux. Auxiliary script
  Accessible without login Image file favicon.ico Data Auxiliary data
  Plain text file Help.php Class Class source
  Accessible without login Plain text file home.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Example Example script
  Accessible without login HTML file markdown.html Doc. Documentation
  Accessible without login Plain text file model.php Example Example script
  Accessible without login Plain text file showhtml.php Example Example script
  Accessible without login Plain text file z_adresses.php Aux. Auxiliary script
  Accessible without login Plain text file z_h.php Aux. Auxiliary script
  Plain text file z_Mkd_OOP_NOT_NEEDED.php Class Class source

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  01  
File Role Description
Files folder image001_config_ssl_tls (7 files)
Files folder image001_db (13 files)
Files folder image001_instalac (3 files, 1 directory)
Files folder image001_php (3 files)
Files folder image001_vbox (5 files)
Files folder image004_markdown (5 files)
Files folder image006_visual_studio (3 files)

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  01  /  001_config_ssl_tls  
File Role Description
  Accessible without login Plain text file 001_SyMenuItemsReport.csv Data Auxiliary data
  Accessible without login Plain text file 005_MakeOwnCertWithOpenSSLonWin.txt Doc. Documentation
  Accessible without login Plain text file hosts.txt Doc. Documentation
  Accessible without login Plain text file httpd-ssl.conf.txt Doc. Documentation
  Accessible without login Plain text file httpd-vhosts.conf.txt Doc. Documentation
  Accessible without login Plain text file httpd.conf.txt Doc. Documentation
  Accessible without login Plain text file php.ini.txt Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  01  /  001_db  
File Role Description
  Accessible without login Plain text file 01_oracle_DB_18c_instalac.txt Doc. Documentation
  Accessible without login Plain text file 02_oracle_APEX_20_1_instalac.txt Doc. Documentation
  Accessible without login Plain text file 03_1oracle_apex_sales_module.txt Doc. Documentation
  Accessible without login Plain text file 03_2oracle_apex_sales_apl_cloud.txt Doc. Documentation
  Accessible without login Plain text file AppCss.css Data Auxiliary data
  Accessible without login Plain text file devsuite10g_F6i_to_apex.txt Doc. Documentation
  Accessible without login Plain text file devsuite10g_instalac.txt Doc. Documentation
  Accessible without login Plain text file oracle_apex_CUSTOMERS.csv Data Auxiliary data
  Accessible without login Plain text file oracle_apex_ORDERS.csv Data Auxiliary data
  Accessible without login Plain text file oracle_apex_ORDER_ITEMS.csv Data Auxiliary data
  Accessible without login Plain text file oracle_apex_PRODUCT_INFO.csv Data Auxiliary data
  Accessible without login Plain text file oracle_apex_STATES.csv Data Auxiliary data
  Accessible without login Plain text file z_all_old_oracle_D...10g_F6i_to_apex.txt Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  01  /  001_instalac  
File Role Description
Files folder image001_apache_php (9 files)
  Accessible without login Plain text file 20140412_moj_SSPC1_sysinfo_AIDA64.txt Doc. Documentation
  Accessible without login Plain text file z_20180321_Yellow_instalac.txt Doc. Documentation
  Accessible without login Plain text file z_pair_README.md Example Example script

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  01  /  001_instalac  /  001_apache_php  
File Role Description
  Accessible without login Plain text file apachelounge.md Data Auxiliary data
  Accessible without login Plain text file httpd-ssl.conf Data Auxiliary data
  Accessible without login Plain text file httpd-vhosts.conf Data Auxiliary data
  Accessible without login Plain text file httpd.conf Data Auxiliary data
  Accessible without login Plain text file laragon.txt Doc. Documentation
  Accessible without login Plain text file my.ini Data Auxiliary data
  Accessible without login Plain text file openssl.cnf Data Auxiliary data
  Accessible without login Plain text file php.ini Data Auxiliary data
  Accessible without login Plain text file wamp_on_usb_drive.txt Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  01  /  001_php  
File Role Description
  Accessible without login Plain text file B12phpfw.mkd Data Auxiliary data
  Accessible without login Plain text file Composer_Git_DDNS.md Data Auxiliary data
  Accessible without login Plain text file curl_phpclasses_README.md Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  01  /  001_vbox  
File Role Description
  Accessible without login Plain text file 001_instalac_moj_vbox_oralin76.mkd Data Auxiliary data
  Accessible without login Plain text file 001_instalac_moj_VM_oralinux_7_6.mkd Data Auxiliary data
  Plain text file 001_instalac_moj_VM_oralinux_older.mkd Class Class source
  Accessible without login Plain text file 001_instalac_moj_xampp_743.txt Doc. Documentation
  Accessible without login Plain text file ftp.txt Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  01  /  004_markdown  
File Role Description
  Accessible without login Plain text file free_flat_file_db_cms.md Data Auxiliary data
  Accessible without login Plain text file MarkdownViewerPlusPlus-0.8.2-x64.md Data Auxiliary data
  Accessible without login Plain text file simplemde.txt Doc. Documentation
  Accessible without login Plain text file wondercms_jsondb.txt Doc. Documentation
  Accessible without login Plain text file z_baun_pico_successor.md Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  01  /  006_visual_studio  
File Role Description
  Accessible without login Plain text file ASP_NET_core2.txt Doc. Documentation
  Accessible without login Plain text file Cre_ASP.NETWebForms_or_Razor_webap.txt Doc. Documentation
  Accessible without login Plain text file DOT_NET_Core2_1_RazorPagesMovie.txt Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  02  
File Role Description
Files folder image01_fwphp (1 file, 1 directory)
Files folder image02_domain_model (2 files)

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  02  /  01_fwphp  
File Role Description
Files folder imagelaravel (1 file)
  Accessible without login Plain text file PHP_DIP_DI.txt Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  02  /  01_fwphp  /  laravel  
File Role Description
  Plain text file laravel_readme_moj.md Class Class source

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  02  /  02_domain_model  
File Role Description
  Accessible without login Plain text file DM_Gervasio_part1.txt Doc. Documentation
  Accessible without login Plain text file DM_Gervasio_part2.txt Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  html2mkd  
File Role Description
Files folder imageconfig (8 files)
Files folder imagesrc (8 files)
  Accessible without login Plain text file .tm_properties Data Auxiliary data
  Accessible without login HTML file index.html Doc. Documentation
  Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  html2mkd  /  config  
File Role Description
  Accessible without login Plain text file rollup.config.browser.cjs.js Data Auxiliary data
  Accessible without login Plain text file rollup.config.browser.es.js Data Auxiliary data
  Accessible without login Plain text file rollup.config.browser.umd.js Data Auxiliary data
  Accessible without login Plain text file rollup.config.cjs.js Data Auxiliary data
  Accessible without login Plain text file rollup.config.es.js Data Auxiliary data
  Accessible without login Plain text file rollup.config.iife.js Data Auxiliary data
  Accessible without login Plain text file rollup.config.js Data Auxiliary data
  Accessible without login Plain text file rollup.config.umd.js Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  mkd  /  html2mkd  /  src  
File Role Description
  Accessible without login Plain text file collapse-whitespace.js Data Auxiliary data
  Accessible without login Plain text file commonmark-rules.js Data Auxiliary data
  Accessible without login Plain text file html-parser.js Data Auxiliary data
  Accessible without login Plain text file node.js Data Auxiliary data
  Accessible without login Plain text file root-node.js Data Auxiliary data
  Accessible without login Plain text file rules.js Data Auxiliary data
  Accessible without login Plain text file turndown.js Data Auxiliary data
  Accessible without login Plain text file utilities.js Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  oraedoop  
File Role Description
Files folder imageenter_tab_emul (9 files, 2 directories)
  Accessible without login Plain text file export.php Example Example script
  Accessible without login Plain text file export_frm.php Example Example script
  Accessible without login Plain text file ftr.php Example Example script
  Accessible without login Plain text file hdr.php Aux. Auxiliary script
  Plain text file Home_ctr.php Class Class source
  Plain text file Home_mdl.php Class Class source
  Accessible without login Plain text file index.php Example Example script
  Accessible without login Plain text file login_frm.php Example Example script
  Accessible without login Plain text file read_tbl.php Example Example script
  Accessible without login Plain text file read_tbl_aside_right.php Example Example script
  Accessible without login Plain text file read_tbl_nav_left.php Aux. Auxiliary script
  Accessible without login Plain text file read_tbl_showtbl.php Example Example script
  Accessible without login Plain text file style_original.css Data Auxiliary data
  Accessible without login Plain text file top_toolbar.php Example Example script
  Accessible without login Plain text file z_oraedoop.php Example Example script
  Accessible without login Plain text file z_read_tbl_original.php Example Example script
  Plain text file z_Ses.php Class Class source
  Accessible without login Plain text file z_style.css Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  oraedoop  /  enter_tab_emul  
File Role Description
Files folder imagecss (3 files)
Files folder imagejs (2 files)
  Accessible without login HTML file enter_tab_emul.html Doc. Documentation
  Accessible without login Plain text file enter_tab_emul.php Aux. Auxiliary script
  Accessible without login HTML file enter_tab_emul_goitem.html Doc. Documentation
  Accessible without login HTML file enter_tab_emul_tabindex.html Doc. Documentation
  Accessible without login Plain text file enter_tab_emul_v2.php Aux. Auxiliary script
  Accessible without login Plain text file flex_2cols.php Aux. Auxiliary script
  Accessible without login Plain text file flex_2cols_aside_right.php Aux. Auxiliary script
  Accessible without login Plain text file flex_2cols_nav_left.php Aux. Auxiliary script
  Accessible without login Plain text file key_pressed.js Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  oraedoop  /  enter_tab_emul  /  css  
File Role Description
  Accessible without login Plain text file style01.css Data Auxiliary data
  Accessible without login Plain text file style02.css Data Auxiliary data
  Accessible without login Plain text file style02_tabs.css Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  oraedoop  /  enter_tab_emul  /  js  
File Role Description
  Accessible without login Plain text file demo1.js Data Auxiliary data
  Accessible without login HTML file index.html Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  post  
File Role Description
Files folder imageUploads (3 files)
  Accessible without login Plain text file cre_post_frm.php Example Example script
  Plain text file Db_post.php Class Class source
  Accessible without login Plain text file posts.php Example Example script
  Accessible without login Plain text file read_msg_tbl_kalendar_flex.php Example Example script
  Accessible without login Plain text file read_post.php Example Example script
  Plain text file Tbl_crud.php Class Class source
  Accessible without login Plain text file upd_post_frm.php Example Example script

  Files folder image Files  /  fwphp  /  glomodul  /  post  /  Uploads  
File Role Description
  Accessible without login Image file avatar.jpg Icon Icon image
  Accessible without login Image file meatmirror.jpg Icon Icon image
  Accessible without login Image file mvc_M_V_data_flow.jpg Icon Icon image

  Files folder image Files  /  fwphp  /  glomodul  /  post_category  
File Role Description
  Accessible without login Plain text file categories.php Example Example script
  Plain text file Db_post_category.php Class Class source
  Plain text file Tbl_crud.php Class Class source

  Files folder image Files  /  fwphp  /  glomodul  /  post_comment  
File Role Description
  Accessible without login Plain text file comments.php Example Example script
  Plain text file Db_post_comment.php Class Class source
  Plain text file Tbl_crud.php Class Class source
  Accessible without login Plain text file z_call_upd_comment_stat.php Example Example script

  Files folder image Files  /  fwphp  /  glomodul  /  user  
File Role Description
Files folder imageUploads (1 file)
  Accessible without login Plain text file admins.php Example Example script
  Plain text file Db_user.php Class Class source
  Accessible without login Plain text file home.php Example Example script
  Plain text file Home_ctr.php Class Class source
  Accessible without login Plain text file index.php Example Example script
  Accessible without login Plain text file login_frm.php Example Example script
  Accessible without login Plain text file navbar_admin.php Example Example script
  Accessible without login Plain text file read.php Example Example script
  Accessible without login Plain text file read_user.php Example Example script
  Plain text file Tbl_crud.php Class Class source
  Accessible without login Plain text file update.php Example Example script
  Accessible without login Plain text file upd_user_loggedin_frm.php Example Example script
  Accessible without login Plain text file z_create.php Example Example script
  Plain text file z_Db_user.php Class Class source
  Accessible without login Plain text file z_delete.php Example Example script

  Files folder image Files  /  fwphp  /  glomodul  /  user  /  Uploads  
File Role Description
  Accessible without login Image file avatar.jpg Icon Icon image

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  
File Role Description
Files folder image01_php_bootstrap (3 files, 13 directories)
Files folder image02_mvc (1 file, 24 directories)
Files folder imageajax (8 files, 8 directories)
Files folder imageddns (4 files)
Files folder imageforms (8 files)
Files folder imagejs (1 file, 2 directories)
Files folder imagemultilang (2 files, 1 directory)
Files folder imageora11g (2 directories)
Files folder imageother (1 file)
Files folder imagepagination_hr_countries (3 files)
Files folder imagephp_patterns (15 files)
Files folder imagetasks (9 files, 6 directories)
Files folder imagetodolist (25 files, 2 directories)
Files folder imagetodo_csv_js (5 files, 1 directory)
  Accessible without login Plain text file 00_index_of_important.php Aux. Auxiliary script
  Accessible without login Plain text file 01_phpinfo.php Aux. Auxiliary script
  Accessible without login Plain text file 02_info_php_pdo.php Example Example script
  Accessible without login Plain text file 03_encrypt_decrypt_password_hash.php Aux. Auxiliary script
  Accessible without login Plain text file 03_info_php_apache_config_scripts.php Aux. Auxiliary script
  Accessible without login Plain text file 03_test_parse_url.php Aux. Auxiliary script
  Accessible without login Plain text file 05_flex01_2col.php Aux. Auxiliary script
  Accessible without login Plain text file 05_index_2col.php Aux. Auxiliary script
  Accessible without login HTML file 05_index_2col_predlozak_template.html Doc. Documentation
  Accessible without login HTML file 05_ob_templ.html Doc. Documentation
  Accessible without login Plain text file 05_ob_templ.php Aux. Auxiliary script
  Accessible without login Plain text file 05_simplestcss_pgB...fore_open_close.php Aux. Auxiliary script
  Accessible without login HTML file 06_flex_img_gallery.html Doc. Documentation
  Accessible without login Plain text file eurojp.php Aux. Auxiliary script
  Accessible without login Plain text file eurojp.txt Doc. Documentation
  Accessible without login Plain text file login_form_validation.php Aux. Auxiliary script
  Accessible without login Plain text file txt_expand_collapse_open_close.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  
File Role Description
Files folder image1_examples (4 files)
Files folder imageauction_wrox24h_30 (5 files, 3 directories)
Files folder imagebook_popel (13 files)
Files folder imagebook_steinmetz (7 files, 10 directories)
Files folder imagebootstrap (6 files, 6 directories)
Files folder imageflexmoj (13 files, 1 directory)
Files folder imagejokeyank (3 files, 5 directories)
Files folder imagekalendar (9 files, 3 directories)
Files folder imagerecognize_mobile (4 files)
Files folder imagesocnet_nixon (16 files)
Files folder imagewishPDO (10 files, 2 directories)
Files folder imagezodiac_autoload_pdooci (5 files, 2 directories)
Files folder imagezwamp (15 files)
  Accessible without login Plain text file aside_right.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file nav_left.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  1_examples  
File Role Description
  Accessible without login Plain text file fahrenheit2celsius_get_sticky.php Aux. Auxiliary script
  Accessible without login Plain text file fahrenheit2celsius_post.php Aux. Auxiliary script
  Accessible without login Plain text file form_validation.php Aux. Auxiliary script
  Accessible without login Plain text file sticky_multivalued_checkboxes.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  auction_wrox24h_30  
File Role Description
Files folder imagecontent (21 files)
Files folder imagecss (2 files)
Files folder imageincludes (3 files, 1 directory)
  Accessible without login Plain text file addmenustable.sql Data Auxiliary data
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file insertmenus.sql Data Auxiliary data
  Accessible without login Plain text file install.sql Data Auxiliary data
  Accessible without login Plain text file z_DDL_moj_mysql_auction.sql Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  auction_wrox24h_30  /  content  
File Role Description
  Accessible without login Plain text file about.php Example Example script
  Accessible without login Plain text file articledelete.php Example Example script
  Accessible without login Plain text file articledisplay.php Example Example script
  Accessible without login Plain text file articlemaint.php Example Example script
  Accessible without login Plain text file articles.php Example Example script
  Accessible without login Plain text file categories.php Example Example script
  Accessible without login Plain text file categorydelete.php Example Example script
  Accessible without login Plain text file categorymaint.php Example Example script
  Accessible without login Plain text file catnav.php Example Example script
  Accessible without login Plain text file contactdelete.php Example Example script
  Accessible without login Plain text file contactmaint.php Example Example script
  Accessible without login Plain text file home.php Aux. Auxiliary script
  Accessible without login HTML file index.html Doc. Documentation
  Accessible without login Plain text file login.php Aux. Auxiliary script
  Accessible without login Plain text file logout.php Aux. Auxiliary script
  Accessible without login Plain text file lotdelete.php Example Example script
  Accessible without login Plain text file lotmaint.php Example Example script
  Accessible without login Plain text file lots.php Example Example script
  Accessible without login Plain text file menudelete.php Example Example script
  Accessible without login Plain text file menumaint.php Example Example script
  Accessible without login Plain text file menus.php Example Example script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  auction_wrox24h_30  /  css  
File Role Description
  Accessible without login HTML file index.html Doc. Documentation
  Accessible without login Plain text file main.css Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  auction_wrox24h_30  /  includes  
File Role Description
Files folder imageclasses (8 files)
  Accessible without login Plain text file functions.php Example Example script
  Accessible without login HTML file index.html Doc. Documentation
  Accessible without login Plain text file init.php Example Example script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  auction_wrox24h_30  /  includes  /  classes  
File Role Description
  Plain text file article.php Class Class source
  Plain text file category.php Class Class source
  Plain text file contact.php Class Class source
  Plain text file database.php Class Class source
  Accessible without login HTML file index.html Doc. Documentation
  Plain text file lot.php Class Class source
  Plain text file menu.php Class Class source
  Plain text file table.php Class Class source

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  book_popel  
File Role Description
  Accessible without login Plain text file B1_cre_upd.php Example Example script
  Accessible without login Plain text file B1_profile.php Example Example script
  Accessible without login Plain text file B1_tbl.php Example Example script
  Accessible without login Plain text file B2_cre_upd.php Example Example script
  Accessible without login Plain text file common.inc.php Example Example script
  Accessible without login Plain text file exp_B2_xml.php Example Example script
  Accessible without login Plain text file index.php Example Example script
  Accessible without login Plain text file lnktbl.php Example Example script
  Accessible without login Plain text file lnktbl_crerec.php Example Example script
  Accessible without login Plain text file lnktbl_delrec.php Example Example script
  Plain text file mdl.php Class Class source
  Accessible without login Plain text file Working_with_BLOBs.php Example Example script
  Accessible without login Plain text file z_DDL_moj_Popel_ch02_MySQL.sql Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  book_steinmetz  
File Role Description
Files folder imagech01_INC_prev_next_links_ARR_rowcolor (2 files)
Files folder imagech04_forms (4 files)
Files folder imagech05_txt_html (11 files)
Files folder imagech06_Dates (8 files)
Files folder imagech07_Files (4 files)
Files folder imagech08_User_and_Ses_Tracking (10 files)
Files folder imagech09_Email (6 files)
Files folder imagech10_Images (5 files)
Files folder imagech11_cURL_to_Interact_with_WebServ (8 files)
Files folder imagech12_Projects (18 files, 1 directory)
  Plain text file 0101pagin_product_tbl_step1.php Class Class source
  Accessible without login Plain text file 1101curl.php Aux. Auxiliary script
  Accessible without login Plain text file get_pg_curl.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file key_pressed.js Data Auxiliary data
  Accessible without login Plain text file parse_with_simplexml.php Example Example script
  Accessible without login Plain text file sins.xml Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  book_steinmetz  /  ch04_forms  
File Role Description
  Plain text file addtocart_frm.php Class Class source
  Accessible without login Plain text file addtocart_process_frm.php Aux. Auxiliary script
  Accessible without login HTML file mov_frm.html Doc. Documentation
  Accessible without login Plain text file mov_process.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  book_steinmetz  /  ch05_txt_html  
File Role Description
  Accessible without login Plain text file autohyper.php Aux. Auxiliary script
  Accessible without login Plain text file autop.php Aux. Auxiliary script
  Accessible without login Plain text file case.php Aux. Auxiliary script
  Accessible without login Plain text file match.php Aux. Auxiliary script
  Accessible without login Plain text file pos.php Aux. Auxiliary script
  Accessible without login Plain text file pspell.php Aux. Auxiliary script
  Accessible without login Plain text file replace.php Aux. Auxiliary script
  Accessible without login Plain text file scrape.php Aux. Auxiliary script
  Accessible without login Plain text file substr.php Aux. Auxiliary script
  Accessible without login Plain text file suggest.php Aux. Auxiliary script
  Accessible without login Plain text file table.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  book_steinmetz  /  ch06_Dates  
File Role Description
  Accessible without login Plain text file datefmt.php Aux. Auxiliary script
  Accessible without login Plain text file datenow.php Aux. Auxiliary script
  Accessible without login Plain text file mktime.php Aux. Auxiliary script
  Accessible without login Plain text file strvrfy.php Aux. Auxiliary script
  Accessible without login Plain text file timediff.php Aux. Auxiliary script
  Accessible without login Plain text file timediff2.php Aux. Auxiliary script
  Accessible without login Plain text file times.php Aux. Auxiliary script
  Accessible without login Plain text file timestr.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  book_steinmetz  /  ch07_Files  
File Role Description
  Accessible without login Plain text file image_process.php Aux. Auxiliary script
  Accessible without login HTML file upload.html Doc. Documentation
  Accessible without login HTML file upload_csv1.html Doc. Documentation
  Accessible without login Plain text file upload_csv2_read.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  book_steinmetz  /  ch08_User_and_Ses_Tracking  
File Role Description
  Accessible without login Plain text file cookiecheck.php Aux. Auxiliary script
  Accessible without login Plain text file expire.php Aux. Auxiliary script
  Accessible without login Plain text file findbrowser.php Aux. Auxiliary script
  Accessible without login Plain text file findip.php Aux. Auxiliary script
  Accessible without login Plain text file foo.php Aux. Auxiliary script
  Accessible without login Plain text file is_ssl.php Aux. Auxiliary script
  Accessible without login Plain text file mkpass.php Aux. Auxiliary script
  Accessible without login Plain text file sessionform.php Aux. Auxiliary script
  Accessible without login Plain text file sessionview.php Aux. Auxiliary script
  Accessible without login Plain text file userstore.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  book_steinmetz  /  ch09_Email  
File Role Description
  Accessible without login Plain text file account.php Aux. Auxiliary script
  Accessible without login Plain text file accountverify.php Example Example script
  Accessible without login Plain text file attachment.php Example Example script
  Accessible without login Plain text file mailtest.php Example Example script
  Accessible without login Plain text file mktable Data Auxiliary data
  Accessible without login Plain text file README Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  book_steinmetz  /  ch10_Images  
File Role Description
  Accessible without login Plain text file captcha.php Aux. Auxiliary script
  Accessible without login Plain text file captcha_image.php Aux. Auxiliary script
  Accessible without login Plain text file captcha_old.php Aux. Auxiliary script
  Accessible without login Plain text file foo.php Aux. Auxiliary script
  Accessible without login Plain text file thumb.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  book_steinmetz  /  ch11_cURL_to_Interact_with_WebServ  
File Role Description
  Accessible without login Plain text file foo.php Example Example script
  Accessible without login Plain text file foo.xml Data Auxiliary data
  Accessible without login Plain text file getpage.php Aux. Auxiliary script
  Accessible without login Plain text file mapdemo.php Example Example script
  Accessible without login Plain text file parsexml.php Example Example script
  Accessible without login Plain text file soapex.php Example Example script
  Accessible without login Plain text file webserv.php Example Example script
  Accessible without login Plain text file wsex.xml Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  book_steinmetz  /  ch12_Projects  
File Role Description
Files folder imagetemplates (3 files)
  Accessible without login Plain text file autop.php Aux. Auxiliary script
  Accessible without login Plain text file blog_comment.php Aux. Auxiliary script
  Accessible without login Plain text file blog_config.php Example Example script
  Accessible without login Plain text file blog_display.php Example Example script
  Accessible without login Plain text file blog_edit.php Example Example script
  Accessible without login Plain text file blog_index.php Example Example script
  Accessible without login Plain text file blog_mktable Data Auxiliary data
  Accessible without login Plain text file card_choose.php Aux. Auxiliary script
  Accessible without login Plain text file card_include.php Aux. Auxiliary script
  Accessible without login Plain text file card_mktable Data Auxiliary data
  Accessible without login Plain text file card_send.php Example Example script
  Accessible without login Plain text file card_show.php Example Example script
  Accessible without login Plain text file README Doc. Documentation
  Accessible without login Plain text file vote_config.php Aux. Auxiliary script
  Accessible without login Plain text file vote_form.php Aux. Auxiliary script
  Accessible without login Plain text file vote_mktable Data Auxiliary data
  Accessible without login Plain text file vote_process.php Aux. Auxiliary script
  Accessible without login Plain text file vote_tally.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  book_steinmetz  /  ch12_Projects  /  templates  
File Role Description
  Accessible without login Plain text file blog_display.tpl Data Auxiliary data
  Accessible without login Plain text file blog_edit.tpl Data Auxiliary data
  Accessible without login Plain text file blog_index.tpl Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  bootstrap  
File Role Description
Files folder image01help (3 files)
Files folder image02help (3 files)
Files folder image03socnet (2 files)
Files folder image04blog (10 files)
Files folder image05site (7 files)
Files folder image06portfoligrid (2 files)
  Accessible without login Plain text file inc_adresses.php Aux. Auxiliary script
  Accessible without login Plain text file inc_hdr_ftr.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file navbar-fixed.js Data Auxiliary data
  Accessible without login Plain text file README.md Doc. Documentation
  Accessible without login Plain text file style.css Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  bootstrap  /  01help  
File Role Description
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file style.css Data Auxiliary data
  Accessible without login HTML file z_resources.html Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  bootstrap  /  02help  
File Role Description
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file navbar-fixed.js Data Auxiliary data
  Accessible without login Plain text file style.css Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  bootstrap  /  03socnet  
File Role Description
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file style.css Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  bootstrap  /  04blog  
File Role Description
  Accessible without login Plain text file categories.php Example Example script
  Accessible without login Plain text file dbconfig.php Example Example script
  Accessible without login Plain text file index.php Example Example script
  Accessible without login Plain text file login.php Aux. Auxiliary script
  Accessible without login Plain text file posts.php Example Example script
  Accessible without login Plain text file profile.php Aux. Auxiliary script
  Accessible without login Plain text file settings.php Aux. Auxiliary script
  Accessible without login Plain text file update_usr.php Aux. Auxiliary script
  Accessible without login Plain text file users.php Example Example script
  Accessible without login Plain text file XXXpackage.XXXjson Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  bootstrap  /  05site  
File Role Description
  Accessible without login Plain text file about.php Aux. Auxiliary script
  Accessible without login Plain text file blog.php Aux. Auxiliary script
  Accessible without login Plain text file contact.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file main.js Data Auxiliary data
  Accessible without login Plain text file services.php Aux. Auxiliary script
  Accessible without login Plain text file style.css Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  bootstrap  /  06portfoligrid  
File Role Description
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file style.css Data Auxiliary data

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  flexmoj  
File Role Description
Files folder imageFLEX_minisite2017 (10 files)
  Accessible without login Plain text file 05_flex01_2col.php Aux. Auxiliary script
  Accessible without login Image file 20px-Home_icon_grey.png Icon Icon image
  Accessible without login Image file 30px-Stop_hand.png Icon Icon image
  Accessible without login Plain text file flex02_3col.php Aux. Auxiliary script
  Accessible without login Plain text file flex03_fixed_hdr_ftr.php Aux. Auxiliary script
  Accessible without login Plain text file flex04_3col_2.php Aux. Auxiliary script
  Accessible without login Plain text file flex04_3col_2_original.php Aux. Auxiliary script
  Accessible without login HTML file flex05_calendar.html Doc. Documentation
  Accessible without login Plain text file index_template.php Aux. Auxiliary script
  Accessible without login Plain text file right_column_infobox.css Data Auxiliary data
  Accessible without login HTML file right_column_template_predlozak.html Doc. Documentation
  Accessible without login Plain text file template_predlozak_2cols.css Data Auxiliary data
  Accessible without login HTML file template_predlozak_2cols.html Doc. Documentation

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  flexmoj  /  FLEX_minisite2017  
File Role Description
  Accessible without login Plain text file ftr.php Aux. Auxiliary script
  Accessible without login Plain text file hdr.php Aux. Auxiliary script
  Accessible without login Plain text file index.php Aux. Auxiliary script
  Accessible without login Plain text file sidebar.php Aux. Auxiliary script
  Accessible without login Plain text file v_about.php Aux. Auxiliary script
  Accessible without login Plain text file v_contact.php Aux. Auxiliary script
  Accessible without login Plain text file v_home.php Aux. Auxiliary script
  Accessible without login Plain text file v_sales.php Aux. Auxiliary script
  Accessible without login Plain text file v_thanks.php Aux. Auxiliary script
  Accessible without login Plain text file YearlyCalendar.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  jokeyank  
File Role Description
Files folder imageclasses (2 directories)
Files folder imageincludes (2 files)
Files folder imagepublic (3 files, 1 directory)
Files folder imagetemplates (15 files)
Files folder imagez_instal (1 directory)
  Accessible without login Plain text file database_DDL_MOJ.sql Data Auxiliary data
  Accessible without login Plain text file README.md Doc. Documentation
  Accessible without login Plain text file z_routes_empty_param.php Aux. Auxiliary script

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  jokeyank  /  classes  
File Role Description
Files folder imageIjdb (1 file, 2 directories)
Files folder imageNinja (5 files)

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  jokeyank  /  classes  /  Ijdb  
File Role Description
Files folder imageControllers (4 files)
Files folder imageEntity (3 files)
  Plain text file IjdbRoutes.php Class Class source

  Files folder image Files  /  fwphp  /  glomodul  /  z_examples  /  01_php_bootstrap  /  jokeyank  /  classes  /  Ijdb  /  Controllers  
File Role Description
  Plain text file Category.php Class Class source
  Plain text file