Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LaerteDias

Como melhorar meu controle

Recommended Posts

o que você quer dizer com concatenar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tipo o meu input do html5 pega a data HH:mm para cadastrar no banco é necessário que seja HH:mm:ss, logo pego a data e concateno um valor zero para segundo para efetuar o cadastro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não encontrei essa situação nos seus códigos.

Todavia, se você usar a tipagem correta (biblioteca DateTime) ao invés de string, ela faz isso por você.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Anos atrás comecei a desenvolver Padrão DAO mais MVC para fins didáticos, muita coisa na epoca era dificil de entender, então com auxílios fomos abstraindo.

Ve se ajuda entender o conceito

index.php

<?php


define( '_DS_', DIRECTORY_SEPARATOR );
define('_BASE_DIR_', dirname( __FILE__ ) . _DS_);
include_once( _BASE_DIR_ .'config'. _DS_ .'config.inc.php');
define('_VL_FRONT_DIR_', 1);
Dispatcher::getInstance()->dispatch();

Dispactcher

<?php
use Controller\Router;

class Dispatcher extends Router
{

	/**
	 * List of available front controllers types
	 */
	const FC_FRONT = 1;
	const FC_ADMIN = 2;
	const FC_MODULE = 3;
	const FC_FRONT_STORE = 4;

	/**
	 * @var Dispatcher
	 */
	public static $instance = null;


	/**
	 * @var bool If true, use routes to build URL (mod rewrite must be activated)
	 */
	protected $useRoutes = false;

	/**
	 * @var array List of loaded routes
	 */
	protected $routes = array();

	/**
	 * @var string Current controller name
	 */
	protected $controller;

	/**
	 * @var string Current request uri
	 */
	protected $requestUri;

	/**
	 * @var array Store empty route (a route with an empty rule)
	 */
	protected $emptyRoute;

	/**
	 * @var string Set default controller, which will be used if http parameter 'controller' is empty
	 */
	protected $defaultController;
	protected $useDefaultController = false;

	/**
	 * @var string controller to use if found controller doesn't exist
	 */
	protected $controllerNotFound = '404';

	/**
	 * @var string Front controller to use
	 */
	protected $frontController = self::FC_FRONT;

	protected $url;

	/**
	 * Get current instance of dispatcher (singleton)
	 *
	 * @return Dispatcher
	 */
	public static function getInstance()
	{
		if (!self::$instance)
			self::$instance = new Dispatcher();
		return self::$instance;
	}

	/**
	 * Need to be instancied from getInstance() method
	 */
	protected function __construct()
	{

		// Select right front controller
		if (defined('_VL_ADMIN_DIR_'))
		{
			$this->frontController = self::FC_ADMIN;
			$this->controllerNotFound = 'adminnotfound';
		}
		elseif (defined('FC_FRONT_STORE'))
		{
			// Select right front controller
			$this->frontController = self::FC_FRONT;
			$this->controllerNotFound = 'adminnotfound';
		}
		elseif (Tools::getValue('fc') == 'module')
		{
			$this->frontController = self::FC_MODULE;
			$this->controllerNotFound = '404';
		}
		else
		{
			$this->frontController = self::FC_FRONT;
			$this->controllerNotFound = '404';
		}

		$this->setRequestUri();

	}

	/**
	* Find the controller and instantiate it
	*/
	public function dispatch()
	{

		switch ($this->frontController) {

			case self::FC_ADMIN :

				if( strpos( $_SERVER['HTTP_HOST'], 'forum.') !== false ) {
					define('_VL_FORUM_DIR_', true);
				}

				$dummy = new \Controller\Router;
				$dummy->dummy( $_SERVER['REQUEST_URI'] );

				if(file_exists( _VL_ADMIN_ .'default.php')){
			        include_once _VL_ADMIN_ .'default.php';
			    } else {
			        die('error: Arquivo Default não encontrado!');
			    }

				break;

			case self::FC_MODULE:
				echo 'module';
				break;

			case self::FC_FRONT_STORE:
				echo 'front store';
				break;

			case self::FC_FRONT:

				$this->url = Tools::rewriteUrl();

				$dummy = new \Controller\Router;
				$dummy->dummy( $_SERVER['REQUEST_URI'] );

				if(file_exists( _VL_THEMES_DEFAULT_ .'default.php')){
			        include_once _VL_THEMES_DEFAULT_ .'default.php';
			    } else {
			       include_once _VL_THEMES_DEFAULT_ . $this->controllerNotFound . '.html';
			    }
				break;

			default:
				echo 'index';
				break;
		}

	}

