Ir para conteúdo

Arquivado

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

Carcleo

concatenar nomes de varivaveis

Recommended Posts

Como faço para concatenar, não os valores, mas os nomes das variaveis?

 

 for ($i=1; $i<=10; $i++) 
 {
    echo $foto.$i;
 }

Isso imprimir o valor da variavel $foto mais o valor da variavel $i

Preciso imprimir o valor da variavel a ser formada $foto1, $foto2, $foto3.... conforme o loop

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim:

 

 for ($i=1; $i<=10; $i++){
    echo $foto[$i];
 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois é, na tabela mysql os campos são nomeadsos foto1, foto2 até foto10.

 

Como eu resolvo isso em um for?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala mano,

Tudo bem?

 

Eu não entendi muito bem se é isso mesmo, mas ai vai:

 

<?php
$nome = "foto";
 for ($i=1; $i<=10; $i++){
    echo "$$nome"."$i"."<br>" ;
 }
?>

Imprime:

$foto1

$foto2

$foto3

$foto4

$foto5

$foto6

$foto7

$foto8

$foto9

$foto10

 

 

 

É isso mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

né não. Mas é quase isso.

 

Não seria para imprimir.

 

Tenho uma tabela com 10 campos foto.

foto1, foto2, até foto10;

Estou fazendo um while quero imprimir o conteudo do campo foto1 até o foto10.

 

Então, em vez de escrever:

 

imprima foto1,

imprima foto2,

 

 

....

 

Eu quero fazer um for.

 

sendo $i de 1 a 10, imprima foto$i

Compartilhar este post


Link para o post
Compartilhar em outros sites

né não. Mas é quase isso.

 

Não seria para imprimir.

 

Tenho uma tabela com 10 campos foto.

foto1, foto2, até foto10;

Estou fazendo um while quero imprimir o conteudo do campo foto1 até o foto10.

 

Então, em vez de escrever:

 

imprima foto1,

imprima foto2,

 

 

....

 

Eu quero fazer um for.

 

sendo $i de 1 a 10, imprima foto$i

 

 

<?php
$foto = array();
for ($i = 1; $i <= 10; $i++) {
array_push($foto, $i);
}
foreach ($foto as $imprime){
echo "foto".$imprime . "<br>";
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

de novo, use array

 

esqueça $foto1, $foto2...

 

use um array de fotos

 

foto[0]

foto[1]

...

Quer dizer, no list do while criar os nomes das variaveis em forma de array?

 

foto[1], foto[2], foto[3]...foto[10];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quer dizer, no list do while criar os nomes das variaveis em forma de array?

 

foto[1], foto[2], foto[3]...foto[10];

 

não sei que while é esse, mas o que você tem que fazer é não usar uma variável para cada imagem. use um array

 

ps: array começa em 0, n!ao em 1. então o primeiro elemento é foto[0]

 

ps2: o dia que precisar de 11 fotos, terá dor de cabeça. divida sua tabela e faça relacionamento entre elas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Observe:

 

Eu tinha uma base de dsdos e estou normaizando essa base.

Então, criei as tabelas de novo e estou migrando(localmente) as tabelas.

 

Um delas, a de imoveis, eu gravava as fotos na propria tabela de imoveis em, no maximo, 10 fotos.

 

Agora, estou gravando as fotos ilimitadas em uma tabela fotos separada da tabela de imoveis.

 

Então, tenho cerca de 74 imoveis e media 8 fotos por imovel para copiar e colar uma a uma na nova tabela.

 

Então, o que eu fiz: conectei a tabela antiga, lí todos os registros dos imoveis e, para cada imovel(while), fiz um for(quero fazer-fiz diferente)para, a cada conjunto de 10 campos de fotos, fazer um insert na nova tabela.

 

Veja abaixo

<?php
 define('host', "localhost");
 define('db', "db1");
 define('db2', "db2");
 define('user', "xxxx");
 define('pass', "xxxx");

 $conexao = new mysqli(host,user,pass,db);
 $conexao->set_charset("utf8");

 $conexao2 = new mysqli(host,user,pass,db2);
 $conexao2->set_charset("utf8");

$fotos_string = "
			  select
				Id,
				foto1,  
				foto2, 
				foto3, 
				foto4, 
				foto5, 
				foto6, 
				foto7, 
				foto8, 
				foto9, 
				foto10 
			  from
				ImoveisCadastroVenda  
			  order by
				Id
                         ";
$fotos = $conexao2->query($fotos_string);
while(list(
		$id_imovel,
		$foto1,  
		$foto2, 
		$foto3, 
		$foto4, 
		$foto5, 
		$foto6, 
		$foto7, 
		$foto8, 
		$foto9, 
		$foto10 
          )=$fotos->fetch_row()
 )
{
if($foto1!="" and !is_null($foto1)){
  $inserir_string = "insert into fotos(nome_fotos, id_imovel_fotos) values ('$foto1',$id_imovel)";
  $inserir = $conexao->query($inserir_string);
  }
if($foto2!="" and !is_null($foto2)){

  $inserir_string2 = "insert into fotos(nome_fotos, id_imovel_fotos) values ('$foto2',$id_imovel)";
  $inserir2 = $conexao->query($inserir_string2);
  }
if($foto3!="" and !is_null($foto3)){

  $inserir_string3 = "insert into fotos(nome_fotos, id_imovel_fotos) values ('$foto3',$id_imovel)";
  $inserir3 = $conexao->query($inserir_string3);
  }
if($foto4!="" and !is_null($foto4)){

  $inserir_string4 = "insert into fotos(nome_fotos, id_imovel_fotos) values ('$foto4',$id_imovel)";
  $inserir4 = $conexao->query($inserir_string4);
  }
if($foto5!="" and !is_null($foto5)){

  $inserir_string5 = "insert into fotos(nome_fotos, id_imovel_fotos) values ('$foto5',$id_imovel)";
  $inserir5 = $conexao->query($inserir_string5);
  }
if($foto6!="" and !is_null($foto6)){

  $inserir_string6 = "insert into fotos(nome_fotos, id_imovel_fotos) values ('$foto6',$id_imovel)";
  $inserir6 = $conexao->query($inserir_string6);
  }
if($foto7!="" and !is_null($foto7)){

  $inserir_string7 = "insert into fotos(nome_fotos, id_imovel_fotos) values ('$foto7',$id_imovel)";
  $inserir7 = $conexao->query($inserir_string7);

  }
if($foto8!="" and !is_null($foto8)){
  $inserir_string8 = "insert into fotos(nome_fotos, id_imovel_fotos) values ('$foto8',$id_imovel)";
  $inserir8 = $conexao->query($inserir_string8);
  }
if($foto9!="" and !is_null($foto9)){

  $inserir_string9 = "insert into fotos(nome_fotos, id_imovel_fotos) values ('$foto9',$id_imovel)";
  $inserir9 = $conexao->query($inserir_string9);
  }
if($foto10!="" and !is_null($foto10)){

  $inserir_string10 = "insert into fotos(nome_fotos, id_imovel_fotos) values ('$foto10',$id_imovel)";
  $inserir10 = $conexao->query($inserir_string10);
}
}
?>

Queria acabar com esse montõ de if's.

Compartilhar este post


Link para o post
Compartilhar em outros sites

n sei se funciona com o input file, mas você pode tentar, deixa os input file com o mesmo nome e adicionar [] por exemplos fotos[] ai no php

você faz um for e um if para ver se foi o n preenchido o input file.

Compartilhar este post


Link para o post
Compartilhar em outros sites

troca essas variáveis por um array

 

// ...
while ( $f = $fotos->fetch_row() )
{
   $fotos = array();
   list( $id, $fotos[0], $fotos[1] ...
   // ...
}

 

aí você deixa de repetir código para $foto1...$foto10 e passa a usar um loop que percorre o array $fotos

Compartilhar este post


Link para o post
Compartilhar em outros sites

troca essas variáveis por um array

 

// ...
while ( $f = $fotos->fetch_row() )
{
   $fotos = array();
   list( $id, $fotos[0], $fotos[1] ...
   // ...
}

 

aí você deixa de repetir código para $foto1...$foto10 e passa a usar um loop que percorre o array $fotos

Tá.

 

Mas não estou conseguindo adptar isso ao meu código.

Como é que ficaria então?

Assim?

<?php
 define('host', "localhost");
 define('db', "xxxx");
 define('db2', "xxxx");
 define('user', "xxxx");
 define('pass', "xxxx");

 $conexao = new mysqli(host,user,pass,db);
 $conexao->set_charset("utf8");

 $conexao2 = new mysqli(host,user,pass,db2);
 $conexao2->set_charset("utf8");

$fotos_string = "
			  select
				Id,
				foto1,  
				foto2, 
				foto3, 
				foto4, 
				foto5, 
				foto6, 
				foto7, 
				foto8, 
				foto9, 
				foto10 
			  from
				ImoveisCadastroVenda  
			  order by
				Id
                         ";
$fotos = $conexao2->query($fotos_string);
while(list(
		$id_imovel,
		$foto[0],  
		$foto[1],  
		$foto[2], 
		$foto[3], 
		$foto[4], 
		$foto[5], 
		$foto[6], 
		$foto[7], 
		$foto[8], 
		$foto[9]
          )=$fotos->fetch_row()
 )
{
for ($i=0;$i<10;$i++)
{
  if($foto[$i]!="" and !is_null($foto[$i]))
  {
	$inserir_string = "insert into fotos(nome_fotos, id_imovel_fotos) values ('$foto[$i]',$id_imovel)";
	$inserir = $conexao->query($inserir_string);
  }
  }
}
?>

 

Assim funcionou certim

Valeu!

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.