segunda-feira, 24 de junho de 2013

Script padrão para bancos de dados Mysql em linguagem PHP - IX

As ações da Engine genérica de manipulação de Bancos de Dados

Conforme o post III desta série sobre a Engine genérica, são 7 as ações possíveis sobre os registros de uma tabela para qualquer tipo de Banco de Dados.

Vamos analisar uma a uma, linha a linha. A primeira é ...

A ação add

Esta ação (1) exibe um formulário dinâmico cujo design é definido pela análise do arranjo de campos definido através do conteúdo do include "ExemploDefinicao.inc", e (2) aguarda o pressionamento do botão de submissão do formulário, para (3) efetuar a consistência campo a campo, e (4) enviar os conteúdos para a ação "addsave". Esta e todas as outras ações estão dentro do escopo da instrução switch do PHP. Vamos mostrar aqui o código completo:

case "add":
     // Verifica permissão para a operação
     if( $permiteAdd ){
       // Titulos e cabeçalhos
       $operation = $operAdd;
       $description = $descAdd;
       require("libCabecalhoPadrao.php");
       ?>
       <h2 class=tit>NOVO REGISTRO</h2>
       <h5 class=help>Entrada de Informações. Campos com <img src="Preencha.png"> são obrigatórios</h5>
       <?php
       openQuadro();
       // Formulário de Preenchimento
       echo "<form method=post action=?action=addsave&estilo=" . $_GET['estilo'] . " OnSubmit=\"return manda(this);\">";
       echo "<table border=0 cellspacing=0>";
       // Loop no esquema da estrutura de dados
       for($x=0;$x<$NoCampos;$x++){
  $sTipo = "";
  $inp = "<input";
  echo "<tr><td><label>" . $arr[$x][1] . "</label></td>";
  echo "<td>";
  // Ajuste do tipo, valor e tag do campo
  $pl = new paramLine($arr,$x,"");
  $inp = $pl->taginput;
  $sTipo = $pl->tipocampo;
  echo $inp;
  echo " name=" . $arr[$x][0] . " id=" . $arr[$x][0];
  // Obrigatoriedade do campo
  if( $arr[$x][5] == "S" && $x > 0 ){
    echo " class=obr ";
    }
  // Tipos de tags
  $tamCampo = $arr[$x][2];
  $tamMax = $arr[$x][3];
  if ( strtolower($inp) == "<select" ) {
      echo ">" . $arr[$x][6];
    } elseif ( strtolower($inp) == "<textarea" ) {
      echo " cols=" . $arr[$x][2] . " rows=" . number_format($tamMax/$tamCampo,0,'.','') . ">";
    } elseif ( strtolower($inp) == "<input" ){
      if( $sTipo == "number" || $sTipo == "email" ){ $sTipo = "text"; }
      echo " type=" . $sTipo . " size=" . $tamCampo ." maxlength=" . $tamMax . " value=" . $arr[$x][8] . ">";
    }
  if ( $inp == "<textarea" ) {
    echo "</textarea>";
    }
  if ( $inp == "<select" ) {
    echo "</select>";
    }
  echo "</td><td><span class=msg>" . $arr[$x][7] . "</span></td></tr>";
  }
       echo "<tr><td colspan=3 align=center><input class=post type=submit value=\"" . $btnAdd . "\"></td>";
       echo "</table>"; 
       echo "</form>";
       closeQuadro();
       } else {
       echo $msgPermissao;
       }
     break;
Explicação:

   // Verifica permissão para a operação
   if( $permiteAdd ){
            .
            .
            .
                } else {
     echo $msgPermissao;
     }

O código desta ação fica condicionado a uma verificação no parâmetro $permiteAdd, declarado no include ExemploDefinicao.inc. Se lá estiver declarado um valor "S" para este parâmetro, o restante da ação será permitido, senão será mostrada a mensagem $msgPermissao, também declarada no include de que falamos aqui.

       // Titulos e cabeçalhos
       $operation = $operAdd;
       $description = $descAdd;
       require("libCabecalhoPadrao.php");
       ?>
       <h2 class=tit>NOVO REGISTRO</h2>
       <h5 class=help>Entrada de Informações. Campos com <img src="Preencha.png"> são obrigatórios</h5>
       <?php
       openQuadro();

As variáveis $operation e $description são parâmetros do HTML contido no include libCabecalhoPadrao.php, cujo código repetiremos aqui:

 <div class=h2><div class="btn b1"><?= $titulo ?> - <?= $operation ?></div></div>
  <div class=h3><div class="btn b2"><?= $description ?>&nbsp;[<?= $_SERVER['REMOTE_ADDR'] .'-' . $_SERVER['SERVER_ADDR'] ?>]
  <a class="btn" style="margin-left:50px;" href="?estilo=<?= $_GET['estilo'] ?>"><span class="btn a">TELA INICIAL</span></a>
  </div>
  </div>

