Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

peripatus

Concatenar variáveis em loop

Recommended Posts

Boa noite!

 

Tenho um formulário dinâmico, que pode ter até N campos. Os campos tem a seguinte nomeclatura:
$ref_bib_0

$ref_bib_1

$ref_bib_2

e assim por diante.

 

Preciso inserir um a um no meu banco, através de um LOOP.

 

for($i = 0; $i < $numReferencias; $i++){
   $var = eval("\$ref_bib_" . $i .";");
}

Tentei isto, mas não obtive sucesso.

 

Preciso pegar a variável, verificar seu valor através deste método:

(empty ($_POST['xxx']) ?  "null" : $_POST['xxx']);

E logo após, inserir no banco. Estou com dificuldades em referenciar as variáveis que eu tenho para ir inserindo no banco, uma a uma.

Alguém pode me ajudar?

 

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nesse formulário dinâmico você pode criar um campo de qualquer tipo? Se for apenas de um tipo você pode criar uma tabela contendo apenas os valores dos campos variáveis com uma referência ao ID dos outros dados gravados pelo formulário.

 

Tabela do formulário:

- ID;
- Nome;
- Etc.

Tabela dos campos variáveis:

- ID;
- FID (grava o id do formulário);
- Dados do campo.

Assim, toda vez que você consultar os dados do formulário poderá, também, recuperar os campos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi bem o que vc quiz dizer.

 

Já há uma tabela para inserir os valores das variáveis que preciso. Elas são apenas números, que são os IDs das referências!

 

Alguém poderia me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você quer é concatenar os nomes dos campos e colocar essa string no BD? Ou gravar o nome dos campos 1 a 1 no BD? Em que variável você recebe o nome dos campos do form?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho várias variáveis no meu formulário.. a nomeclatura delas segue esse padrão: $ref_bib_1 $ref_bib_2 $ref_bib_3 etc..

E cada uma tem um valor diferente para ser inserido no banco. Preciso inseri-las! É ísso! Não sei como irei percorrê-las em php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer sozinho aqui.. sem lero lero

solução

 

			$var = 0;
			for($i = 0; $i <= $numReferencias; $i++){
				eval("\$var = \$_POST['ref_bib_".$i."'];");
				if(!empty ($var)){
					$query = "INSERT INTO obra_refbibliografica (codObra, codReferencia) values (". $ultimoID. "," .$var.")";
					$result = mysql_query($query)or die (mysql_error());
				}
			}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O PHP tem "variáveis variáveis".

 

$ref_1 = 1;
$ref_2 = 2;
$ref_3 = 3;

$total = 0;

for($i=1; $i<=3; $i++){
  $total += ${'ref_'.$i};
}

Sugestão: evite com todas as suas forças, vontades e desejos utilizar o eval. eval é do mal e pode trazer coisas ruins ao seus códigos. Utilize-o somente com a aprovação de um ser supremo com nível de defesa 15 ou superior :)

 

@braços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que usar Array é bem melhor

 

 

$ref_bib = array();


$ref_bib[0];
$ref_bib[1];
$ref_bib[2];


for($i = 0; $i < $numReferencias; $i++){
     $var = $ref_bib[i];
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for array, não precisa nem de for

$total = array_sum($lista);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda acho que o que ele quer é criar uma funcao que pegue os valores dos posts entao, usando Registry tem como fazer isso tipo:

 

function array_from_post($fields){

$data = array();

foreach($fields as $field){

$data[$field] = $_POST[$field];

}

 

return $data;

}

 

Usando a funcao:

$data = array_from_post(array('ref_1,'ref_2,'ref_3'));

 

echo $data['ref_1']; //imprimi o valor do post ref_1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque não coloca os nomes dos campos como input name="ref[]" ? Assim seu post irá como um array e você não terá que fazer essa gambiarra toda, ficará bem mais simples.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.