Jump to content
Fórum Script Brasil
  • 0

Sistema de Slide simples - Erro de array


Ednelson Amaral Guinho

Question

Fala família SB bla?, estou com uma dúvida no código abaixo, estou tentando adaptar uma legenda por foto, acredito ter começado certo, porém está aparecendo Array ao invés da legenda. Como posso fazer isso? desde já, agradeço a todos que puderem ajudar aí...

Foto.php

<?php

/*

$host = "localhost";

$login = "";

$senha = "";

$banco = "";

Se preferir desabilite a include abaixo e configure as variáveis acima!

*/

include "configura.php";

$tabela = "foto";//Tabela do Banco $banco

$connect = mysql_connect("$host", "$login", "$senha") or die("Erro na Conexão");//Conexão com o Mysql

mysql_select_db("$banco");//Seleção do Banco de Dados

$sql = "SELECT foto, legenda FROM $tabela"; //Aqui pegamos somente a campo foto da tabela

$exec = mysql_query($sql);//Executa a função acima

$total = mysql_num_rows($exec);//Verifica quantas linhas de foto existe

if($total < 1){ echo "Nenhuma foto encontrada"; } else {//Caso não exista foto cadastrada exibe a mensagem

while($dados = mysql_fetch_array($exec)){//Caso exista foto no banco executa esta linha

$foto[] = $dados['foto'];//Deixamos $foto[] para fazer o loop de várias imagens abaixo!

$legenda[] = $dados['legenda'];

}}

$dado2 = mysql_fetch_array(mysql_query("SELECT foto, legenda FROM $tabela ORDER by id ASC LIMIT 1"));

$foto2 = $dado2['foto'];

echo "$total fotos";//Aqui vai dizer quantas fotos tem cadastrada no banco

?>

<html>

<head>

<title>Slide de Fotos - Xocotrop</title>

<script type="text/javascript" src="js/jquery-1.3.1.min.js"></script>

<script TIPE="JavaScript" TYPE="text/javascript">

<!--

rotator=true; // Inicializando o roteador

n=0; // Inicializando a primeira imagem

//Aqui pegamos as linhas do banco de dados!

theImages="<?

for($i = 0; $i <= $total-1; $i++){//Se for 0, vai ler até menor ou igual a 10 e imprimir os valores!

if($i == $total-1) {

$fim = "";

} else {

$fim = "|";

}

echo "$foto[$i]$fim";

}//Caso você queira um valor maior que 10 troque ou substitua pela variável $total

?>".split("|");//Aqui é quebrada uma imagem entre a outra!

allImages=theImages.length;

// Criando os objetos das imagens => preload

imgObjects=new Array();

for (i in theImages){

imgObjects=new Image();

imgObjects.src=theImages;

}

/* --------------------------------------------------------------------

* function autoplay()

* Troque as imagens automaticamente com o play

* Options:

* Execute - pode ser 1 ou 0, 1 começa a jogar, 0 finaliza a função

* srcimage - define a imagem que será substituída

* direction - 1 próxima -1 anterior

* speed - velocidade em milisegundos

* requer a função function rotate()

* --------------------------------------------------------------------*/

function autoplay(run,srcimage,direction,speed){

// deleta configuração antiga

clearInterval(rotator)

if (run != 0){rotator=setInterval("rotate('"+srcimage+"',"+direction+")",speed)}

else{clearInterval(rotator)}

}

/* ------------------------------------------------------------ --------------------

* function rotate()

* Permite a mudar a imagem de fonte para o próximo ou último na lista.

* Opções:

* Srcimage - define a imagem que será substituído pelos outros

* Direcção - 1 em frente -1 para trás

* ------------------------------------------------- */

function rotate(srcimage,direction){

n=n+direction;

if (n==allImages) n=0;

if (n==-1) n=allImages-1;

document.images[srcimage].src=imgObjects[n].src;

}

//-->

</SCRIPT>

</head>

<body>

<table border="0">

<tr>

<td height="35" colspan="3" align="center"><img src="<? echo "$foto2"; ?>" name="myImage" alt="" border="0"></td>

</tr>

<tr>

<td colspan="3" align="center"><? echo "$legenda";?></td>

