Ir para conteúdo
Fórum Script Brasil
  • 0

sintaxe lógico em loop


Ricardo T. do Prado

Pergunta

Prezados,

Estou construindo um pequeno framework baseado em dicionário de dados para .php, em C# já consegui fazer mas, estou meio perdido com as sintaxe. vou postar a idéia global para você compreenderem.

meu banco de dados possui 2 tabelas (DICTABLE, DICFIELD) onde uma mostra as inforamções da tabela e a outra informações sobre o campo.

dictable

CREATE TABLE `dictable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `chave` varchar(60) NOT NULL,
  `tablename` varchar(60) NOT NULL,
  `tablealias` varchar(60) NOT NULL,
  `query` varchar(500) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
dicfield
CREATE TABLE `dicfield` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `tablename` varchar(60) NOT NULL,
  `fieldname` varchar(60) NOT NULL,
  `fieldalias` varchar(50) NOT NULL,
  `datatype` varchar(50) NOT NULL,
  `islookup` int(11) NOT NULL,
  `lktable` varchar(60) NOT NULL,
  `lkchave` varchar(60) NOT NULL,
  `lkdescricao` varchar(60) NOT NULL,
  `lkalias` varchar(60) NOT NULL,
  `visible` int(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
Até ai Ok. vamos ao php agora.
<form method="post" action="">
<select name="table" id="table">
<?php foreach(dictable() as $rows): ?>
 <option value="<? echo $rows['tablename']?>"><? echo $rows['tablename']?></option>
<?php endforeach; ?>
</select>

<input type="submit" name="post" value="Selecionar">


<?php

$id = $GET_['id']; //pego a id da tabela para manipular posteriormente (UPDATE/DELETE)
$tabela = $_GET['tabela']; //passo nome da tabela como parametro também.

if($_POST['post']) {

    $table = $_POST['table'];    

    $tb="<table style: border = 1px solid black >"; //começa a grid
    $tb.="<tr>";
                
        $campos = array();    //nome dos campos da tabela    
        $datatype = array();
        
        //imprimindo o cabeçalho
        $resultAlias = mysql_query("select * from dicfield where tablename = '$table' and visible = 1") or die (mysql_error());
        while($rAlias = mysql_fetch_array($resultAlias)) {
            $tb.="<td>".$rAlias['fieldalias']."</td>"; //pegando o rotulo que dei para o campo
            $campos[] = $rAlias['fieldname']; //jogando o nome real do campo para um array
            $datatype[]= $rAlias; //jogando as configurações;
            }
                    
        
        $valores = array();     // dados da tabela
        $resultData = mysql_query("select * from $table") or die (mysql_error());
        while($rData = mysql_fetch_array($resultData)){
            $valores[] = $rData;
        }
                
        //imprimindo o campo das tabelas
        $tb.="<tr>";    
        foreach($valores as $v) {
            foreach($campos as $c) {
                $tb.="<td>".$v[$c]."</td>";
            }
        }
        $tb.="</tr>";

    $tb.="</table>";
    
    echo $tb;
}

?>
</form>
Até ai Ok também, fuciona certinho, só que preciso pegar em cada loop o tipo de cada campo na DicField, seria algo tipo
foreach($valores as $v) {
            foreach($campos as $c) {
                foreach($datatype as $type) {
                                  if($type['islookup'] == ') {//aqui criaria um combobox vindo das informações $type['lktable'] $type['lkchave'] $type['lkdescricao'] 

                                    // e dentro desse mesmo loop pegaria o tipo do campo e montaria as inputs
                                         if($type['datatype'] = 'imagem') { <img src='fotos/< $v[$c]}
                                  }


                                }
            }
        }

Meio sinistro o trem mesmo. alguém se arrisca?

ABs.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Galera, preciso de um help ai. Já resolvi parte do trecho, mas está dando um probleminha que é:

está criando uma <td> a mais no loop.

Segue código:

foreach(getvalue($table) as $dados) {
        $tb.="<tr>";
            foreach(dicfield($table) as $name) {    

                    $column = $name['fieldname'];
                    $chave = $name['lkchave'];
                    
                    if($name['islookup'] == 1) {
                        $tb.= "<td>" .dbLookUp($name['lktable'],$name['lkchave'],$name['lkdescricao'], $dados['idmarca'])."<td>";                        
                    unset($column,$chave);                             
                    }                     
            }
            $tb.="<td>".$dados[$column]."</td>";
            $tb.="</tr>";
                
        }
o problema creio eu que está aqui:
$tb.= "<td>" .dbLookUp($name['lktable'],$name['lkchave'],$name['lkdescricao'],$dados['idmarca'])."<td>";

Por que ao invés de gerar uma coluna aparece 2, a primeira preenchida corretamente e a segunda em branco.

Abs.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...