Jump to content

Adicionar inputs a formulário baseado na base de dados


Recommended Posts

Posted

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.

Posted

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

Posted

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.

Posted

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

Posted

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 🙂

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.