Jump to content
XRS

Adicionar inputs a formulário baseado na base de dados

Recommended Posts

XRS

Boa tarde,

Estou com uma dificuldade que espero que me possam ajudar.

Tenho um formulário que é gerado por PHP e cria um input para cada um dos idiomas disponíveis na base de dados, ou seja, se eu tiver 2 idiomas (Português, Inglês), ele cria 2 inputs, um com text[pt] e outro com text[en]. Se eu tiver três idiomas (Português, Inglês, Espanhol), ele já me vai criar 3 inputs baseados no mesmo sistema.

O meu problema, passa por conseguir adicionar mais inputs através de Javascript, tantos quantos idiomas existem na base de dados.

Ou seja, preciso de conseguir que quando carrego no botão em Javascript, ele vá à base de dados e me gere mais X campos (X é a quantidade de idiomas na base de dados) e os adicione ao formulário. Não estou a conseguir tomar este procedimento nem sequer perceber com o poderei fazer, logo não tenho código para o efeito. Será que alguém me consegue ajudar nesta situação?

 

Obrigado.

 

Share this post


Link to post
Share on other sites
Rechousa

Viva,

 

Se pretendes adicionar dinamicamente inputs via javascript, precisas de usar document.createElement().

 

Vê mais documentação no MDN, aqui.

Exemplo:

var input = document.createElement("input");
input.type = "text";
input.className = "css-class-name"; // set the CSS class
input.value = "pt";
container.appendChild(input); // put it into the DOM

Espero ter ajudado,

Pedro Martins

 


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
XRS

Viva @Rechousa

Essa parte eu consigo fazer tranquilamente. O meu problema é que ele tem que adicionar tantos inputs quantos idiomas existam na base de dados, ou seja, tenho que ir a base de dados buscar quantos inputs(idioma e imagem) deve criar esse numero de inputs. Isso é que me está a fazer confusão.

Share this post


Link to post
Share on other sites
Rechousa

Pelo que percebi, precisas mandar para o HTML, via PHP, as linguagens que queres mostrar.

Coloquei aqui um exemplo do output que deverá ser produzido:

function renderLanguage(language)
{
	var input = document.createElement("input");
	input.type = "text";
	input.className = "css-class-name"; // set the CSS class
	input.value = "pt";
	container.appendChild(input); // put it into the DOM
}

function renderAllLanguages() {
  var languages = ['pt', 'en', 'fr', 'es', 'ru'];
  for(var i=0;i<language.length;i++) {
    const language = languages[i];
    console.log('Rendeing language ' + language);
    renderLanguage(language);
  }
}

renderAllLanguages();

No PHP terás de aceder à base de dados e produzir o array com as linguages, por exemplo, no formato que coloquei acima.

 


Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites
XRS

Obrigado pela ajuda. Vou tentar a ver se consigo trabalhar dessa forma.

Então se bem percebi, faço um ajax call, e faço o encode da resposta que quero em json (neste caso vai ter que ser mais do que uma array.

Depois uso a informação da array para criar os inputs. Parece-me bem :)

Share this post


Link to post
Share on other sites
Rechousa

Olá,

Ou renderizas logo no HTML ou fazes a chamada ajax que, pode até retornar logo um array com as languages que queres.

Boa sorte, qq coisa avisa.

 

Edited by Rechousa
Formatting

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.