1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Gerar campos PHP de acordo com entradas da Base de dados

Discussão em 'Web Development' iniciada por xanatos, 12 de Fevereiro de 2008. (Respostas: 10; Visualizações: 1428)

  1. xanatos

    xanatos To fold or to FOLD?

    Queria saber se é possível gerar uma página PHP tipo formulário, em que os campos que vão aparecer para ser preenchidos dependem de uma verificação da Base de Dados.
    Do género, quero obter informação de um cliente, na base de dados tenho uma tabela que me diz que vou gerar o campo Nome e o campo Morada, e a página é gerada com estes dois campos para serem preenchidos. Mais tarde é necessário também o telefone do cliente, então altero a tabela da BD, indicando que também quero o telefone e ao gerar novamente a página ela vai ter para serem preenchidos os campos Nome, Morada e Telefone.
    A ideia é tornar a página "dependente" da BD, para que seja "compatível" com várias BD e não ter de mudar a página para cada uma.
    Deu para perceber a questão?
     
  2. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Acho que percebi bem a questão, e sim, é possível fazer isso.
    No fundo, o script PHP vai verificar à BD o que é que tem de mostrar, e dada a resposta da BD, mostra a página de acordo com o que esperas.
    Na tabela em questão, cada coluna era um campo, o seu valor era 0 (não mostrar) ou 1 (mostrar), e cada linha era cada cliente.

    É isto?
     
  3. Armadillo

    Armadillo Folding Member

    sim é perfeitamente exequivel! :) se for só pra visualização de dados, aconselho-te a usar views;)
    Assim, basta mudares a view e nao precisas de mudar mais nada, nem campos adicionais a dizer q campo é visivel

    cumpz
     
  4. slack_guy

    slack_guy Power Member

    Se percebi bem, até podes fazer mais que isso:

    Crias um ficheiro com as definições da BD (campos, tipos, constraints, etc) e o mapeamento entre os campos na BD e os campos no Formulário (campoX na BD corresponde ao campoX no formulário com a label XXX). Para cada campo, defines as regras para validação dos dados (em javascript e no lado do servidor - isto são expressões regulares).

    Crias a BD e o formulário com base nessas definições.

    Se precisares de acrescentar ou remover campos, modificas o ficheiro de definições, executas o script que faz o 'parse' desse ficheiro e pronto, tens a barraca armada :-)
     
  5. AliFromCairo

    AliFromCairo Power Member

    Sim, é possível. No entanto, não é aconselhável, pois estás a juntar camadas que deveriam ser independentes. De qualquer forma, se não estás preocupado com isso, podes até associar comentários a cada coluna da tabela com toda a informação que precisas (nome que a coluna vai ter no formulário, número máximo de caracteres, entre outros). A ideia é semelhante à do slack_guy, mas utilizando o SGBD.
     
  6. xanatos

    xanatos To fold or to FOLD?

    É possível darem um pequeno exemplo de como vou buscar esses dados à BD com o PHP?
     
  7. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Como ir buscar dados a uma BD?
    Não tenho tempo para explicar tudo agora, mas para te ligares à BD e fazeres um query:
    PHP:
     $db = @mysql_connect("$server:$port"$username$password); 
     
     if (!
    is_resource($db)) die(htmlentities("Erro ao ligar à base de dados"));
     if (!
    is_numeric($id)) die(htmlentities("O Id tem de ser um número. (Tentativa de intrusão?)"));
     
    $rows = @mysql_query("SELECT * FROM tabela WHERE id=$id");
    Para agora poderes "mexer" na resposta ao query (contida em $rows), tens várias formas. Vê: http://pt.php.net/mysql_fetch_assoc, e no fundo da página, em See Also, vê o fetch_row e o fetch_array.
     
    Última edição: 12 de Fevereiro de 2008
  8. xanatos

    xanatos To fold or to FOLD?

    Era mais de tendo informação de quais os campos que estão na BD, como crio o formulário em PHP.
     
  9. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Assumindo que fizeste conforme o que eu disse lá em cima (uma tabela cujas colunas dizem se determinado campo vai ou não aparecer):
    Vais à BD e usas o mysql_fetch_assoc. Tens agora uma array associativa.
    Verificas se $essa_array["Nome"] = 1
    Se for, echo "Nome: <input .....>";
    Depois verificas se $essa_array["Morada"] = 1
    Se for, echo "Morada: <input ....>";

    No fundo é só isto. Se o nome e/ou a morada estiverem a 0, então o conteúdo do IF não é executado ($array["Nome"] != 1), pelo que o campo "Nome" não é impresso na página, e acho que é isto que pretendes.
     
  10. xanatos

    xanatos To fold or to FOLD?

    Sim! Já dá para ter umas ideias. ;)
    Obrigado!
     
  11. xanatos

    xanatos To fold or to FOLD?

    Supondo que quero fazer aparecer os campos todos que estão na BD, basta percorrer esse array e fazer o echo de cada campo com o input que eu quiser. Se forem adicionados novos campos na BD, com a respectiva definição de input, o php vai ser capaz de os gerar sem ter de mexer nada no código, certo?
     

Partilhar esta Página