	/**
	 * Set request uri and iso lang
	 */
	protected function setRequestUri()
	{
		// Get request uri (HTTP_X_REWRITE_URL is used by IIS)
		if (isset($_SERVER['REQUEST_URI']))
			$this->requestUri = $_SERVER['REQUEST_URI'];
		else if (isset($_SERVER['HTTP_X_REWRITE_URL']))
			$this->requestUri = $_SERVER['HTTP_X_REWRITE_URL'];
		return rawurldecode( $this->requestUri );

	}
}

Router.php Declara o caminho das classes+metodos ou seja a Rota

Esta de forma manual para saber de fato como funciona, mas pode colocar tudo dinamico!

<?php
namespace Controller;
use Controller;

class Router extends Controller
{

	protected $action;
	protected $params;

	private function getControlerAdmin() {

		return array(

					'users/listusers' => array(
								'name'      => 'Users',
								'namespace' => 'Module\Admin\Users',
							),

					'users/edituser' => array(
								'name'      => 'Users',
								'namespace' => 'Module\Admin\Users',
							),

					'sac/ticket' => array(
								'name'      => 'Sac',
								'namespace' => 'Module\Admin\Sac\Ticket',
							),

					'user/profile/other' => array(
								'name'      => 'Other',
								'namespace' => 'Controller\User\Profile',
							)

					);


	}

	private function getControlerForum() {

		return array(


					'topic' => array(
								'name'      => 'Forum',
								'namespace' => 'Module\Admin\Sac\Forum',
							),

					'newpost' => array(
								'name'      => 'Forum',
								'namespace' => 'Module\Admin\Sac\Forum',
							),

					'newpost/subforum' => array(
								'name'      => 'Forum',
								'inc'  => 'newpost',
								'namespace' => 'Module\Admin\Sac\Forum',
							),

					'subforum' => array(
								'name'      => 'Forum',
								'namespace' => 'Module\Admin\Sac\Forum',
							)

					);


	}

	private function getControlerFront() {

		return array(


					'login' => array(
								'name'      => 'Forum',
								'namespace' => 'Module\Front\Login',
							),


					'subforum' => array(
								'name'      => 'Forum',
								'namespace' => 'Module\Front\Login',
							)

					);


	}

	protected function router() {

		if ( defined('_VL_FORUM_DIR_') ) {

			$this->setArrayRouter( self::getControlerForum() );

		} elseif ( defined('_VL_ADMIN_DIR_') ) {

			$this->setArrayRouter( self::getControlerAdmin() );

		} elseif ( defined('_VL_FRONT_STORE_DIR_') ) {

			$this->setArrayRouter( self::getControlerFrontStore() );

		} elseif ( defined('_VL_FRONT_DIR_') ) {
			$this->setArrayRouter( self::getControlerFront() );
		}


		return self::routerController();

	}

	protected function getAction() {

		$string = explode('?', $_SERVER['REQUEST_URI'] );
		$string = trim( $string[0] , '/' );
		$string = str_replace('/', DIRECTORY_SEPARATOR, $string );
		$str = explode( DIRECTORY_SEPARATOR, $string );

		if ( count($str) === 3 ):

			return str_replace('/', DIRECTORY_SEPARATOR, $string );

		else:

			return false;

		endif;

	}

	public function getParams() {

		return $this->params;

	}

	public function dummy($path) {


		$this->setUriDummy( $path );

		$path = $this->router();

 		if ( ! empty( $path['namespace'] ) ) {

 			/*
			echo '<pre>';
			print_r($path );
			echo '</pre>';
			*/

			$c = '\\' . $path['namespace'];

			/**
			* Instantiating the class
			*/
			$clss = new $c;

			/**
			* Clearing object
			*/
			unset( $c );

			// daqui pra frente você segue com o seu modelo de negócios.
			// por exemplo, se quer chamar o action ou qualquer outro método dentro desse controller:

			/**
			* Checking if action parameter exists
			*/
			//$clss -> ticket();
			//echo $path['parameters'][1];

			if( isset( $path['parameters'][1] ) && method_exists( $clss, $path['parameters'][1] ) )
			{
			    /**
			    * Loading the action method
			    * ie: ClassName::ActionName()
			    */
			   	$this->action = $clss -> {$path['parameters'][1]}();

			} else {

				$this->action = str_replace('/', DIRECTORY_SEPARATOR, $path['parameters'][0] );

			}


			if( isset( $path['inc'] ) ) {

				\Controller\PathRouter::setInc( $path['inc'] );

			} else {

				\Controller\PathRouter::setAction( $this->action );

			}

		}

	}

}