O cabeçalho é feito à base de DIVs, pois são os containers mais flexíveis do HTML.

Vamos ao trecho seguinte:

       // Formulário de Preenchimento
       echo "<form method=post action=?action=addsave&estilo=" . $_GET['estilo'] . " OnSubmit=\"return manda(this);\">";
       echo "<table border=0 cellspacing=0>";
       // Loop no esquema da estrutura de dados
       for($x=0;$x<$NoCampos;$x++){
  $sTipo = "";
  $inp = "<input";
  echo "<tr><td><label>" . $arr[$x][1] . "</label></td>";
  echo "<td>";
  // Ajuste do tipo, valor e tag do campo
  $pl = new paramLine($arr,$x,"");
  $inp = $pl->taginput;
  $sTipo = $pl->tipocampo;
  echo $inp;
  echo " name=" . $arr[$x][0] . " id=" . $arr[$x][0];
  // Obrigatoriedade do campo
  if( $arr[$x][5] == "S" && $x > 0 ){
    echo " class=obr ";
    }
  // Tipos de tags
  $tamCampo = $arr[$x][2];
  $tamMax = $arr[$x][3];
  if ( strtolower($inp) == "<select" ) {
      echo ">" . $arr[$x][6];
    } elseif ( strtolower($inp) == "<textarea" ) {
      echo " cols=" . $arr[$x][2] . " rows=" . number_format($tamMax/$tamCampo,0,'.','') . ">";
    } elseif ( strtolower($inp) == "<input" ){
      if( $sTipo == "number" || $sTipo == "email" ){ $sTipo = "text"; }
      echo " type=" . $sTipo . " size=" . $tamCampo ." maxlength=" . $tamMax . " value=" . $arr[$x][8] . ">";
    }
  if ( $inp == "<textarea" ) {
    echo "</textarea>";
    }
  if ( $inp == "<select" ) {
    echo "</select>";
    }
  echo "</td><td><span class=msg>" . $arr[$x][7] . "</span></td></tr>";
  }
       echo "<tr><td colspan=3 align=center><input class=post type=submit value=\"" . $btnAdd . "\"></td>";
       echo "</table>"; 
       echo "</form>";

Este trecho desenha o formulário de entrada dos campos a serem preenchidos por meio do loop:

for($x=0;$x<$NoCampos;$x++){

   .

   .

   .

   }

O parâmetro $NoCampos é configurado no include ExemploDefinicao.inc.

Tratamento dos campos

  $sTipo = "";
  $inp = "<input";
  echo "<tr><td><label>" . $arr[$x][1] . "</label></td>";
  echo "<td>";
  // Ajuste do tipo, valor e tag do campo
  $pl = new paramLine($arr,$x,"");
  $inp = $pl->taginput;
  $sTipo = $pl->tipocampo;
  echo $inp;
  echo " name=" . $arr[$x][0] . " id=" . $arr[$x][0];
  // Obrigatoriedade do campo
  if( $arr[$x][5] == "S" && $x > 0 ){
    echo " class=obr ";
    }
  // Tipos de tags
  $tamCampo = $arr[$x][2];
  $tamMax = $arr[$x][3];
  if ( strtolower($inp) == "<select" ) {
      echo ">" . $arr[$x][6];
    } elseif ( strtolower($inp) == "<textarea" ) {
      echo " cols=" . $arr[$x][2] . " rows=" . number_format($tamMax/$tamCampo,0,'.','') . ">";
    } elseif ( strtolower($inp) == "<input" ){
      if( $sTipo == "number" || $sTipo == "email" ){ $sTipo = "text"; }
      echo " type=" . $sTipo . " size=" . $tamCampo ." maxlength=" . $tamMax . " value=" . $arr[$x][8] . ">";
    }
  if ( $inp == "<textarea" ) {
    echo "</textarea>";
    }
  if ( $inp == "<select" ) {
    echo "</select>";
    }
  echo "</td><td><span class=msg>" . $arr[$x][7] . "</span></td></tr>";
  }

A chave para a construção das entradas dos campos é o tipo do campo ($sTipo). Ele define o delimitador e as alterações que serão feitas no valor digitado para o campo, bem como a consistência a ser efetuada no mesmo.

Fechamento do formulário

       echo "<tr><td colspan=3 align=center><input class=post type=submit value=\"" . $btnAdd . "\"></td>";
       echo "</table>"; 
       echo "</form>";
       closeQuadro();
       } else {
       echo $msgPermissao;
       }

À conclusão do formulário segue-se a mensagem de falta de permissão para a operação que fecha o:

if( $permiteAdd ){

Conclusão da ação

A conclusão desta ação é a instrução:

break; 


Nenhum comentário:

Postar um comentário