Jump to content
Fórum Script Brasil
  • 0

problema na criação de grid dinamica


Ricardo T. do Prado

Question

Pessoal,

Estou montando um GridView Dinamicamente, porém o único erro/inconveniente é que: "os lookups ficam fora da tag <TD>"

segue código abaixo comentado;

functions.php

function grid(
$table,//nome tabela
$array_campos, //campos e cabeçalhos
$chave
) {

conexao(); //já abro a conexao();
$tb="<table id='grid' width='100%'>"; //agqui é o nome que vem do css

//Cabeçalhos ------------------------------------------------------
$tb.="<tr>";

foreach($array_campos as $headers=>$fields) {
    $tb.="<th> ".$headers." </th>";
}
$tb.="<th> editar </th>";
    $tb.="<th> excluir </th>";
$tb.="</tr>";
$tb.="<tr>";

//conteudos -----------------------------------------------------------

$result = mysql_query("select * from ".$table."") or die (mysql_error());
while($values = mysql_fetch_array($result)) {

foreach($array_campos as $headers=>$fields) {
$tb.="<td>".$values[$fields]."</td>";
}

$tb.="<td width=20><a href='updaterecord.php?table=$table&key=$chave&id=".$values[$chave]."'><img src='img/true'></a></td>";
$tb.="<td width=20><a href='delrecord.php?table=$table&key=$chave&id=".$values[$chave]."'><img src='img/false'></a></td>";
$tb.="</tr>";
}
$tb.="<table>";

echo $tb;

}
Agora chamo a função GRID da seguinte forma
grid(
"usuarios",
$campos = array("codigo"=>"id",
            "nome"=>"nome",
            "login"=>"login",
            "senha"=>"senha",
            "status"=>"ativo",
            "categoria"=>lookup('imoveiscat','id','categoria')
            ),
'id');
Notem que passo uma função "lookup" para o valor da chave "Categoria", segue função abaixo
function lookup($table, $chave, $descricao){
conexao();
$lk="<select name = '".$chave."'>";
$result = mysql_query("select ".$chave.", ".$descricao." from ".$table." order by ".$descricao."") or die (mysql_error());
while($linha = mysql_fetch_row($result)){
$lk.="<option value = '".$linha[0]."'>".$linha[1]."</option>";
}
$lk.="</select>";
echo $lk;
}

Então, ele executa o código certinho, cria o lookup(combobox), porem, deixa o combobox fora da TD, se alguém puder ajudar, agradeço

Abs.

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Troca echo por return e faça um teste.

function lookup($table, $chave, $descricao) {
    conexao();
    $lk = "<select name = '" . $chave . "'>";
    $result = mysql_query("select " . $chave . ", " . $descricao . " from " . $table . " order by " . $descricao . "") or die(mysql_error());
    while($linha = mysql_fetch_row($result)) {
        $lk .= "<option value = '" . $linha[0] . "'>" . $linha[1] . "</option>";
    }
    $lk .= "</select>";
    //echo $lk;
    return $lk;
}

Link to comment
Share on other sites

  • 0

você está usando algum tipo de ferramenta para inspecionar o html e os objetos gerados na página?

Ferrametas como : Firebug

Ou então faça o seguinte. Imprima na tela o retorno da sua função grid, para ver como html está sendo griado.

...

//echo $tb;
echo htmlentities($tb);

Link to comment
Share on other sites

  • 0

Está imprimindo isso

<select name = 'id'><option value = '4'>aluguel</option><option value = '3'>casas</option><option value = '1'>chácaras</option><option value = '2'>fazendas</option></select>
Eu creio que o problema esteja aqui
foreach($array_campos as $headers=>$fields) {
$tb.="<td>".$values[$fields]."</td>";
}

por que estou passando uma FUNÇÃO ao invés do nome do campo na matriz.

Link to comment
Share on other sites

  • 0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>CMS - Estribo</title>



<link href="estilo.css" rel="stylesheet" type="text/css" />

<script type="text/javascript" src="jquery.js"></script>

<script>

$(function() {



$("#formulario").click(function() {

if($("#insert").css("display")=="none") {

$("#insert").show(1000);

} else {

$("#insert").hide("fade");

}

});

});

</script>

<script language="javascript">



function messagebox() {

  if (confirm("Deseja realmente apagar este registro?")) {

    return true;

  }

  else {

     return false;

  }

}

</script>



</head>



<body>







<div id="todo"><!-- começo das div do site -->





<div id="infouser"> 



Bem vindo (a): <b> Ricardo Tomazela do Prado </b>  <br>

Conectado ao IP:  <b> 127.0.0.1 </b>  <br>

Domínio:  <b> localhost </b>  <br>

</div>





<div id="menu">

<table id='menu'><tr><td> <img src='icones/1262004441_Keychain Access.png' width=50px></td><td> <img src='icones/1262004471_Home.png' width=50px></td><td> <img src='icones/1262004600_iCal.png' width=50px></td><td> <img src='icones/1262004428_TextEdit.png' width=50px></td><td> <img src='icones/1262004620_Address Book.png' width=50px></td><td> <img src='icones/1262004693_Network Utility.png' width=50px></td><td> <img src='icones/1262004802_Earth.png' width=50px></td></tr><tr><td> <a href=?action=usuarios>usuarios</a></td><td> <a href=?action=imoveis>imoveis</a></td><td> <a href=?action=eventos>eventos</a></td><td> <a href=?action=noticias>noticias</a></td><td> <a href=?action=artigos>artigos</a></td><td> <a href=?action=downloads>downloads</a></td><td> <a href=?action=links>links</a></td></tr><table></div>



