Ir para conteúdo

POWERED BY:

Arquivado

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

surfboy.le

[Resolvido] variáveis dentro de um object

Recommended Posts

Boa tarde

 

Eu gostaria de saber como atribuir variáveis a um objeto.

Vou ser mais específico.

 

São variáveis vindas de um PHP conectado ao MySQL. Na consulta ao banco de dados eu faço um select em todas as fotos cadastradas da minha tabela, e preciso jogar essas fotos dentro de um object em javascript chamado data...

 

O meu código é o seguinte

 


<script>

fotos = new Array(<?=$numrows ?>);

	<? 
	$i = 0;
	while($rwslide = mysql_fetch_array($qslide))
	{
	?>
		fotos[<?=$i?>] = '<?=$rwslide['banner']?>';
	<?
	$i++;
	}
	?>
	
	allf = '';
	for(i = 0; i < fotos.length; i++)
	{	
		allf += "'"fotos[i]+"' : {},";
	}
        alert(allf); 

A resposta do alert é a seguinte:

 

'1.jpg' : {}, '2.jpg' : {}, '3.jpg' : {}, 4.jpg : {},

 

exatamente o que eu preciso.. mas como jogo dentro do object?

 

 

Aqui eu jogo o resultado da consulta do banco manualmente e funciona como eu quero

 


var data = {
'1.jpg' : {}, 
'2.jpg' : {}, 
'3.jpg' : {}, 
'4.jpg' : {},
};
</script>

mas eu tenho um array com os dados

 

teste = Array("'1.jpg' : {}","'2.jpg' : {}","'3.jpg' : {}","'4.jpg' : {},")
ou

teste = Array(fotos[0] : {},fotos[1] : {}, fotos[2] : {}, fotos[3] : {},)

 

Como eu atribuo as minhas variáveis ao Objeto?

 

Obrigado desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tentou jogar os valores, um a um, dentro do array do javascript, ou seja, você vai construindo o array aos poucos, parte a parte?

 

Exemplo (teste em seu editor HTML):

<?php
$foto[0] = "foto1.jpg";
$foto[1] = "foto2.jpg";
$foto[2] = "foto3.jpg";
$foto[3] = "foto4.jpg";
?>

<html>
<head>
<script type="text/javascript">
	var fotos = new Array();
	
//Construindo o array. Ficaria como a linha abaixo:
//var fotos = new Array("foto1.jpg", "foto2.jpg", "foto3.jpg", "foto4.jpg");
<?php
	for ($i=0; $i<4; $i++) {
		echo 'fotos['.$i.'] = "'.$foto[$i].'";';
	}
?>
	
alert(fotos[2]);
</script>
</head>
<body>
<?php
	for ($i=0; $i<4; $i++) {
		echo 'fotos['.$i.'] = "'.$foto[$i].'";';
	}
?>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema não é montar o array.. isso eu já consegui.

O problema é jogar variável por variável dentro do object.

 

O meu object deverá ser assim...

 

var data = {
'1.jpg' : {}, 
'2.jpg' : {}, 
'3.jpg' : {}, 
'4.jpg' : {},
};

e eu quero por minhas variáveis dentro dele, +/- assim...

 

var data = {
foto[0] : {}, 
foto[1] : {}, 
foto[2] : {}, 
foto[3] : {},
};

mas nunca vai ser um número certo, vai ser n vezes, até o select acabar.. se o select me retornar 100 imagens eu quero preencher o object assim...

 

var data = {
foto[0] : {}, 
foto[1] : {}, 
foto[2] : {}, 
foto[3] : {},
...
foto[98] : {},
foto[99] : {},

};

e o meu array guarda

teste = Array("'1.jpg' : {}", etc..)
mas em formato de string

 

então não funciona eu colocar

 

var data = {
   teste
};

eu quero saber como "povoar" o object com n elementos

Compartilhar este post


Link para o post
Compartilhar em outros sites

O meu object deverá ser assim...

 

var data = {
'1.jpg' : {}, 
'2.jpg' : {}, 
'3.jpg' : {}, 
'4.jpg' : {},
};
Esse object é um jSON?

se for, e isso aqui: : {} for sempre vazio, em todas as linhas, você simplesmente não precisa dele então.

Poste a estrutura da tabela com alguns registros, pra ficar mais fácil de entender como está no teu banco, não precisa mandar pro array php, pra depois converter pra jSON.. além de existir a função: json_encode(), ainda tem como você fazer diretamente ao fazer a consulta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse código é para um slideshow, que usa um object para pegar as fotos

 

