+ Responder ao Tópico



  1. #1

    Padrão Como Retornar Nome do campo em PHP.

    Bom dia estou com uma dificuldade que encontrei na linguagem PHP que é a seguinte: retornar o nome do campo da base de dados.

    Na linguagem ASP eu usavar o seguinte NomeCampo = ObjRecordset.Recordset.fields, e já alimentava minha variável com nome do campo. Para montar tabelas dinâmicas.

    Não achei até agora nenhuma função que faça isso. Alguém pode me ajudar?

    Desde já agradeço.

  2. #2

    Padrão

    Cara, fica díficil.

    Você não explica qual é a versão do PHP, qual é o Banco de Dados e nem sua versão, não fala se está tentando fazer isso a partir de uma aplicação diferente e também nem conta qual é o objetivo dessa sua dúvida, para que alguém possa indicar uma alternativa melhor, caso exista.

  3. #3

    Padrão

    Bem, vamos lá, eu quis escrever genericamente para não ficar massante.
    A versão: É PHP 4.0
    BD: MySql
    Obs: Estou usando Acesso via ADOdb é uma classe de acesso a dados que achei na internet que funciona em PHP com MySql
    Objetivo: Fazer um "Select * from tabela" Com isso eu armazeno em uma variavel todo o conteudo de uma tabela.

    Na hora de montar na tela eu não quero ter que escrever manualmente os titulos dos campos de uma tabela tipo: <table><tr><td>campo1</td><td>campo2</td><td>campo3</td></tr>
    e só fazer o while nos dados e aninhar.

    Eu quero montar os títulos dinamicamente tipo fazer um for e um while +/- assim só pra tu visualisar:For $i <= $totaldecampos While(print "<td>".$varCampo[$i]."</tr>").

    Será que eu consegui te passar o que eu quero?

    Desde já agradeço

  4. #4

    Padrão

    while ($linha = mysql_fetch_array($query_sql))
    {
    $id = $linha['id'];
    echo "<b>ID:</b>&nbsp;&nbsp;" . $id . "<BR><BR>";
    }
    seria tipo isso?

  5. #5

    Padrão

    Não, isso é o conteúdo do campo dinâmico.

    Eu quero montar o nome do campo dinâmico.

    Realmente já pesquisei muito e em PHP ninguém sabe, minha última cartada vai ser aqui se eu não conseguir vou montar o título na mão mesmo e o conteúdo dinamicamente.

    Estarei aguardando mais sugestões.

  6. #6

    Padrão Seria isso?

    Voce quer gerar a tabela “html” com o php seria isso?
    Da sim basta escrever o código com o php...

    echo "<table><tr>"; //cria a tabela

    //fica criando as linhas com os dados do banco
    while ($linha = mysql_fetch_array($query_sql)){
    $id = $linha['id'];
    echo "<td> $id </td>"; //aqui vai gerando as linhas ja com a informacao vinda do banco
    }

    echo "</tr></table>"; //fecha tags

    voce pegando a logica, pode gerar <tr> <td> quantas vezes precisar...
    dentro do while dos dados, para poder montar a tabela correta...

    Isso e um exemplo bem simples.. pois apenas alterei o exemplo do amigo acima...

    Agora se voce quer o nome campo da tabela do mysql tem que usar a funcao
    http://br.php.net/mysql_fetch_field

    Sua pergunta eu nao entendi direito o que voce quer....
    Última edição por cl4udio; 14-05-2009 às 11:05.

  7. #7

    Padrão

    se for realmente o que intendi agora.!eu precisei disso aqui e fiz assim

    <?
    $campo = array( 'ID' , 'Nome', 'IP', 'Data' , 'Telefone','IP','Status','Comentario');

    $query_sql1 = "select * from TABELA";

    $query_sql = mysql_query($query_sql1);

    $i = 1;

    while ($linha = mysql_fetch_array($query_sql))
    {
    if( $i == 8) $i = 0;
    echo "<b> $campo[$i] :</b>&nbsp;&nbsp;" . $linha[$i] . "<br><br>";
    $i++;
    }
    ?>
    []'s

  8. #8

    Padrão Mostrar campos da tabela

    Você pode fazer isso dinamicamente (usando o mesmo exemplo que foi postado):

    <?

    $sql = "SHOW COLUMNS from TABELA";
    $query = mysql_query($sql);
    while ($row = mysql_fetch_assoc($query)) {
    $campo[] = $row[Field];
    }

    $query_sql1 = "select * from TABELA";
    $query_sql = mysql_query($query_sql1);

    $i = 1;

    while ($linha = mysql_fetch_array($query_sql)) {
    if( $i == 8) $i = 0;
    echo "<b> $campo[$i] :</b>&nbsp;&nbsp;" . $linha[$i] . "<br><br>";
    $i++;
    }

    ?>
    Espero que ajude!!

    []s

  9. #9

    Padrão

    Agora sim a galera entendeu o que eu quero mas ainda não está totalmente dinâmico porque preciso explicitar manualmente no array todos os títulos de cada campo e colocar no for o número referente ao números de campos. É o que estou falando no ASP pra fazer retornar o título do campo eu uso campo = objRs.Rcordset.fields.name não acredito que não tenha isso em PHP ou algo semelhante. Imagina uma tabela com 50 ou 100 campo eu precisar explicitar no array!

    Vou continuar tentando.

    E continuo pedindo ajuda pra isso.

  10. #10

  11. #11

    Padrão É dinamico sim...

    É dinamico sim.. é só você contar o numero de linhas que retornou do SHOW COLUMNS from TABELA.. O numero de linhas ($colunas = mysql_num_rows($query)) é o numero de colunas que se tem na tabel do banco... Dae você não precisa testar se é = 8 ou nao, testa se é igual ao numero de linhas dessa query!

    []s

  12. #12

    Padrão

    Obrigado a todos.
    Depois de muita pesquisa achei o que queria.
    Este é código:

    for ($i = 0; $i < $rs->FieldCount() -1; $i++ )
    {
    $obj = $rs->FetchField($i);
    echo $obj->name."&nbsp;"."&nbsp;";
    }

    Obs: pra usar esse código é necessário fazer acesso a dados via ADODB tem que baixar a pasta ADODB e colocar no projeto.

    Valeu moçada fui!!!