Jump to content
Fórum Script Brasil
  • 0

sintaxe lógico em loop


Ricardo T. do Prado

Question

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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...