as fotos estão numa table dentro do banco de dados

segue o código

<?
$qslide = mysql_query("SELECT banner FROM empreendimento");
$numrows = mysql_num_rows($qslide);
?>

<script>

fotos = new Array(<?=$numrows ?>);

<? 
$i = 0;
while($rwslide = mysql_fetch_array($qslide))
{
      ?>
	fotos[<?=$i?>] = '<?=$rwslide['banner']?>';
      <?
        $i++;
}
?>

slideshow = '';
	
	for(i = 0; i < fotos.length; i++)
	{	
		slideshow += "'"+fotos[i]+"',"; 
	}
	
	alert(slideshow);

a função que chama o slideshow é a seguinte

 


window.addEvent('domready', function(){
	var data = {
	    '1.jpg' : {}, 
	    '2.jpg' : {}, 
	    '3.jpg' : {}, 
            '4.jpg' : {},
    };
     var myShow = new Slideshow('show', data, {controller: false, height: 432, hu: 'images/', thumbnails: true, width: 889});
});

onde data é um object passado por parâmetro com os nomes das imagens.

Ela deixa de funcionar se tirar o : {}

 

Eu queria conseguir povoar esse var data = { fotos[0] : {}, fotos[1] : {}, ..., fotos[n] : {} }; mas não sei como faze-lo..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exporta a tabela no banco de dados, e posta ela aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

segue a table

 

DROP TABLE IF EXISTS `empreendimento`;
CREATE TABLE `empreendimento` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `titulo` varchar(255) DEFAULT NULL,
  `imagem` varchar(255) DEFAULT NULL,
  `descricao` text,
  `url` text,
  `endereco` varchar(255) DEFAULT NULL,
  `numero` int(11) DEFAULT NULL,
  `complemento` varchar(255) DEFAULT NULL,
  `bairro` varchar(255) DEFAULT NULL,
  `cidade` int(11) DEFAULT NULL,
  `estado` varchar(255) DEFAULT NULL,
  `fone_venda1` varchar(14) DEFAULT NULL,
  `fone_venda2` varchar(14) DEFAULT NULL,
  `fone_venda3` varchar(14) DEFAULT NULL,
  `banner` varchar(255) DEFAULT NULL,
  `tipo` tinyint(1) DEFAULT '1',
  `dth_inc` date DEFAULT '0000-00-00',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

#
# Dumping data for table empreendimento
#

LOCK TABLES `empreendimento` WRITE;
/*!40000 ALTER TABLE `empreendimento` DISABLE KEYS */;
INSERT INTO `empreendimento` VALUES (2,'Dolcce Villaggio','08122009151919l.jpg','<ul><br />\r\n<li>Amplo terreno</li><br />\r\n<li>Espaço para 2 automóveis</li><br />\r\n<li>Churrasqueira individual</li><br />\r\n<li>Estar para 2 ambientes com lavabo</li><br />\r\n<li>Fachada em estilo único e diferenciado</li><br />\r\n<li>Ampla área para recreação nos fundos</li><br />\r\n<li>3 dormitórios, sendo uma suite master com sacada</li><br />\r\n</ul>','','rua dos bobos',0,'','batel',5915,'16','(22) 2222-2222','(33) 3333-3333','','08122009152025b.png',1,'2009-12-08');
INSERT INTO `empreendimento` VALUES (4,'4','08122009114855l.JPG','','','',0,'','',0,'0','(44) 4444-4444','','','08122009114855b.jpg',2,'2009-12-09');
INSERT INTO `empreendimento` VALUES (8,'vila romana','09122009163231l.jpg','','','',0,'','',0,'0','(11) 1111-1111','','','09122009163231b.png',1,'2009-12-09');
/*!40000 ALTER TABLE `empreendimento` ENABLE KEYS */;
UNLOCK TABLES;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma maneira de fazer, é o php imprimir pra você:

<?php
	$con = mysql_connect('localhost', 'root', '123');
	mysql_select_db('ajax', $con);
	
	
	$sql = "SELECT banner FROM empreendimento";
	$query = mysql_query( $sql );
	
	$fotos='';//resentando variavel
	while( $dados = mysql_fetch_assoc($query) )
	{
		$fotos .= "'{$dados['banner']}' : {}, "."\n";
	}
?>
<script type="text/javascript">
window.addEvent('domready', function(){
	var data = {
		<?php echo $fotos; ?>
	};
	var myShow = new Slideshow('show', data, {controller: false, height: 432, hu: 'images/', thumbnails: true, width: 889});
});
</script>

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.