Comunidad de diseño web y desarrollo en internet online

Problemas con Slider sencillo, al traer datos desde la tabla de mysql.

Citar            
MensajeEscrito el 08 Sep 2014 03:47 am
Hola, buenas dias/tardes/noches amigos.

Mi consulta es la siguiente, he estado por varios dias intentando montar en mi web un slider sencillo con JQuery, CSS y JavaScript, este es el mas sencillo que encontre, funciona bien cuando esta trabajando normal (sin traer datos desde una tabla en MySQL y usando PHP), este es el codigo que coloco

<?PHP
require_once("conexion.php");
$sql="select * from slider_dinamico where slider_dinamico.estado = 1 order by slider_dinamico.orden asc";
$res=mysql_db_query($bd,$sql,$con);
while ($reg=mysql_fetch_array($res))
{
?>
<html>
<head>
<title></title>
<style>
/* Contenedor general */
#slider-wrapper {
position: relative;
width: 800px;
max-width: 100%;
margin: 0 auto;
padding: 0 10px;
font-family: arial, sans-serif;
font-size: 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
/* Contenedor slider */
#slider {
position: relative;
width: 100%;
padding-bottom: 50%; /* Aspect ratio */
overflow: hidden;
border:10px solid #333;
border-radius: 5%/10%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
#slider > a {
position:absolute;
top:0;
left:0;
width: 100%;
min-height: 100%;
}
/* Ajuste de las imágenes */
#slider img {
width: 100%;
min-height: 100%;
position: absolute;
margin:0;
padding:0;
border:0;
}
/* Texto que acompaña a cada imagen */
#slider p {
position: absolute;
bottom: 5%;
left: 0;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 80%;
height: 18px;
margin:0;
padding: 5px 0;
border-radius: 0 20px 20px 0;
color: #eee;
background: #333;
font-size: 18px;
line-height: 18px;
text-align:center;
}
/* Flechas de navegación */
a.mas, a.menos {
position: absolute;
top: 50%;
left: 10px;
z-index: 10;
width: 30px;
height: 30px;
text-align: center;
line-height: 30px;
font-size: 30px;
color: white;
background: #333;
text-decoration: none;
}
a.mas {
left: 100%;
margin-left: -40px;
}
</style>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js' type='text/javascript'/>
<script type="text/javascript">//<![CDATA[
$(function(){
$('#slider div:gt(0)').hide();
setInterval(function(){
$('#slider div:first-child').fadeOut(0)
.next('div').fadeIn(1000)
.end().appendTo('#slider');}, 4000);
});
//]]></script>
</head>
<body>
<div id="slider-wrapper">
<div id="slider">
<a href="<?=$reg["link"];?>"><img src="<?=$reg["imagen"];?>" /><h2><a href='<?=$reg["link"];?>'><?=$reg["titulo"];?></a></h2><p><?=$reg["descripcion"];?>
</p></a>
</div>
<a href="javascript:void();" class="mas">&rsaquo;</a>
<a href="javascript:void();" class="menos">&lsaquo;</a></div>

<script>
$(function(){
$('#slider a:gt(0)').hide();
var interval = setInterval(changeDiv, 6000);
function changeDiv(){
$('#slider a:first-child').fadeOut(1000).next('a').fadeIn(1000).end().appendTo('#slider');
};
$('.mas').click(function(){
changeDiv();
clearInterval(interval);
interval = setInterval(changeDiv, 6000);
});
$('.menos').click(function(){
$('#slider a:first-child').fadeOut(1000);
$('#slider a:last-child').fadeIn(1000).prependTo('#slider');
clearInterval(interval);
interval = setInterval(changeDiv, 6000);
});
});
</script>
</body>
</html>
<?php
}?>

Trabaja bien cuando esta sin el PHP y el MySQL
Pero al pasarle el PHP y traer los datos de la base de datos me muestra la imagen debajo de la siguiente forma.



No se en verdad que sucede he buscado por hora en Google y no he logrado encontrar respuesta.

Esta es la tabla desde donde traigo lo datos.