<div id='controles'><a href='#' id='formulario'>exibir/ocultar formul�rio</a><br><a href='#' onclick='java script:window.location.reload()'>atualizar dados</a></div>

<div id="insert">



    <form method="post">

    <input type="text" name="nome"  /> Nome Completo <br>

    <input type="text" name="email"> E-mail <br>

    <input type="text" name="login" > Nome de usuário (Ex: nome.sobrenome) <br>

    <input type="password" name="senha"> Informe uma senha <br>

    

    <input type="submit" name="post" value="salvar" id="submit" >

    <input type="reset" value="limpar" name="reset" id="reset">

    <input type="submit" value="pesquisar" name="pesquisar" id="pesquisar">

    </form>

</div>





<select name = 'id'><option value = '4'>aluguel</option><option value = '3'>casas</option><option value = '1'>chácaras</option><option value = '2'>fazendas</option></select><table id='grid' width='100%'><tr><th> codigo </th><th> nome </th><th> login </th><th> senha </th><th> status </th><th> categoria </th><th> editar </th><th> excluir </th></tr><tr><td>3</td><td>Administrador</td><td>admin</td><td>admin</td><td>T</td><td></td><td width=20><a href='updaterecord.php?table=usuarios&key=id&id=3'><img src='img/true'></a></td><td width=20><a href='delrecord.php?table=usuarios&key=id&id=3'><img src='img/false'></a></td></tr><td>9</td><td>Ricardo Tomazela do Prado</td><td>ricardo.prado</td><td>flex2011</td><td>T</td><td></td><td width=20><a href='updaterecord.php?table=usuarios&key=id&id=9'><img src='img/true'></a></td><td width=20><a href='delrecord.php?table=usuarios&key=id&id=9'><img src='img/false'></a></td></tr><td>8</td><td>Administrador</td><td>admin</td><td>admin</td><td>T</td><td></td><td width=20><a href='updaterecord.php?table=usuarios&key=id&id=8'><img src='img/true'></a></td><td width=20><a href='delrecord.php?table=usuarios&key=id&id=8'><img src='img/false'></a></td></tr><td>7</td><td>Administrador</td><td>admin</td><td>admin</td><td>T</td><td></td><td width=20><a href='updaterecord.php?table=usuarios&key=id&id=7'><img src='img/true'></a></td><td width=20><a href='delrecord.php?table=usuarios&key=id&id=7'><img src='img/false'></a></td></tr><td>10</td><td>Ricardo Tomazela do Prado</td><td>ricardo.prado</td><td>flex2011</td><td>T</td><td></td><td width=20><a href='updaterecord.php?table=usuarios&key=id&id=10'><img src='img/true'></a></td><td width=20><a href='delrecord.php?table=usuarios&key=id&id=10'><img src='img/false'></a></td></tr><td>11</td><td>Ricardo Tomazela do Prado</td><td>ricardo.prado</td><td>flex2011</td><td>T</td><td></td><td width=20><a href='updaterecord.php?table=usuarios&key=id&id=11'><img src='img/true'></a></td><td width=20><a href='delrecord.php?table=usuarios&key=id&id=11'><img src='img/false'></a></td></tr><td>25</td><td>Nestor Bruno Neto</td><td>nestor.bruno</td><td>2dbb0df73a708e852b5a968d8f31fd15</td><td>T</td><td></td><td width=20><a href='updaterecord.php?table=usuarios&key=id&id=25'><img src='img/true'></a></td><td width=20><a href='delrecord.php?table=usuarios&key=id&id=25'><img src='img/false'></a></td></tr><table>

</div> <!--fim template site -->





</body>

</html>

Link to comment
Share on other sites

  • 0

Ricardo,

Acredito que você deve executar a função lookup dentro da estrutura while da função Grid. Segue abaixo:

Da uma olhada.

function grid($table, //nome tabela
$array_campos, //campos e cabeçalhos
$chave) {
    
    conexao(); //já abro a conexao();
    $tb = "<table id='grid' width='100%'>"; //agqui é o nome que vem do css
    

    //Cabeçalhos ------------------------------------------------------
    $tb .= "<tr>";
    
    foreach($array_campos as $headers => $fields) {
        $tb .= "<th> " . $headers . " </th>";
    }
    $tb .= "<th> editar </th>";
    $tb .= "<th> excluir </th>";
    $tb .= "</tr>";
    
    $tb .= "<tr>";
    
    //conteudos -----------------------------------------------------------
    

    $result = mysql_query("select * from " . $table . "") or die(mysql_error());
    while($values = mysql_fetch_array($result)) {
        
        foreach($array_campos as $headers => $fields) {

                // Verifica se o campo é de categoria. 
            // true = executa a função Grid
            if($headers === 'categoria') {
                $tb .= '<td>' . lookup('imoveiscat','id','categoria') . '</td>';
            }
            else {
                $tb .= "<td>" . $values[$fields] . "</td>";
            }
        }
        
        $tb .= "<td width=20><a href='updaterecord.php?table=$table&key=$chave&id=" . $values[$chave] . "'><img src='img/true'></a></td>";
        $tb .= "<td width=20><a href='delrecord.php?table=$table&key=$chave&id=" . $values[$chave] . "'><img src='img/false'></a></td>";
        $tb .= "</tr>";
    }
    [b]$tb .= "</table>";[/b] // aqui você tinha esquecido de fechar a tag
    
    echo $tb;
}

Mas qual o objetivo dessa tag select, retornada pela função lookup? Só mostrar os dados para o usuário?

Edited by Romero Dias
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...