</tr>

<tr>

<td width="41" height="73"><a href="java script:rotate('myImage',-1)">Voltar</a>&nbsp;</td>

<td width="30">&nbsp;</td>

<td width="50"><a href="java script:rotate('myImage',1)">Pr&oacute;xima</a></td>

</tr>

</table>

<p><a href="java script:autoplay(1,'myImage',-1,2000)">Play Verso </a>&nbsp;Rodar automaticamente ao contr&aacute;rio</p>

<p><a href="java script:autoplay(0)">stop</a>&nbsp;Parar<br>

<br>

<a href="java script:autoplay(1,'myImage',1,1000)">Play</a>&nbsp;Rodar Automaticamente</p>

<p><a href="java script:autoplay(0)">stop</a>Parar </p>

</body>

</html>

:blink:

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

olha

realmente está errado veja só...

$legenda[] = $dados['legenda'];
$dados é uma array que vem o resultado da query mySQL que você fez... $legenda nada mais você armazena pra cada linha de "$dados" o seu valor... como você passa [] sempre adiciona no final então, isso resume-se que a variável $legenda é uma array sendo assim...
<td colspan="3" align="center"><? echo "$legenda";?></td>
realmente vai dizer "Array()" sendo assim troque essa parte
$dado2 = mysql_fetch_array(mysql_query("SELECT foto, legenda FROM $tabela ORDER by id ASC LIMIT 1")); 
$foto2 = $dado2['foto'];
echo "$total fotos";//Aqui vai dizer quantas fotos tem cadastrada no banco
por
$dado2 = mysql_fetch_array(mysql_query("SELECT foto, legenda FROM $tabela ORDER by id ASC LIMIT 1")); 
$foto2 = $dado2['foto'];
$legenda2 = $dado2['legenda'];
echo "$total fotos";//Aqui vai dizer quantas fotos tem cadastrada no banco
e então lá embaixo onde está
<td colspan="3" align="center"><? echo "$legenda";?></td>
troque por
<td colspan="3" align="center"><? echo "$legenda2";?></td>

resolveria... mas acho que seu código ta meio bagunçado daria pra otimizar...

abrs

Edited by Churc
Link to comment
Share on other sites

  • 0
olha

realmente está errado veja só...

$legenda[] = $dados['legenda'];
$dados é uma array que vem o resultado da query mySQL que você fez... $legenda nada mais você armazena pra cada linha de "$dados" o seu valor... como você passa [] sempre adiciona no final então, isso resume-se que a variável $legenda é uma array sendo assim...
<td colspan="3" align="center"><? echo "$legenda";?></td>
realmente vai dizer "Array()" sendo assim troque essa parte
$dado2 = mysql_fetch_array(mysql_query("SELECT foto, legenda FROM $tabela ORDER by id ASC LIMIT 1")); 
$foto2 = $dado2['foto'];
echo "$total fotos";//Aqui vai dizer quantas fotos tem cadastrada no banco
por
$dado2 = mysql_fetch_array(mysql_query("SELECT foto, legenda FROM $tabela ORDER by id ASC LIMIT 1")); 
$foto2 = $dado2['foto'];
$legenda2 = $dado2['legenda'];
echo "$total fotos";//Aqui vai dizer quantas fotos tem cadastrada no banco
e então lá embaixo onde está
<td colspan="3" align="center"><? echo "$legenda";?></td>
troque por
<td colspan="3" align="center"><? echo "$legenda2";?></td>

resolveria... mas acho que seu código ta meio bagunçado daria pra otimizar...

abrs

Cara, desde já, agradeço de verdade, logo que possível vou fazer esse teste, pois meus dias estão corridos no trabalho mais olha, valeu mesmo pela força.... abração fica com Deus e ótima semana...

Link to comment
Share on other sites

  • 0

Amigo, achei excelente o seu trabalho. Contudo, não tem como fazer funcionar a legenda.

Fica em todas as fotos a legenda da primeira. Nos meus pequenos conhecimentos, desculpe a pretensão,

não está faltando uma function rotate() para a legenda ?. Ela, quem sabe, incorporada ao

rotate da imagem, para correrem paralelamente ?

Edited by Raul Blos
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...