CREATE TABLE `slider_dinamico` (
`id` int(11) NOT NULL auto_increment,
`titulo` varchar(255) collate utf8_spanish_ci NOT NULL,
`imagen` varchar(255) collate utf8_spanish_ci NOT NULL,
`descripcion` text collate utf8_spanish_ci NOT NULL,
`link` varchar(255) collate utf8_spanish_ci default NULL,
`orden` int(11) NOT NULL,
`estado` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=3 ;


Espero que me puedan ayudar a encontrar el error.
Gracias de ante mano.

Por castudillo

3 de clabLevel



Genero:Masculino  

Prox, Licenciado en Educación en el área de la Física, me encantan todo lo que tenga que ver con el

chrome
Citar            
MensajeEscrito el 09 Sep 2014 12:34 pm
De primeras diría que el loop te está duplicando algo :
while ($reg=mysql_fetch_array($res))
haz un echo $reg["imagen"]."<br>";
dentro del while a ver que te saca

Por martinlab

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 10 Sep 2014 12:50 am
Ya pase el echo y solo me trae los registros... que estan en la base de datos. pero normalmente como los haria lo que no entiendo es porque se baja la imagen, y se muestra debajo cuando le agrego el php porque cuando esta solo con html css y javascript trabaja normalmente.

Por castudillo

3 de clabLevel



Genero:Masculino  

Prox, Licenciado en Educación en el área de la Física, me encantan todo lo que tenga que ver con el

chrome
Citar            
MensajeEscrito el 10 Sep 2014 12:29 pm
Pero... estás repitiendo TODO el código HTML/CSS/JS del sitio tantas veces como registros se leyeron de la base de datos. Me parece que no es eso lo que quieres hacer...

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 10 Sep 2014 06:09 pm

DriverOp escribió:

Pero... estás repitiendo TODO el código HTML/CSS/JS del sitio tantas veces como registros se leyeron de la base de datos. Me parece que no es eso lo que quieres hacer...


No en realidad solo quiero que se carguen los registros que tengo en la tabla para el slider, pero me muestra el slider uno debajo del otro, en lugar de seguir las instrucciones del css, jquery y javascript para que se muestre como slider.

Modifique la forma en como escribi el codigo pero me sigue apareciendo igual.

<?PHP
require_once("conexion.php");
?>
<html>
<head>
<title></title>
<style>
/* Contenedor general */
#slider-wrapper {
position: relative;
width: 800px;
max-width: 100%;
margin: 0 auto;
padding: 0 10px;
font-family: arial, sans-serif;
font-size: 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
/* Contenedor slider */
#slider {
position: relative;
width: 100%;
padding-bottom: 50%; /* Aspect ratio */
overflow: hidden;
border:10px solid #333;
border-radius: 5%/10%;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
#slider a {
position:absolute;
top:0;
left:0;
width: 100%;
min-height: 100%;
}
/* Ajuste de las imágenes */
#slider img {
width: 100%;
min-height: 100%;
position: absolute;
margin:0;
padding:0;
border:0;
}
/* Texto que acompaña a cada imagen */
#slider p {
position: absolute;
bottom: 5%;
left: 0;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 80%;
height: 18px;
margin:0;
padding: 5px 0;
border-radius: 0 20px 20px 0;
color: #eee;
background: #333;
font-size: 18px;
line-height: 18px;
text-align:center;
}
/* Flechas de navegación */
a.mas, a.menos {
position: absolute;
top: 50%;
left: 10px;
z-index: 10;
width: 30px;
height: 30px;
text-align: center;
line-height: 30px;
font-size: 30px;
color: white;
background: #333;
text-decoration: none;
}
a.mas {
left: 100%;
margin-left: -40px;
}
</style>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js' type='text/javascript'/>
<script type="text/javascript">//<![CDATA[
$(function(){
$('#slider div:gt(0)').hide();
setInterval(function(){
$('#slider div:first-child').fadeOut(0)
.next('div').fadeIn(1000)
.end().appendTo('#slider');}, 4000);
});</script>
</head>
<body>
<?php $sql="select * from slider_dinamico where slider_dinamico.estado = 1 order by slider_dinamico.orden asc";
$res=mysql_db_query($bd,$sql,$con);
while ($reg=mysql_fetch_array($res))
{
//echo $reg["link"]."<br/>";
//echo $reg["imagen"]."<br/>";
//echo $reg["titulo"]."<br/>";
//echo $reg["descripcion"]."<br/>";
?>
<div id="slider-wrapper">
<div id="slider">
<a href="<?=$reg["link"];?>"><img src="<?=$reg["imagen"];?>" /></a>
<h2><a href="<?=$reg["link"];?>"><?=$reg["titulo"];?></a></h2>
<p><?=$reg["descripcion"];?></p>
</div>
<a href="javascript:void();" class="mas">&rsaquo;</a>
<a href="javascript:void();" class="menos">&lsaquo;</a></div>

<?php
}?>
<script>
$(function(){
$('#slider a:gt(0)').hide();
var interval = setInterval(changeDiv, 6000);
function changeDiv(){
$('#slider a:first-child').fadeOut(1000).next('a').fadeIn(1000).end().appendTo('#slider');
};
$('.mas').click(function(){
changeDiv();
clearInterval(interval);
interval = setInterval(changeDiv, 6000);
});
$('.menos').click(function(){
$('#slider a:first-child').fadeOut(1000);
$('#slider a:last-child').fadeIn(1000).prependTo('#slider');
clearInterval(interval);
interval = setInterval(changeDiv, 6000);
});
});
</script>
</div>
</body>
</html>

Por castudillo

3 de clabLevel



Genero:Masculino  

Prox, Licenciado en Educación en el área de la Física, me encantan todo lo que tenga que ver con el

chrome
Citar            
MensajeEscrito el 11 Sep 2014 12:12 pm
Sigues sin entenderlo. Ahora estás poniendo tantos sliders como registros tienes en la base de datos y no es así. El slider debe ser solo uno, lo que debes repetir es lo que contiene el slider (o sea, las diapositivas o placas o imágenes o como quieras llamarle).

Me da la impresión que no sabes cómo y para qué sirve un ciclo while.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 12 Sep 2014 02:34 am

DriverOp escribió:

Sigues sin entenderlo. Ahora estás poniendo tantos sliders como registros tienes en la base de datos y no es así. El slider debe ser solo uno, lo que debes repetir es lo que contiene el slider (o sea, las diapositivas o placas o imágenes o como quieras llamarle).

Me da la impresión que no sabes cómo y para qué sirve un ciclo while.

Hola, hermano gracias ya entendi. Ya esta funcionando como deberia ser voy a acomodar un poco màs y publicare esto como un tutorial jejeje, para dejarlo aquí y otro lo use.

Saludos y gracias por responder.

Por castudillo

3 de clabLevel



Genero:Masculino  

Prox, Licenciado en Educación en el área de la Física, me encantan todo lo que tenga que ver con el

chrome
Citar            
MensajeEscrito el 12 Sep 2014 12:40 pm
Genial :)

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 21 Oct 2014 02:19 pm
Y nos quedamos esperando tu tutorial :)

Por RicardoIII

13 de clabLevel



Genero:Masculino  

Diseñador y desarrollador Web

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.