PathRouter

<?php
namespace Controller;

class PathRouter   {

	public static function setInc($value) {

		if ( ! empty( $value ) ) {
			$GLOBALS['routeInc'] = $value;
		} else {
			$value=null;
		}

	}

	public static function getInc() {

		if ( isset( $GLOBALS['routeInc'] ) ) {
			return $GLOBALS['routeInc'];
		} else {
			return null;
		}

	}

	public static function setAction($value) {

		if ( ! empty( $value ) ) {
			$GLOBALS['routeAction'] = $value;
		} else {
			$value=null;
		}

	}

	public static function getAction() {


		if ( isset( $GLOBALS['routeAction'] ) ) {
			return $GLOBALS['routeAction'];
		} else {
			return null;
		}

	}

}


FrontController

<?php
/**
*
*/
class FrontController
{

	function __construct(argument)
	{
		# code...
	}
}

AdminController

<?php
/**
*Class controla o painel administrativo
*/
class AdminController
{

	/** @var string associada a classe admin login */
	private $checkLogin;

	/** @var string associada a cookie */
	private $cookiePresence;

	/** @var string associada a cookie */
	private $cookieUser;

	public function __construct()
	{
		$this->checkLogin = new LoginUser();
		$this->checkLogin->checkSessionUser();
	}

	/*
	* Checa usuarios logados no painel administrativo
	*/
	public function security()
	{

		if ( ! Validate::isNotNull( $_SESSION['userId'] ) ) {

			if ( isset( $_COOKIE['c_presence'] , $_COOKIE['c_user'] )  ) {
				$this->cookiePresence = $_COOKIE['c_presence'];
				$this->cookieUser = $_COOKIE['c_user'];
				header ('Location: //accounts.'.
					_VL_NAME_HOST_
				.'/checkCookie/?presence='.
					$this->cookiePresence
				.'&user='.
					$this->cookieUser
				.'&urlReturn='.
					Tools::getUrl()
				);
				exit();

			} else {
				$this->checkLogin->signOut(true);
			}
		}

		if( $_SESSION['userLevel'] > 1) {
			//Verifica o convidado admin se esta ativo
			if ( $_SESSION['userId'] !== $_SESSION['groupAdminId'] ) {
				//Desloga caso seja excluído em tempo real
				if( Validate::isNotNull( $_SESSION['groupAdminId'] ) && $_SESSION['groupAdminId'] > 0 ){
					$this->checkLogin->setLoginId( $_SESSION['userId'] );
					$this->checkLogin->userAuthorized();
				}
			}
		}
	}
}

Para carregar as classes use autoloader, de preferencia a do composer.

Colar um aqui para voce fazer os testes

<?php
$paths = explode(PATH_SEPARATOR,get_include_path());
$paths[] = trim(`pear config-get php_dir`);

// Veja se compositor está presente, então ele deve ser pego
if (file_exists(dirname(__DIR__).'/vendor/composer')) {
    $map = require dirname(__DIR__).'/vendor/composer/autoload_namespaces.php';
    foreach ($map as $path)
        $paths = array_merge($paths, $path);
}

natsort($paths);
array_unshift($paths,
	__DIR__ . 'Lib',
	__DIR__ . 'Email',
	__DIR__ . 'Correios',
);

set_include_path(implode(PATH_SEPARATOR, array_unique($paths)));

/*
*Autoloader que implementa o PSR-0 especificações para a interoperabilidade entre software PHP. */
spl_autoload_register(
    function($className) {
        static $composerClassmap;
        if (!isset($composerClassmap) && file_exists(dirname(__DIR__).'/vendor/composer'))
               $composerClassmap = require dirname(__DIR__).'/vendor/composer/autoload_classmap.php';
        // Considere também compositor ClassMap claro
        if (isset($composerClassmap[$className]))
            return require $composerClassmap[$className];

        $fileParts = explode('\\', ltrim($className, '\\'));

        if (false !== strpos(end($fileParts), '_'))
            array_splice($fileParts, -1, 1, explode('_', current($fileParts)));

        $file = implode(DIRECTORY_SEPARATOR, $fileParts) . '.php';

        foreach (explode(PATH_SEPARATOR, get_include_path()) as $path) {
            if (file_exists($path = $path . DIRECTORY_SEPARATOR . $file))
                return require $path;
        }
    }
);

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.